Happy 12 years of https://indieweb.org/POSSE #POSSE and
19 years of https://microformats.org/ #microformats! (as of yesterday, the 20th)
A few highlights from the past year:
POSSE (Publish on your Own Site, Syndicate Elsewhere) has grown steadily as a common practice in the #IndieWeb community, personal sites, CMSs (like Withknown, which itself reached 10 years in May!), and services (like https://micro.blog) for over a decade.
In its 12th year, POSSE broke through to broader technology press and adoption beyond the community. For example:
* David Pierce’s (@pierce@mas.to) excellent article @TheVerge.com (@verge@mastodon.social): “The poster’s guide to the internet of the future” (https://www.theverge.com/2023/10/23/23928550/posse-posting-activitypub-standard-twitter-tumblr-mastodon):
“Your post appears natively on all of those platforms, typically with some kind of link back to your blog. And your blog becomes the hub for everything, your main home on the internet.
Done right, POSSE is the best of all posting worlds.”
* David also recorded a 29 minute podcast on POSSE with some great interviews: https://podcasts.apple.com/us/podcast/the-posters-guide-to-the-new-internet/id430333725?i=1000632256014
* Cory Doctorow (@craphound.com @doctorow@mamot.fr) declared in his Pluralistic blog (@pluralisticmamot.fr) post: “Vice surrenders” (https://pluralistic.net/2024/02/24/anti-posse/):
“This is the moment for POSSE (Post Own Site, Share Everywhere [sic]), a strategy that sees social media as a strategy for bringing readers to channels that you control”
* And none other than Molly White (@mollywhite.net @molly0xfff@hachyderm.io) of @web3isgoinggreat.com (@web3isgreat@indieweb.social) built, deployed, and started actively using her own POSSE setup as described in her post titled “POSSE” (https://www.mollywhite.net/micro/entry/202403091817) to:
"… write posts in the microblog and automatically crosspost them to Twitter/Mastodon/Bluesky, while keeping the original post on my site."
Congrats Molly and well done!
In its 19th year, the microformats formal #microformats2 syntax and popular vocabularies h-card, h-entry, and h-feed, kept growing across IndieWeb (micro)blogging services and software like CMSs & SSGs both for publishing, and richer peer-to-peer social web interactions via #Webmention.
Beyond the IndieWeb, the rel=me microformat, AKA #relMe, continues to be adopted by services to support #distributed #verification, such as these in the past year:
* Meta Platforms #Threads user profile "Link" field¹
* #Letterboxd user profile website field²
For both POSSE and microformats, there is always more we can do to improve their techniques, technologies, and tools to help people own their content and identities online, while staying connected to friends across the web.
Got suggestions for this coming year? Join us in chat:
* https://chat.indieweb.org/dev
* https://chat.indieweb.org/microformats
for discussions about POSSE and microformats, respectively.
Previously: https://tantek.com/2023/171/t1/anniversaries-microformats-posse
This is post 15 of #100PostsOfIndieWeb. #100Posts
← https://tantek.com/2024/151/t1/minimum-interesting-service-worker
→ 🔮
Post glossary:
CMS
https://indieweb.org/CMS
h-card
https://microformats.org/wiki/h-card
h-entry
https://microformats.org/wiki/h-entry
h-feed
https://microformats.org/wiki/h-feed
microformats2 syntax
https://microformats.org/wiki/microformats2-parsing
rel-me
https://microformats.org/wiki/rel-me
SSG
https://indieweb.org/SSG
Webmention
https://indieweb.org/Webmention
Withknown
https://indieweb.org/Known
References:
¹ https://tantek.com/2023/234/t1/threads-supports-indieweb-rel-me
² https://indieweb.org/rel-me#Letterboxd
{
"type": "entry",
"published": "2024-06-21 22:02-0700",
"url": "https://tantek.com/2024/173/t1/years-posse-microformats-adoption",
"category": [
"POSSE",
"microformats",
"IndieWeb",
"microformats2",
"Webmention",
"relMe",
"distributed",
"verification",
"Threads",
"Letterboxd",
"100PostsOfIndieWeb",
"100Posts"
],
"content": {
"text": "Happy 12 years of https://indieweb.org/POSSE #POSSE and\n19 years of https://microformats.org/ #microformats! (as of yesterday, the 20th)\n\nA few highlights from the past year:\n\nPOSSE (Publish on your Own Site, Syndicate Elsewhere) has grown steadily as a common practice in the #IndieWeb community, personal sites, CMSs (like Withknown, which itself reached 10 years in May!), and services (like https://micro.blog) for over a decade.\n\nIn its 12th year, POSSE broke through to broader technology press and adoption beyond the community. For example:\n\n* David Pierce\u2019s (@pierce@mas.to) excellent article @TheVerge.com (@verge@mastodon.social): \u201cThe poster\u2019s guide to the internet of the future\u201d (https://www.theverge.com/2023/10/23/23928550/posse-posting-activitypub-standard-twitter-tumblr-mastodon):\n\u00a0 \u201cYour post appears natively on all of those platforms, typically with some kind of link back to your blog. And your blog becomes the hub for everything, your main home on the internet.\nDone right, POSSE is the best of all posting worlds.\u201d\n\n* David also recorded a 29 minute podcast on POSSE with some great interviews: \u00a0https://podcasts.apple.com/us/podcast/the-posters-guide-to-the-new-internet/id430333725?i=1000632256014\n\n* Cory Doctorow (@craphound.com @doctorow@mamot.fr) declared in his Pluralistic blog (@pluralisticmamot.fr) post: \u201cVice surrenders\u201d (https://pluralistic.net/2024/02/24/anti-posse/):\n\u00a0 \u201cThis is the moment for POSSE (Post Own Site, Share Everywhere [sic]), a strategy that sees social media as a strategy for bringing readers to channels that you control\u201d \n\n* And none other than Molly White (@mollywhite.net @molly0xfff@hachyderm.io) of @web3isgoinggreat.com (@web3isgreat@indieweb.social) built, deployed, and started actively using her own POSSE setup as described in her post titled \u201cPOSSE\u201d (https://www.mollywhite.net/micro/entry/202403091817) to: \n\u00a0 \"\u2026 write posts in the microblog and automatically crosspost them to Twitter/Mastodon/Bluesky, while keeping the original post on my site.\"\n\u00a0 \nCongrats Molly and well done!\n\n\nIn its 19th year, the microformats formal #microformats2 syntax and popular vocabularies h-card, h-entry, and h-feed, kept growing across IndieWeb (micro)blogging services and software like CMSs & SSGs both for publishing, and richer peer-to-peer social web interactions via #Webmention.\n\nBeyond the IndieWeb, the rel=me microformat, AKA #relMe, continues to be adopted by services to support #distributed #verification, such as these in the past year: \n\n* Meta Platforms #Threads user profile \"Link\" field\u00b9 \n* #Letterboxd user profile website field\u00b2\n\n\nFor both POSSE and microformats, there is always more we can do to improve their techniques, technologies, and tools to help people own their content and identities online, while staying connected to friends across the web.\n\nGot suggestions for this coming year? Join us in chat:\n* https://chat.indieweb.org/dev\n* https://chat.indieweb.org/microformats\nfor discussions about POSSE and microformats, respectively.\n\n\nPreviously: https://tantek.com/2023/171/t1/anniversaries-microformats-posse\n\n\nThis is post 15 of #100PostsOfIndieWeb. #100Posts\n\n\u2190 https://tantek.com/2024/151/t1/minimum-interesting-service-worker\n\u2192 \ud83d\udd2e\n\n\nPost glossary:\n\nCMS\n\u00a0 https://indieweb.org/CMS\nh-card\n\u00a0 https://microformats.org/wiki/h-card\nh-entry\n\u00a0 https://microformats.org/wiki/h-entry\nh-feed\n\u00a0 https://microformats.org/wiki/h-feed\nmicroformats2 syntax\n\u00a0 https://microformats.org/wiki/microformats2-parsing\nrel-me\n\u00a0 https://microformats.org/wiki/rel-me\nSSG\n\u00a0 https://indieweb.org/SSG\nWebmention\n\u00a0 https://indieweb.org/Webmention\nWithknown\n\u00a0 https://indieweb.org/Known\n\n\nReferences:\n\n\u00b9 https://tantek.com/2023/234/t1/threads-supports-indieweb-rel-me\n\u00b2 https://indieweb.org/rel-me#Letterboxd",
"html": "Happy 12 years of <a href=\"https://indieweb.org/POSSE\">https://indieweb.org/POSSE</a> #<span class=\"p-category\">POSSE</span> and<br />19 years of <a href=\"https://microformats.org/\">https://microformats.org/</a> #<span class=\"p-category\">microformats</span>! (as of yesterday, the 20th)<br /><br />A few highlights from the past year:<br /><br />POSSE (Publish on your Own Site, Syndicate Elsewhere) has grown steadily as a common practice in the #<span class=\"p-category\">IndieWeb</span> community, personal sites, CMSs (like Withknown, which itself reached 10 years in May!), and services (like <a href=\"https://micro.blog\">https://micro.blog</a>) for over a decade.<br /><br />In its 12th year, POSSE broke through to broader technology press and adoption beyond the community. For example:<br /><br />* David Pierce\u2019s (<a href=\"https://mas.to/@pierce\">@pierce@mas.to</a>) excellent article <a href=\"https://TheVerge.com\">@TheVerge.com</a> (<a href=\"https://mastodon.social/@verge\">@verge@mastodon.social</a>): \u201cThe poster\u2019s guide to the internet of the future\u201d (<a href=\"https://www.theverge.com/2023/10/23/23928550/posse-posting-activitypub-standard-twitter-tumblr-mastodon):\">https://www.theverge.com/2023/10/23/23928550/posse-posting-activitypub-standard-twitter-tumblr-mastodon):</a><br />\u00a0 \u201cYour post appears natively on all of those platforms, typically with some kind of link back to your blog. And your blog becomes the hub for everything, your main home on the internet.<br />Done right, POSSE is the best of all posting worlds.\u201d<br /><br />* David also recorded a 29 minute podcast on POSSE with some great interviews: \u00a0<a href=\"https://podcasts.apple.com/us/podcast/the-posters-guide-to-the-new-internet/id430333725?i=1000632256014\">https://podcasts.apple.com/us/podcast/the-posters-guide-to-the-new-internet/id430333725?i=1000632256014</a><br /><br />* Cory Doctorow (<a href=\"https://craphound.com\">@craphound.com</a> <a href=\"https://mamot.fr/@doctorow\">@doctorow@mamot.fr</a>) declared in his Pluralistic blog (<a href=\"https://pluralisticmamot.fr\">@pluralisticmamot.fr</a>) post: \u201cVice surrenders\u201d (<a href=\"https://pluralistic.net/2024/02/24/anti-posse/):\">https://pluralistic.net/2024/02/24/anti-posse/):</a><br />\u00a0 \u201cThis is the moment for POSSE (Post Own Site, Share Everywhere [sic]), a strategy that sees social media as a strategy for bringing readers to channels that you control\u201d <br /><br />* And none other than Molly White (<a href=\"https://mollywhite.net\">@mollywhite.net</a> <a href=\"https://hachyderm.io/@molly0xfff\">@molly0xfff@hachyderm.io</a>) of <a href=\"https://web3isgoinggreat.com\">@web3isgoinggreat.com</a> (<a href=\"https://indieweb.social/@web3isgreat\">@web3isgreat@indieweb.social</a>) built, deployed, and started actively using her own POSSE setup as described in her post titled \u201cPOSSE\u201d (<a href=\"https://www.mollywhite.net/micro/entry/202403091817\">https://www.mollywhite.net/micro/entry/202403091817</a>) to: <br />\u00a0 \"\u2026 write posts in the microblog and automatically crosspost them to Twitter/Mastodon/Bluesky, while keeping the original post on my site.\"<br />\u00a0 <br />Congrats Molly and well done!<br /><br /><br />In its 19th year, the microformats formal #<span class=\"p-category\">microformats2</span> syntax and popular vocabularies h-card, h-entry, and h-feed, kept growing across IndieWeb (micro)blogging services and software like CMSs & SSGs both for publishing, and richer peer-to-peer social web interactions via #<span class=\"p-category\">Webmention</span>.<br /><br />Beyond the IndieWeb, the rel=me microformat, AKA #<span class=\"p-category\">relMe</span>, continues to be adopted by services to support #<span class=\"p-category\">distributed</span> #<span class=\"p-category\">verification</span>, such as these in the past year: <br /><br />* Meta Platforms #<span class=\"p-category\">Threads</span> user profile \"Link\" field<a href=\"https://tantek.com/#t5Xa1_note-1\">\u00b9</a> <br />* #<span class=\"p-category\">Letterboxd</span> user profile website field<a href=\"https://tantek.com/#t5Xa1_note-2\">\u00b2</a><br /><br /><br />For both POSSE and microformats, there is always more we can do to improve their techniques, technologies, and tools to help people own their content and identities online, while staying connected to friends across the web.<br /><br />Got suggestions for this coming year? Join us in chat:<br />* <a href=\"https://chat.indieweb.org/dev\">https://chat.indieweb.org/dev</a><br />* <a href=\"https://chat.indieweb.org/microformats\">https://chat.indieweb.org/microformats</a><br />for discussions about POSSE and microformats, respectively.<br /><br /><br />Previously: <a href=\"https://tantek.com/2023/171/t1/anniversaries-microformats-posse\">https://tantek.com/2023/171/t1/anniversaries-microformats-posse</a><br /><br /><br />This is post 15 of #<span class=\"p-category\">100PostsOfIndieWeb</span>. #<span class=\"p-category\">100Posts</span><br /><br />\u2190 <a href=\"https://tantek.com/2024/151/t1/minimum-interesting-service-worker\">https://tantek.com/2024/151/t1/minimum-interesting-service-worker</a><br />\u2192 \ud83d\udd2e<br /><br /><br />Post glossary:<br /><br />CMS<br />\u00a0 <a href=\"https://indieweb.org/CMS\">https://indieweb.org/CMS</a><br />h-card<br />\u00a0 <a href=\"https://microformats.org/wiki/h-card\">https://microformats.org/wiki/h-card</a><br />h-entry<br />\u00a0 <a href=\"https://microformats.org/wiki/h-entry\">https://microformats.org/wiki/h-entry</a><br />h-feed<br />\u00a0 <a href=\"https://microformats.org/wiki/h-feed\">https://microformats.org/wiki/h-feed</a><br />microformats2 syntax<br />\u00a0 <a href=\"https://microformats.org/wiki/microformats2-parsing\">https://microformats.org/wiki/microformats2-parsing</a><br />rel-me<br />\u00a0 <a href=\"https://microformats.org/wiki/rel-me\">https://microformats.org/wiki/rel-me</a><br />SSG<br />\u00a0 <a href=\"https://indieweb.org/SSG\">https://indieweb.org/SSG</a><br />Webmention<br />\u00a0 <a href=\"https://indieweb.org/Webmention\">https://indieweb.org/Webmention</a><br />Withknown<br />\u00a0 <a href=\"https://indieweb.org/Known\">https://indieweb.org/Known</a><br /><br /><br />References:<br /><br /><a href=\"https://tantek.com/#t5Xa1_ref-1\">\u00b9</a> <a href=\"https://tantek.com/2023/234/t1/threads-supports-indieweb-rel-me\">https://tantek.com/2023/234/t1/threads-supports-indieweb-rel-me</a><br /><a href=\"https://tantek.com/#t5Xa1_ref-2\">\u00b2</a> <a href=\"https://indieweb.org/rel-me#Letterboxd\">https://indieweb.org/rel-me#Letterboxd</a>"
},
"author": {
"type": "card",
"name": "Tantek \u00c7elik",
"url": "https://tantek.com/",
"photo": "https://tantek.com/photo.jpg"
},
"post-type": "note",
"_id": "41445008",
"_source": "2460"
}
{
"type": "entry",
"published": "2024-06-21T21:01:00-07:00",
"url": "https://aaronparecki.com/2024/06/21/32/",
"photo": [
"https://aperture-media.p3k.io/aaronparecki.com/2b6a122254b2fdc2d1546af58ec596565c57ed4a2861fb0bc07274a6bef770a8.jpg"
],
"syndication": [
"https://www.swarmapp.com/user/59164/checkin/66764c7cd18f703dd1a883dc"
],
"name": "at Ride App Pickup",
"author": {
"type": "card",
"name": "Aaron Parecki",
"url": "https://aaronparecki.com/",
"photo": "https://aperture-media.p3k.io/aaronparecki.com/41061f9de825966faa22e9c42830e1d4a614a321213b4575b9488aa93f89817a.jpg"
},
"checkin": {
"type": "card",
"name": "Ride App Pickup",
"latitude": "45.588696",
"longitude": "-122.592831",
"url": "https://foursquare.com/v/58efbefb8f2c1a1bac333652"
},
"post-type": "checkin",
"_id": "41443810",
"_source": "16"
}
{
"type": "entry",
"published": "2024-06-21T12:46:20-07:00",
"url": "https://aaronparecki.com/2024/06/21/17/",
"photo": [
"https://aperture-media.p3k.io/aaronparecki.com/fa3ce7c3ddbfffc472c53647d51e25e769abd7e0213eebadd79d30f6f4ffa14d.jpg"
],
"syndication": [
"https://www.swarmapp.com/user/59164/checkin/6675d88c04eee62418da174e"
],
"name": "at Googleplex - Cafe Blaze",
"author": {
"type": "card",
"name": "Aaron Parecki",
"url": "https://aaronparecki.com/",
"photo": "https://aperture-media.p3k.io/aaronparecki.com/41061f9de825966faa22e9c42830e1d4a614a321213b4575b9488aa93f89817a.jpg"
},
"checkin": {
"type": "card",
"name": "Googleplex - Cafe Blaze",
"latitude": "37.420045",
"longitude": "-122.07257",
"url": "https://foursquare.com/v/4ed9054b77c8274efb6db6ed"
},
"post-type": "checkin",
"_id": "41441338",
"_source": "16"
}
{
"type": "entry",
"published": "2024-06-20T09:16:13-07:00",
"url": "https://aaronparecki.com/2024/06/20/9/",
"photo": [
"https://aperture-media.p3k.io/aaronparecki.com/d6885f30d98d6216f6c3ba4277364ae39ee5cba26534cd9a1dd820e2911a412a.jpg"
],
"syndication": [
"https://www.swarmapp.com/user/59164/checkin/667455cd4fff000935b97fc7"
],
"content": {
"text": "W3C FedID WG/CG kickoff"
},
"author": {
"type": "card",
"name": "Aaron Parecki",
"url": "https://aaronparecki.com/",
"photo": "https://aperture-media.p3k.io/aaronparecki.com/41061f9de825966faa22e9c42830e1d4a614a321213b4575b9488aa93f89817a.jpg"
},
"checkin": {
"type": "card",
"name": "Googleplex - 1295",
"latitude": "37.420176",
"longitude": "-122.074916",
"url": "https://foursquare.com/v/5009c2bbe4b0ddfaa64f47fb"
},
"post-type": "checkin",
"_id": "41430412",
"_source": "16"
}
{
"type": "entry",
"published": "2024-06-19T16:00:55-07:00",
"url": "https://aaronparecki.com/2024/06/19/14/",
"photo": [
"https://aperture-media.p3k.io/aaronparecki.com/5d3a1d6c2adedaeaf3e9d36201e3fa235e51aca37fa91c496812cf1f75551998.jpg"
],
"syndication": [
"https://www.swarmapp.com/user/59164/checkin/66736327a4f5732f363c3c7c"
],
"name": "at Gate C12",
"author": {
"type": "card",
"name": "Aaron Parecki",
"url": "https://aaronparecki.com/",
"photo": "https://aperture-media.p3k.io/aaronparecki.com/41061f9de825966faa22e9c42830e1d4a614a321213b4575b9488aa93f89817a.jpg"
},
"checkin": {
"type": "card",
"name": "Gate C12",
"latitude": "45.589395",
"longitude": "-122.597603",
"url": "https://foursquare.com/v/4d6e415438363704f93ea5d0"
},
"post-type": "checkin",
"_id": "41424388",
"_source": "16"
}
{
"type": "entry",
"published": "2024-06-16T12:56:08-07:00",
"url": "https://aaronparecki.com/2024/06/16/8/",
"photo": [
"https://aperture-media.p3k.io/aaronparecki.com/a851e84521adead12542d2fc8ef28b843acb27d38af63e8f167832c91efefd6d.jpg"
],
"syndication": [
"https://www.swarmapp.com/user/59164/checkin/666f43587cf9cb4b9831d83c"
],
"name": "at Thai Roses",
"author": {
"type": "card",
"name": "Aaron Parecki",
"url": "https://aaronparecki.com/",
"photo": "https://aperture-media.p3k.io/aaronparecki.com/41061f9de825966faa22e9c42830e1d4a614a321213b4575b9488aa93f89817a.jpg"
},
"checkin": {
"type": "card",
"name": "Thai Roses",
"latitude": "45.486088",
"longitude": "-122.747707",
"url": "https://foursquare.com/v/4a615abbf964a5205dc21fe3"
},
"post-type": "checkin",
"_id": "41424272",
"_source": "16"
}
At work I’m setting up some documents for micro-credentials, which I call “MC” for short. I entered “MC Debugging” as the title of one without much thought, then realized that would probably be my DJ name.
{
"type": "entry",
"published": "2024-06-19 14:10-0700",
"url": "https://gregorlove.com/2024/06/at-work-im-setting/",
"syndication": [
"https://bsky.app/profile/gregorlove.com/post/3kvcmn56srk2p"
],
"content": {
"text": "At work I\u2019m setting up some documents for micro-credentials, which I call \u201cMC\u201d for short. I entered \u201cMC Debugging\u201d as the title of one without much thought, then realized that would probably be my DJ name.",
"html": "<p>At work I\u2019m setting up some documents for micro-credentials, which I call \u201cMC\u201d for short. I entered \u201cMC Debugging\u201d as the title of one without much thought, then realized that would probably be my DJ name.</p>"
},
"author": {
"type": "card",
"name": "gRegor Morrill",
"url": "https://gregorlove.com/",
"photo": "https://gregorlove.com/site/assets/files/6268/profile-2021-square.300x0.jpg"
},
"post-type": "note",
"_id": "41424201",
"_source": "95"
}
{
"type": "entry",
"published": "2024-06-18T00:27:37-07:00",
"url": "https://beesbuzz.biz/blog/2456-Back-on-the-Patreon-train",
"name": "Back on the Patreon train",
"author": {
"type": "card",
"name": "fluffy",
"url": "https://beesbuzz.biz/",
"photo": "https://beesbuzz.biz/static/headshot.jpg"
},
"post-type": "article",
"_id": "41408279",
"_source": "2778"
}
{
"type": "entry",
"published": "2024-06-17T00:56:20+00:00",
"url": "https://cleverdevil.io/2024/fathers-day-dinner",
"photo": [
"https://cleverdevil.io/file/7557e880081f6c6105e79fc2302ead3c/thumb.jpg",
"https://cleverdevil.io/file/94972e30e56dda924f6b2c94f8a992dd/thumb.jpg"
],
"syndication": [
"https://cleverdevil.club/@jonathan/112629240129701221",
"https://bsky.app/profile/cleverdevil.io/post/3kv3hsp5pwc2x"
],
"name": "Father\u2019s Day Dinner with my Daughter",
"author": {
"type": "card",
"name": "Jonathan LaCour",
"url": "https://cleverdevil.io/profile/cleverdevil",
"photo": "https://cleverdevil.io/file/e37c3982acf4f0a8421d085b9971cd71/thumb.jpg"
},
"post-type": "photo",
"_id": "41398682",
"_source": "10"
}
{
"type": "entry",
"published": "2024-06-15T14:27:15-0400",
"url": "https://martymcgui.re/2024/06/15/gardening-an-indieweb-webring/",
"category": [
"\ud83d\udd78\ufe0f\ud83d\udc8d",
"webring",
"indieweb",
"update"
],
"name": "\ud83e\udd16\u2700\ud83c\udf3f Gardening an IndieWeb webring",
"content": {
"text": "Are you a member of the \ud83d\udd78\ufe0f\ud83d\udc8d IndieWeb Webring? Perhaps one of many who have been confused to discover that member sites are not automatically removed when the webring links disappear from their site?\n\n I'm pleased to announce that the webring will now be self-gardening! Webring member sites th-\n \n\nHold on, links to what now?\nThat-... is actually a good question!\nIn order for webrings to work, member sites have to link to one another, usually through the webring itself.\nWhen you sign in to the \ud83d\udd78\ufe0f\ud83d\udc8d IndieWeb Webring, you see this prompt on your dashboard page:\n\n Screenshot of a warning \"to stay active, make sure these links are visible on your site\", followed by a text area with HTML links to copy and paste.\n \n\n These links should be copied and pasted into your site so that they appear on the page that matches your webring sign-in. For example, I sign in with my homepage https://martymcgui.re/, so I put my links to the webring on my homepage. They look like this on my site, but you can style them up to look like anything you want.\n \n\n\n \"An IndieWeb Webring \ud83d\udd78\ufe0f\ud83d\udc8d\" text flanked by left and right unicode arrow links.\n \n\n The basic deal for most webrings is that, in order to receive incoming traffic from other member sites, you need to also display links back to the webring so a visitor can continue on their journey browsing sites from the webring.\nIf that's the deal, then when a member site goes offline, or removes the webring links from their page, the webring should no longer direct visitors to that site.\nThe IndieWeb webring tracks whether a site is \"Active\" or ... \"Not Active\" (ahem, Inactive). Active sites can receive traffic from webring visitors and, if you choose, appear on the Directory page. Inactive sites... can't do those things.\nAs the owner of an webring member site, you can sign in to the webring and your Dashboard page will show your site's current \"Active\" / \"Not Active\" status and the results of the most recent attempts to check your site for webring links. If you've made changes to your site, there's a \"Check links now!\" button on the Dashboard to scan for them again.\nOkay that's enough background, I think.\n\n Right, thanks. But actually no, there is more.\n \n\nInitially, Active status on the webring kiiiiind of worked like an honor system. The first time you successfully sign in, your site is added to the webring and set to Active. From that point on, there were only two ways for your site to get marked as Not Active:\n\n If you clicked \"Check links now!\" while your site was offline or didn't have webring links on it.\n \n\n \nOR if I ran a \"gardener\" script that checked the webring links for one or more sites.\nSince the webring came online in, um, 2018, I've only received a handful of nudges from folks who have been willing to track me down to the IndieWeb chat and complain. That led me to think this honor system was \"okay\" or \"at least not so bad that folks are willing to jump through hoops to bring it to my attention\".\nThat's definitely enough background.\nAgreed!\nSo what's new?\nWell, the honor system days are over! Which should be good for all webring member sites, I think.\nI've built a little automated gardener that will periodically check member sites for their links. It's designed in a way that trends towards polling member sites about once per month.\nFor a new member site, it basically works like this: about an hour after you sign up, your site will be checked for links. If they're there, the gardener will check again the next day. It will check again a few days later, then a week, then two weeks.\nFinally, as long as the links are there at every check, the gardener will only check once per month.\n\n What happens if the webring links disappear from my site?\n \n\nIf the gardener finds that an Active member site has gone offline or lost the webring links, the site is marked Not Active. It's checked again the next day, then a few days later, then a week and then two.\nFinally, the Not Active site will be checked once per month for 3 months. If the site stays Not Active that whole time, the gardener will stop checking and the site owner will need to sign in to re-check links manually if they want the site to become Active again.\n\n What happens if I put the webring links back on my site?\n \n\nIf the gardener finds that a Not Active member site has their webring links back, the site is marked as Active and the schedule resets. The gardener will then check it the next day, then three days later, then a week, then...\nOkay, got it!\nWoohoo!\nWhy now, though?\nOh dang, that's a good question.\nI've found the energy and space to start working on the webring again, including some possible projects like those I listed in my last update. Before jumping into any of those, though, I want to feel like I can \"trust\" that the webring is taking care of itself and its visitors. That means not sending folks to sites where the owner changed their mind about being a webring member or, worse, lost sites, and keeping track of active sites on its own!\nCan we see the code?\nSure! The bulk of the updates are here on my git hosting. As with most things webring there's a little bit that's well thought out and some attempts at rigor followed by a rush of throwing things together when it appears near working.\nI'm open if folks have suggestio-\nWait, I didn't actually want to look at code!\nI put some words in your mouth, there, yeah. Sorry. \ud83d\ude48\nOkay! That's it for now. As always, feel free to reply to this post on your own site, or feel free to drop me a line in the #indieweb chat (I\u2019m schmarty there).",
"html": "<p>Are you a member of the <a href=\"https://xn--sr8hvo.ws/\">\ud83d\udd78\ufe0f\ud83d\udc8d IndieWeb Webring</a>? Perhaps one of many who <a href=\"https://chat.indieweb.org/2020-03-23#t1584989705419200\">have been confused to discover</a> that <a href=\"https://chat.indieweb.org/dev/2022-08-28#t1661694360371800\">member sites are not automatically removed</a> when the <a href=\"https://chat.indieweb.org/dev/2024-06-12#t1718226603454100\">webring links disappear from their site</a>?</p>\n<p>\n I'm pleased to announce that the webring will now be self-gardening! Webring member sites th-\n <br /></p>\n<h2>Hold on, links to what now?</h2>\n<p>That-... is actually a good question!</p>\n<p>In order for webrings to work, member sites have to link to one another, usually through the webring itself.</p>\n<p>When you sign in to the \ud83d\udd78\ufe0f\ud83d\udc8d IndieWeb Webring, you see this prompt on your dashboard page:</p>\n<img src=\"https://media.martymcgui.re/44/c3/b4/68/fde563e3a6e618431ce898b2b2add95e384939541e267eb27ce4e49f.png\" alt=\"\" />\n Screenshot of a warning \"to stay active, make sure these links are visible on your site\", followed by a text area with HTML links to copy and paste.\n <br /><p>\n These links should be copied and pasted into your site so that they appear on the page that matches your webring sign-in. For example, I sign in with my homepage https://martymcgui.re/, so I put my links to the webring on my homepage. They look like this on my site, but you can style them up to look like anything you want.\n <br /></p>\n<img src=\"https://media.martymcgui.re/31/d7/b1/47/5737b023084f467f48f57033e8c2e2563d3040002b274f4f61e64ceb.png\" alt=\"\" /><p>\n \"An IndieWeb Webring \ud83d\udd78\ufe0f\ud83d\udc8d\" text flanked by left and right unicode arrow links.\n <br /></p>\n <p>The basic deal for most webrings is that, in order to receive incoming traffic from other member sites, you need to also display links back to the webring so a visitor can continue on their journey browsing sites from the webring.</p>\n<p>If that's the deal, then when a member site goes offline, or removes the webring links from their page, the webring should no longer direct visitors to that site.</p>\n<p>The IndieWeb webring tracks whether a site is \"Active\" or ... \"Not Active\" (ahem, Inactive). Active sites can receive traffic from webring visitors and, if you choose, appear on the <a href=\"https://xn--sr8hvo.ws/directory\">Directory</a> page. Inactive sites... can't do those things.</p>\n<p>As the owner of an webring member site, you can sign in to the webring and your Dashboard page will show your site's current \"Active\" / \"Not Active\" status and the results of the most recent attempts to check your site for webring links. If you've made changes to your site, there's a \"Check links now!\" button on the Dashboard to scan for them again.</p>\n<h2>Okay that's enough background, I think.</h2>\n<p>\n Right, thanks. But actually no, there is more.\n <br /></p>\n<p>Initially, Active status on the webring kiiiiind of worked like an honor system. The first time you successfully sign in, your site is added to the webring and set to Active. From that point on, there were only two ways for your site to get marked as Not Active:</p>\n<ul><li>\n If you clicked \"Check links now!\" while your site was offline or didn't have webring links on it.\n <br /></li>\n <li>\n<i>OR</i> if I ran a \"gardener\" script that checked the webring links for one or more sites.</li>\n</ul><p>Since the webring came online in, um, 2018, I've only received a handful of nudges from folks who have been willing to track me down to the <a href=\"https://indieweb.org/discuss\">IndieWeb chat</a> and complain. That led me to think this honor system was \"okay\" or \"at least not so bad that folks are willing to jump through hoops to bring it to my attention\".</p>\n<h2>That's definitely enough background.</h2>\n<p>Agreed!</p>\n<h2>So what's new?</h2>\n<p>Well, the honor system days are over! Which should be good for all webring member sites, I think.</p>\n<p>I've built a little automated gardener that will periodically check member sites for their links. It's designed in a way that trends towards polling member sites about once per month.</p>\n<p>For a new member site, it basically works like this: about an hour after you sign up, your site will be checked for links. If they're there, the gardener will check again the next day. It will check again a few days later, then a week, then two weeks.</p>\n<p>Finally, as long as the links are there at every check, the gardener will only check once per month.</p>\n<h3>\n What happens if the webring links disappear from my site?\n <br /></h3>\n<p>If the gardener finds that an Active member site has gone offline or lost the webring links, the site is marked Not Active. It's checked again the next day, then a few days later, then a week and then two.</p>\n<p>Finally, the Not Active site will be checked once per month for 3 months. If the site stays Not Active that whole time, the gardener will stop checking and the site owner will need to sign in to re-check links manually if they want the site to become Active again.</p>\n<h3>\n What happens if I put the webring links back on my site?\n <br /></h3>\n<p>If the gardener finds that a Not Active member site has their webring links back, the site is marked as Active and the schedule resets. The gardener will then check it the next day, then three days later, then a week, then...</p>\n<h3>Okay, got it!</h3>\n<p>Woohoo!</p>\n<h2>Why now, though?</h2>\n<p>Oh dang, that's a good question.</p>\n<p>I've found the energy and space to start working on the webring again, including some possible projects like those I listed in <a href=\"https://martymcgui.re/2024/06/09/an-absentee-webring-steward-returns/\">my last update</a>. Before jumping into any of those, though, I want to feel like I can \"trust\" that the webring is taking care of itself and its visitors. That means not sending folks to sites where the owner changed their mind about being a webring member or, worse, <a href=\"https://indieweb.org/lost_sites\">lost sites</a>, and keeping track of active sites on its own!</p>\n<h2>Can we see the code?</h2>\n<p>Sure! The <a href=\"https://git.schmarty.net/schmarty/gem-diamond/compare/4b6347...5afb99\">bulk of the updates are here on my git hosting</a>. As with most things webring there's a little bit that's well thought out and some attempts at rigor followed by a rush of throwing things together when it appears near working.</p>\n<p>I'm open if folks have suggestio-</p>\n<h2>Wait, I didn't actually want to look at code!</h2>\n<p>I put some words in your mouth, there, yeah. Sorry. \ud83d\ude48</p>\n<p>Okay! That's it for now. As always, feel free to <a href=\"https://indieweb.org/reply\">reply</a> to this post on your own site, or feel free to drop me a line in the <a href=\"https://chat.indieweb.org/\">#indieweb chat</a> (I\u2019m <code>schmarty</code> there).</p>"
},
"author": {
"type": "card",
"name": "Marty McGuire",
"url": "https://martymcgui.re/",
"photo": "https://martymcgui.re/images/logo.jpg"
},
"post-type": "article",
"_id": "41391044",
"_source": "175"
}
This is now the official song of #caturday:
https://imanicoppola.bandcamp.com/track/clap-your-hands
I will not be taking questions at this time.
{
"type": "entry",
"published": "2024-06-14T12:33:37-0400",
"url": "https://martymcgui.re/2024/06/14/123337/",
"category": [
"caturday",
"soundtrack",
"OST"
],
"content": {
"text": "This is now the official song of #caturday:\nhttps://imanicoppola.bandcamp.com/track/clap-your-hands\nI will not be taking questions at this time.",
"html": "<p>This is now the official song of <a href=\"https://martymcgui.re/tag/caturday/\">#caturday</a>:</p>\n<p><a href=\"https://imanicoppola.bandcamp.com/track/clap-your-hands\">https://imanicoppola.bandcamp.com/track/clap-your-hands</a></p>\n<p>I will not be taking questions at this time.</p>"
},
"author": {
"type": "card",
"name": "Marty McGuire",
"url": "https://martymcgui.re/",
"photo": "https://martymcgui.re/images/logo.jpg"
},
"post-type": "note",
"_id": "41381822",
"_source": "175"
}
{
"type": "entry",
"published": "2024-06-13T15:07:34-07:00",
"url": "https://beesbuzz.biz/blog/11859-Birthday-plans-2024",
"name": "Birthday plans 2024",
"content": {
"text": "Hey y'all! My birthday is tomorrow, June 14! I will be turning 0x2E. Or 0b101110 if that\u2019s your preference.\n\nAnyway. Normally I\u2019d use that as a reason to have a huge karaoke blowout on VRChat Friday evening, but I have a big choral show on Saturday and some of the pieces need my full vocal range, so I\u2019m not going to risk fucking up my voice for Saturday.\n\nSo instead I\u2019ll have birthday karaoke in VRChat Saturday evening! I\u2019m thinking it\u2019ll start at, say, 7 PM Pacific Time. You can join off me if you have me friended or I\u2019ll be posting an instance link on my discord.\n\nAlso, to help with the celebrations, I\u2019ve thrown together a party hat.",
"html": "<p>Hey y'all! My birthday is tomorrow, June 14! I will be turning <code>0x2E</code>. Or <code>0b101110</code> if that\u2019s your preference.</p><p>Anyway. Normally I\u2019d use that as a reason to have a huge karaoke blowout on VRChat Friday evening, but I have <a href=\"https://www.museumofflight.org/exhibits-and-events/calendar-of-events/7784/sallys-day\">a big choral show on Saturday</a> and some of the pieces need my <em>full</em> vocal range, so I\u2019m not going to risk fucking up my voice for Saturday.</p><p>So instead I\u2019ll have birthday karaoke in VRChat Saturday evening! I\u2019m thinking it\u2019ll start at, say, 7 PM Pacific Time. You can join off me if <a href=\"https://vrchat.com/home/user/usr_c3d14129-014b-4d5a-a1af-399237355728\">you have me friended</a> or I\u2019ll be posting an instance link on <a href=\"https://beesbuzz.biz/discord\">my discord</a>.</p><p>Also, to help with the celebrations, I\u2019ve thrown together a <a href=\"https://fluffy.gumroad.com/l/partyhat\">party hat</a>.</p>"
},
"author": {
"type": "card",
"name": "fluffy",
"url": "https://beesbuzz.biz/",
"photo": "https://beesbuzz.biz/static/headshot.jpg"
},
"post-type": "article",
"_id": "41375363",
"_source": "2778"
}
{
"type": "entry",
"published": "2024-06-12T16:03:05-07:00",
"url": "https://beesbuzz.biz/blog/6659-Furality-Umbra-a-brief-review",
"name": "Furality Umbra: a brief review",
"author": {
"type": "card",
"name": "fluffy",
"url": "https://beesbuzz.biz/",
"photo": "https://beesbuzz.biz/static/headshot.jpg"
},
"post-type": "article",
"_id": "41366875",
"_source": "2778"
}
{
"type": "entry",
"published": "2024-06-12T17:33:49+00:00",
"url": "https://cleverdevil.io/2024/magic-poster-on-the-wall",
"syndication": [
"https://cleverdevil.club/@jonathan/112605017039012646"
],
"name": "Magic Poster on the Wall",
"content": {
"text": "This post originally appeared in my Techish newsletter on LinkedIn.You\u2019re the Coolest AI of AllFrom a young age, I\u2019ve always loved the magical experience of going to the movies. Torn ticket stubs, big booming sound, giant screens, and popcorn fill my heart with joy. There is nothing in the world quite like sharing in the community experience of enjoying a blockbuster in a movie theater. I suppose it's no surprise that I\u2019ve loved living in LA so much!\n\nSince 2020, theaters have struggled quite a bit, and for good and obvious reasons. I\u2019ve truly missed taking my family to the theater. I\u2019m a bit of a digital packrat, with a healthy collection of Blu-Rays stored on my home NAS. About a year ago, I finished renovating my home theater, which was a big step toward recapturing the magic of the movies with my family. But, no matter how great the picture and sound are, I still felt something was missing.\n\nIf you\u2019ve been following me, you\u2019ll be unsurprised to hear that I decided to scratch my itch with technology. What better way to explore the emerging and promising power of GenAI while honing my skill with HTML, CSS, JavaScript, and WebSockets?Picture ThisPart of visiting a movie theater is walking by a wall of big, colorful movie posters, which are, in my view, an underappreciated art form. A great movie poster creates a sense of excitement, anticipation, and wonder. A few months ago I stumbled on a project called Movie Posters Perfected, which was a huge inspiration for this project. While I could have gone down the path of just showing movie posters from this curated collection using a Fire TV stick, I wanted to create something even more magical. So, armed with inspiration, I set to the task of creating what I call my \u201cMagic Poster.\u201d\n\nThe hardware ingredients for the Magic Poster are simple:Samsung 43\u201d Smart Monitor\n\nRaspberry Pi 5 and a case with a PCIe M.2 board\n\nHDMI Aware LED Backlight from AliExpress\nAssembly was straightforward, thanks to double sided tape and zip ties. The one piece of hardware I wouldn\u2019t use again is the Samsung monitor, which is a little too \u201csmart\u201d for it's own good. Getting it to be happy in portrait orientation was a nightmare! Still, I soldiered on and was able to mount the TV on the wall and drive the display with my Raspberry Pi 5, with the LED backlight matching the content on screen. Now, it was time to build some software.Magic Poster\u2019s Software StackWhile Raspberry Pis have become surprisingly powerful, they are still constrained computers with limited performance. I knew that I wanted to do more than just display static posters. I wanted to enhance the magic factor with animations, context awareness, and generative AI. When it comes to rendering performance, modern web browsers have decades of optimization, hardware acceleration, and features. I decided that my best bet was to use Chromium in \u201ckiosk\u201d mode, which displays websites in full screen, free of window decorations, toolbars, and tabs.\n\nFor the backend, I chose my programming language of choice, Python, along with libraries like Flask and SocketIO. Magic Poster is a JavaScript-powered frontend that communicates with a Python backend using WebSocket. I deployed modern CSS animations and transitions to create delightful views that can scroll, flip, and fade in and out.\n\nAfter a few weeks of insomnia-fueled development, I had Magic Poster serving up beautiful posters from a hand-picked set of over 1,200 high-resolution movie posters, with four different styles: single poster, a \u201cmarquee\u201d view with dozens of small animated posters, a \u201cscroll\u201d view that shows medium sized posters with a smooth scrolling animation, and a \u201cflip\u201d view that experiments with animation that really make the LED backlight sing.\n\n\n\n\n\nContext AwarenessOne of the benefits of powering Magic Poster with a network attached Raspberry Pi is that it can integrate with other systems on my home network. In my theater, I have an Apple TV 4K, a Zidoo Z9X and a gaming PC running ChimeraOS. Thanks to open APIs, I am able to detect when I am watching a movie or show, or when a game is being played. Using these APIs, I was able to have a small overlay appear on Magic Poster that displays information about the current activity.\n\nMagic Poster was really taking shape, with a variety of different modes, context awareness, and even a simple REST API for controlling what is on screen at any given time. Still, I felt that there was something missing: interactivity. With the rapid and accelerating evolution of AI, there was an opportunity to take Magic Poster to the next level.A Magic Sprinkle of GenAI and MLInteractivity requires two-way communication. Attaching a keyboard or physical buttons to Magic Poster would be an easy path to providing input, but buttons are decidedly un-magical. I wanted Magic Poster to have a personality \u2013 to feel alive. Technology has an opportunity to become increasingly personal and interactive thanks to AI, and I concluded that the most magical way to interact with Magic Poster would be through conversation. Could I simply speak to Magic Poster, and more importantly, have Magic Poster respond?\n\nVoice assistants have been \u201ca thing\u201d for quite some time. My experience with the three major players (Apple\u2019s Siri, Google, and Amazon\u2019s Alexa) have been mixed at best. All three assistants require \u201cwake words\u201d to begin an interaction, which feels forced. In the years since these assistants were developed, technology has evolved and advanced significantly. If possible, my goal was to have conversations with Magic Poster feel more natural.\n\nAs a longtime member of the Python community and a Fellow in the Python Software Foundation, I follow a number of prominent community members. Simon Willison is a Python developer that has become deeply interested in AI and LLMs, producing some great tools including Datasette, and more recently, Python LLM, which makes using both local and hosted LLMs from Python fun and easy. Through Simon, I discovered Vosk, which is an open source ML powered speech recognition toolkit with impressive accuracy and a very small footprint. I was quickly able to leverage Vosk to have Magic Poster passively listening to me in the background, ready to respond or take action based upon my feedback, including changing views, requesting specific posters, and more.\n\nNow that Magic Poster could listen and take action, I wanted to give it the power to respond in its own voice. One of my favorite sites on the web is The Movie Database (TMDb), which is a free platform chock full of features, including an API with excellent Python client libraries. TMDb contains a lot of user-generated content, including a large number of reviews, with useful insights from a broad range of people. I decided to give Magic Poster the power to take hundreds of user reviews to generate a short summary of audience sentiment. When requested, Magic Poster reached out to The Movie Database, quickly pulls down all of the reviews for a movie, and then generates a summary using Ollama and the Llama 3 LLM. Finally, I feed the generated content to a text-to-speech system, and Magic Poster finally has a voice.What\u2019s Next?It's been a lot of fun working on Magic Poster, and I am really happy with where it stands today. Of course, I have so many ideas about where to go from here, with additional voice features, display styles, and more. What do you think about Magic Poster? Do you have any suggestions for how to make it even more magical? Talk soon!",
"html": "<p><em>This post <a title=\"Magic Poster on the Wall Techish newsletter\" href=\"https://www.linkedin.com/pulse/magic-poster-wall-missioncloud-be8cc/\">originally appeared in my Techish newsletter</a> on LinkedIn.</em></p><h3>You\u2019re the Coolest AI of All</h3><p>From a young age, I\u2019ve always loved the magical experience of going to the movies. Torn ticket stubs, big booming sound, giant screens, and popcorn fill my heart with joy. There is nothing in the world quite like sharing in the community experience of enjoying a blockbuster in a movie theater. I suppose it's no surprise that I\u2019ve loved living in LA so much!</p><p>Since 2020, theaters have struggled quite a bit, and for good and obvious reasons. I\u2019ve truly missed taking my family to the theater. I\u2019m a bit of a digital packrat, with a healthy collection of Blu-Rays stored on my home NAS. About a year ago, I finished renovating my home theater, which was a big step toward recapturing the magic of the movies with my family. But, no matter how great the picture and sound are, I still felt something was missing.</p><p>If you\u2019ve been following me, you\u2019ll be unsurprised to hear that I decided to scratch my itch with technology. What better way to explore the emerging and promising power of GenAI while honing my skill with HTML, CSS, JavaScript, and WebSockets?</p><h3>Picture This</h3><p>Part of visiting a movie theater is walking by a wall of big, colorful movie posters, which are, in my view, an underappreciated art form. A great movie poster creates a sense of excitement, anticipation, and wonder. A few months ago I stumbled on a project called <a href=\"https://www.moviepostersperfected.com\">Movie Posters Perfected</a>, which was a huge inspiration for this project. While I could have gone down the path of just showing movie posters from this curated collection using a Fire TV stick, I wanted to create something even more magical. So, armed with inspiration, I set to the task of creating what I call my \u201cMagic Poster.\u201d</p><p>The hardware ingredients for the Magic Poster are simple:</p><ul><li><a href=\"https://www.amazon.com/SAMSUNG-Monitor-Streaming-Wireless-LS43BM702UNXGO/dp/B09ZHQ93VJ/\">Samsung 43\u201d Smart Monitor</a></li>\n<li>\n<a href=\"https://www.raspberrypi.com/products/raspberry-pi-5/\">Raspberry Pi 5</a> and a <a href=\"https://www.google.com/url?q=https://www.amazon.com/gp/product/B0CYP28CKM/\">case with a PCIe M.2 board</a>\n</li>\n<li><a href=\"https://www.aliexpress.us/item/3256806495985623.html\">HDMI Aware LED Backlight from AliExpress</a></li>\n</ul><p>Assembly was straightforward, thanks to double sided tape and zip ties. The one piece of hardware I wouldn\u2019t use again is the Samsung monitor, which is a little too \u201csmart\u201d for it's own good. Getting it to be happy in portrait orientation was a nightmare! Still, I soldiered on and was able to mount the TV on the wall and drive the display with my Raspberry Pi 5, with the LED backlight matching the content on screen. Now, it was time to build some software.</p><h3>Magic Poster\u2019s Software Stack</h3><p>While Raspberry Pis have become surprisingly powerful, they are still constrained computers with limited performance. I knew that I wanted to do more than just display static posters. I wanted to enhance the magic factor with animations, context awareness, and generative AI. When it comes to rendering performance, modern web browsers have decades of optimization, hardware acceleration, and features. I decided that my best bet was to use Chromium in \u201ckiosk\u201d mode, which displays websites in full screen, free of window decorations, toolbars, and tabs.</p><p>For the backend, I chose my programming language of choice, <a href=\"https://python.org\">Python</a>, along with libraries like <a href=\"https://flask.palletsprojects.com/\">Flask</a> and <a href=\"https://socket.io/\">SocketIO</a>. Magic Poster is a JavaScript-powered frontend that communicates with a Python backend using <a href=\"https://en.wikipedia.org/wiki/WebSocket\">WebSocket</a>. I deployed modern CSS animations and transitions to create delightful views that can scroll, flip, and fade in and out.</p><p>After a few weeks of insomnia-fueled development, I had Magic Poster serving up beautiful posters from a hand-picked set of over 1,200 high-resolution movie posters, with four different styles: single poster, a \u201cmarquee\u201d view with dozens of small animated posters, a \u201cscroll\u201d view that shows medium sized posters with a smooth scrolling animation, and a \u201cflip\u201d view that experiments with animation that really make the LED backlight sing.</p><p><img src=\"https://cleverdevil.io/file/c23583005b2b5eef3aa2ec08117ca0a6/thumb.jpg\" alt=\"Magic Poster displaying a poster for the movie Thor Love and Thunder\" width=\"768\" height=\"1024\" /></p><p><img src=\"https://cleverdevil.io/file/c1680610917dfe6091af433bb41ec5e3/thumb.jpg\" alt=\"Magic Poster displaying a poster for the movie Groundhog Day\" width=\"768\" height=\"1024\" /></p><p><img src=\"https://cleverdevil.io/file/e3d57f2a32fd6dc83ca82d0bfea83c59/thumb.jpg\" alt=\"Magic Poster displaying a animated marquee view of dozens of movie posters\" width=\"752\" height=\"1024\" /></p><h3>Context Awareness</h3><p>One of the benefits of powering Magic Poster with a network attached Raspberry Pi is that it can integrate with other systems on my home network. In my theater, I have an <a href=\"https://www.apple.com/apple-tv-4k/\">Apple TV 4K</a>, a <a href=\"https://www.zidoo.tv/Product/index/model/Z9X/target/VEMg6VRC2%252B9KKmVViAFMcQ%253D%253D.html\">Zidoo Z9X</a> and a gaming PC running <a href=\"https://chimeraos.org/\">ChimeraOS</a>. Thanks to open APIs, I am able to detect when I am watching a movie or show, or when a game is being played. Using these APIs, I was able to have a small overlay appear on Magic Poster that displays information about the current activity.</p><p>Magic Poster was really taking shape, with a variety of different modes, context awareness, and even a simple REST API for controlling what is on screen at any given time. Still, I felt that there was something missing: interactivity. With the rapid and accelerating evolution of AI, there was an opportunity to take Magic Poster to the next level.</p><h3>A Magic Sprinkle of GenAI and ML</h3><p>Interactivity requires two-way communication. Attaching a keyboard or physical buttons to Magic Poster would be an easy path to providing input, but buttons are decidedly un-magical. I wanted Magic Poster to have a personality \u2013 to feel alive. Technology has an opportunity to become increasingly personal and interactive thanks to AI, and I concluded that the most magical way to interact with Magic Poster would be through conversation. Could I simply speak to Magic Poster, and more importantly, have Magic Poster respond?</p><p>Voice assistants have been \u201ca thing\u201d for quite some time. My experience with the three major players (Apple\u2019s Siri, Google, and Amazon\u2019s Alexa) have been mixed at best. All three assistants require \u201cwake words\u201d to begin an interaction, which feels forced. In the years since these assistants were developed, technology has evolved and advanced significantly. If possible, my goal was to have conversations with Magic Poster feel more natural.</p><p>As a longtime member of the Python community and a Fellow in the Python Software Foundation, I follow a number of prominent community members. <a href=\"https://simonwillison.net\">Simon Willison</a> is a Python developer that has become deeply interested in AI and LLMs, producing some great tools including <a href=\"https://datasette.io/\">Datasette</a>, and more recently, <a href=\"https://llm.datasette.io/en/stable/index.html\">Python LLM</a>, which makes using both local and hosted LLMs from Python fun and easy. Through Simon, I discovered <a href=\"https://github.com/alphacep/vosk-api\">Vosk</a>, which is an open source ML powered speech recognition toolkit with impressive accuracy and a very small footprint. I was quickly able to leverage Vosk to have Magic Poster passively listening to me in the background, ready to respond or take action based upon my feedback, including changing views, requesting specific posters, and more.</p><p>Now that Magic Poster could listen and take action, I wanted to give it the power to respond in its own voice. One of my favorite sites on the web is <a href=\"https://www.themoviedb.org/\">The Movie Database</a> (TMDb), which is a free platform chock full of features, including an API with <a href=\"https://github.com/leandcesar/themoviedb\">excellent Python client libraries</a>. TMDb contains a lot of user-generated content, including a large number of reviews, with useful insights from a broad range of people. I decided to give Magic Poster the power to take hundreds of user reviews to generate a short summary of audience sentiment. When requested, Magic Poster reached out to The Movie Database, quickly pulls down all of the reviews for a movie, and then generates a summary using <a href=\"https://ollama.com/\">Ollama</a> and the <a href=\"https://ollama.com/library/llama3\">Llama 3</a> LLM. Finally, I feed the generated content to a text-to-speech system, and Magic Poster finally has a voice.</p><h3>What\u2019s Next?</h3><p>It's been a lot of fun working on Magic Poster, and I am really happy with where it stands today. Of course, I have so many ideas about where to go from here, with additional voice features, display styles, and more. What do you think about Magic Poster? Do you have any suggestions for how to make it even more magical? Talk soon!</p>"
},
"author": {
"type": "card",
"name": "Jonathan LaCour",
"url": "https://cleverdevil.io/profile/cleverdevil",
"photo": "https://cleverdevil.io/file/e37c3982acf4f0a8421d085b9971cd71/thumb.jpg"
},
"post-type": "article",
"_id": "41365861",
"_source": "10"
}
me: $30 is way too much for 16oz of vegan cheese mix!
also me: **adds $60 of various powdered ingredients to a shopping cart in the hopes of recreating said cheese mix**
{
"type": "entry",
"published": "2024-06-10T22:04:08-07:00",
"url": "https://aaronparecki.com/2024/06/10/14/",
"category": [
"cooking"
],
"syndication": [
"https://bsky.app/profile/aaronpk.com/post/3kumst6vy3c2z"
],
"content": {
"text": "me: $30 is way too much for 16oz of vegan cheese mix! \n\nalso me: **adds $60 of various powdered ingredients to a shopping cart in the hopes of recreating said cheese mix**",
"html": "me: $30 is way too much for 16oz of vegan cheese mix! <br /><br />also me: **adds $60 of various powdered ingredients to a shopping cart in the hopes of recreating said cheese mix**"
},
"author": {
"type": "card",
"name": "Aaron Parecki",
"url": "https://aaronparecki.com/",
"photo": "https://aperture-media.p3k.io/aaronparecki.com/41061f9de825966faa22e9c42830e1d4a614a321213b4575b9488aa93f89817a.jpg"
},
"post-type": "note",
"_id": "41349799",
"_source": "16"
}
My new hobby is finding vegan mac and cheese sauce powder products online, and looking at the ingredient list and trying to recreate it
{
"type": "entry",
"published": "2024-06-10T21:26:28-07:00",
"url": "https://aaronparecki.com/2024/06/10/12/cheese",
"category": [
"cooking"
],
"syndication": [
"https://bsky.app/profile/aaronpk.com/post/3kumqptr62w22"
],
"content": {
"text": "My new hobby is finding vegan mac and cheese sauce powder products online, and looking at the ingredient list and trying to recreate it"
},
"author": {
"type": "card",
"name": "Aaron Parecki",
"url": "https://aaronparecki.com/",
"photo": "https://aperture-media.p3k.io/aaronparecki.com/41061f9de825966faa22e9c42830e1d4a614a321213b4575b9488aa93f89817a.jpg"
},
"post-type": "note",
"_id": "41349595",
"_source": "16"
}
not going to win any awards for the photo, but I just made 6 jars of vegan mac and cheese sauce mix, just add non-dairy milk!
{
"type": "entry",
"published": "2024-06-10T20:51:46-07:00",
"url": "https://aaronparecki.com/2024/06/10/10/cheese",
"category": [
"cooking"
],
"photo": [
"https://aperture-media.p3k.io/aaronparecki.com/9a8f9c5d5be128d364f15c1d5144db9362077d6ace8a8105f03a853af61f6e34.jpg"
],
"content": {
"text": "not going to win any awards for the photo, but I just made 6 jars of vegan mac and cheese sauce mix, just add non-dairy milk!"
},
"author": {
"type": "card",
"name": "Aaron Parecki",
"url": "https://aaronparecki.com/",
"photo": "https://aperture-media.p3k.io/aaronparecki.com/41061f9de825966faa22e9c42830e1d4a614a321213b4575b9488aa93f89817a.jpg"
},
"post-type": "photo",
"_id": "41349429",
"_source": "16"
}
{
"type": "entry",
"published": "2024-06-10T17:25:00-07:00",
"url": "https://beesbuzz.biz/blog/6415-Some-income-would-be-nice",
"name": "Some income would be nice",
"content": {
"text": "It\u2019s really unfortunate how I\u2019m stuck in the hinterland between being too disabled to work but being too abled to get on disability (at least not easily). Dealing with Social Security has been super frustrating and I\u2019m not expecting to get a full hearing or determination any time soon, so in the meantime I could really use some sort of part-time income. Not to mention having things to do that other people care about.\n\nI am way too burned out on software engineering to do that anymore (I barely even want to write code for my own projects), but I would be super willing to do things like:\nMusic\nSound design\nVideo editing\nCharacter design\n2D and 3D art\nGame design\nAnyway, here\u2019s my resume.\n\nI\u2019m willing and able to work part-time in Seattle (remote-focused hybrid preferred) or remotely.",
"html": "<p>It\u2019s really unfortunate how I\u2019m stuck in the hinterland between being too disabled to work but being too abled to get on disability (at least not easily). Dealing with Social Security has been super frustrating and I\u2019m not expecting to get a full hearing or determination any time soon, so in the meantime I could really use some sort of part-time income. Not to mention having things to do that other people care about.</p><p>I am way too burned out on software engineering to do that anymore (I barely even want to write code for my own projects), but I would be super willing to do things like:</p>\n<ul><li>Music</li>\n<li>Sound design</li>\n<li>Video editing</li>\n<li>Character design</li>\n<li>2D and 3D art</li>\n<li>Game design</li>\n</ul><p>Anyway, <a href=\"https://beesbuzz.biz/resume\">here\u2019s my resume</a>.</p><p>I\u2019m willing and able to work part-time in Seattle (remote-focused hybrid preferred) or remotely.</p>"
},
"author": {
"type": "card",
"name": "fluffy",
"url": "https://beesbuzz.biz/",
"photo": "https://beesbuzz.biz/static/headshot.jpg"
},
"post-type": "article",
"_id": "41349103",
"_source": "2778"
}
working on a new habanero hot sauce recipe
{
"type": "entry",
"published": "2024-06-09T21:40:33-07:00",
"url": "https://aaronparecki.com/2024/06/09/15/habanero",
"category": [
"habanero",
"cooking"
],
"photo": [
"https://aperture-media.p3k.io/aaronparecki.com/6408ef00e2ad2669fd5374964fb3c95cf575e2a7324b4eaa080072cbe0cc269c.jpg"
],
"content": {
"text": "working on a new habanero hot sauce recipe"
},
"author": {
"type": "card",
"name": "Aaron Parecki",
"url": "https://aaronparecki.com/",
"photo": "https://aperture-media.p3k.io/aaronparecki.com/41061f9de825966faa22e9c42830e1d4a614a321213b4575b9488aa93f89817a.jpg"
},
"post-type": "photo",
"_id": "41339085",
"_source": "16"
}
{
"type": "entry",
"published": "2024-06-09T22:14:30-0400",
"url": "https://martymcgui.re/2024/06/09/an-absentee-webring-steward-returns/",
"category": [
"\ud83d\udd78\ufe0f\ud83d\udc8d",
"webring",
"indieweb",
"update"
],
"name": "An absentee webring steward returns",
"content": {
"text": "Are you a member of the \ud83d\udd78\ud83d\udc8d IndieWeb Webring? Everything is fine! We are up to around 450 active sites, with more than 250 of those appearing on the webring directory page!\n\n Okay so what is this update?\n \n\nHa! Ha. Reader, you see right through me. Since the last IndieWeb Webring update, an afficionado of IndieWeb, webrings, and PHP who goes by Von Explaino (aka Colin) reached out about collaborating!\nHe posted about his own updates in Playing with IndieWeb ring's code, and I posted a follow-up with my interest, and he shared his fork of the codebase and posted some ideas for future work. Look at this lovely back and forth discussion between our IndieWeb-powered sites! You love to see it.\nThat all started in, =ahem=, JULY OF 2023. After a slow email exchange between a patient Colin and a very embarrassed and tired me promising to take a look any day now, I eventually apologized for not having the energy to work on the web ring that that time and around September we stopped corresponding.\nThe update is that there's no update?\nNo! Well, sort of? This weekend I finally made time to reading through Colin's updates and additions, especially focused around the PHPUnit tests that he added for the basic database logic and site fetching and parsing and link-finding code.\nThe tl;dr is: I've incorporated most of Colin's updates, hooray!\nI want to see!\nSure! You can find today's updates to the code here on my git hosting!\nI don't want to look at code! Show me what changed for webring members!\nOh! Fair enough. None of today's updates affect how the webring looks or works at this time. It's more like setting up support infrastructure around the way the webring works now to make sure that nothing breaks unintentionally during future updates.\nDoes that mean changes are coming?\nMost likely! But all good stuff, I think. At the top of my list are:\nAutomating the \"gardener\" that checks whether active member sites have lost (or inactive members have regained!) their webring links.\n The directory page sure is getting unwieldy with so many profiles on there. It could use some improvements.\n General design and navigation cleanups.\n \n I've seen some interest in having the webring be a \"true ring\" - with deterministic next / previous links. I'm open to this but I want to keep it simple. (And I'll probably want to shake things up every once in a while!)\n \n\n I've seen some interest in using the active member sites on the webring as a \"Who to Follow\" for folks who are setting up their feed readers. I don't have it in me to maintain a \"planet\" feed that contains posts from everybody, but I could probably add some feed discovery so you can see which sites have clearly labeled feeds and maybe let you export an OPML list.\n \n Oh! And I keep wonderi-\n \n\nOkay! Okay.\nRight, haha. That's it, for now. As always, feel free to reply to this post on your own site, or feel free to drop me a line in the #indieweb chat (I\u2019m `schmarty` there).",
"html": "<p>Are you a member of the <a href=\"https://xn--sr8hvo.ws/\">\ud83d\udd78\ud83d\udc8d IndieWeb Webring</a>? Everything is fine! We are up to around 450 active sites, with more than 250 of those appearing on the <a href=\"https://xn--sr8hvo.ws/directory\">webring directory page</a>!</p>\n<h2>\n Okay so what is this update?\n <br /></h2>\n<p>Ha! Ha. Reader, you see right through me. Since the <a href=\"https://martymcgui.re/2023/05/20/rebooting--an-indieweb-webring/\">last IndieWeb Webring update</a>, an afficionado of IndieWeb, webrings, and PHP who goes by <a href=\"https://vonexplaino.com\">Von Explaino</a> (aka Colin) reached out about collaborating!</p>\n<p>He posted about his own updates in <a href=\"https://vonexplaino.com/blog/posts/article/2023/07/playing-with-indieweb-ring-s-code.html\">Playing with IndieWeb ring's code</a>, and <a href=\"https://martymcgui.re/2023/07/07/140423/\">I posted a follow-up with my interest</a>, and he <a href=\"https://github.com/colinmo/schmarty-gem-diamond\">shared his fork of the codebase</a> and <a href=\"https://vonexplaino.com/blog/posts/reply/2023/07/reply-playing-with-indieweb-ring-s-code.html\">posted some ideas for future work</a>. Look at this lovely back and forth discussion between our IndieWeb-powered sites! You love to see it.</p>\n<p>That all started in, =ahem=, <i>JULY OF 2023.</i> After a slow email exchange between a patient Colin and a very embarrassed and tired me promising to take a look any day now, I eventually apologized for not having the energy to work on the web ring that that time and around September we stopped corresponding.</p>\n<h2>The update is that there's no update?</h2>\n<p>No! Well, <i>sort of</i>? This weekend I finally made time to reading through Colin's updates and additions, especially focused around the PHPUnit tests that he added for the basic database logic and site fetching and parsing and link-finding code.</p>\n<p>The tl;dr is: I've incorporated most of Colin's updates, hooray!</p>\n<h2>I want to see!</h2>\n<p>Sure! You can find <a href=\"https://git.schmarty.net/schmarty/gem-diamond/compare/b33d076f...73ea51c6\">today's updates to the code here on my git hosting</a>!</p>\n<h2>I don't want to look at code! Show me what changed for webring members!</h2>\n<p>Oh! Fair enough. None of today's updates affect how the webring looks or works at this time. It's more like setting up support infrastructure around the way the webring works now to make sure that nothing breaks unintentionally during future updates.</p>\n<h2>Does that mean changes are coming?</h2>\n<p>Most likely! But all good stuff, I think. At the top of my list are:</p>\n<ul><li>Automating the \"gardener\" that checks whether active member sites have lost (or inactive members have regained!) their webring links.</li>\n <li>The directory page sure is getting unwieldy with so many profiles on there. It could use some improvements.</li>\n <li>General design and navigation cleanups.</li>\n <li>\n I've seen some interest in having the webring be a \"true ring\" - with deterministic next / previous links. I'm open to this but I want to keep it simple. (And I'll probably want to shake things up every once in a while!)\n <br /></li>\n <li>I've seen some interest in using the active member sites on the webring as a \"Who to Follow\" for folks who are setting up their feed readers. I don't have it in me to maintain a \"planet\" feed that contains posts from everybody, but I could probably add some feed discovery so you can see which sites have clearly labeled feeds and maybe let you export an OPML list.</li>\n <li>\n Oh! And I keep wonderi-\n <br /></li>\n</ul><h2>Okay! Okay.</h2>\n<p>Right, haha. That's it, for now. As always, feel free to <a href=\"https://indieweb.org/reply\">reply</a> to this post on your own site, or feel free to drop me a line in the <a href=\"https://chat.indieweb.org/\">#indieweb chat</a> (I\u2019m `schmarty` there).</p>"
},
"author": {
"type": "card",
"name": "Marty McGuire",
"url": "https://martymcgui.re/",
"photo": "https://martymcgui.re/images/logo.jpg"
},
"post-type": "article",
"_id": "41339031",
"_source": "175"
}