It's a good practice when developing user apps solo to finish and walk away fro a week or two, then come back and run it. You'll feel more like a user and less like the developer. Hopefully looking more critically at what the experience is like. Just did that for my new IG to blog export tool and found a list of things needing improvement. #indieweb #dev
{
"type": "entry",
"author": {
"name": "@meadowhawk",
"url": "https://indieweb.social/@meadowhawk",
"photo": null
},
"url": "https://indieweb.social/@meadowhawk/109878152493049923",
"content": {
"html": "<p>It's a good practice when developing user apps solo to finish and walk away fro a week or two, then come back and run it. You'll feel more like a user and less like the developer. Hopefully looking more critically at what the experience is like. Just did that for my new IG to blog export tool and found a list of things needing improvement. <a href=\"https://indieweb.social/tags/indieweb\">#<span>indieweb</span></a> <a href=\"https://indieweb.social/tags/dev\">#<span>dev</span></a></p>",
"text": "It's a good practice when developing user apps solo to finish and walk away fro a week or two, then come back and run it. You'll feel more like a user and less like the developer. Hopefully looking more critically at what the experience is like. Just did that for my new IG to blog export tool and found a list of things needing improvement. #indieweb #dev"
},
"published": "2023-02-17T04:19:11+00:00",
"post-type": "note",
"_id": "35210971",
"_source": "7235",
"_is_read": false
}
Nineteen years ago last Saturday, @KevinMarks.com & I introduced¹ #microformats @OReillyMedia ETech 2004, building on “semantic (x)html”.
We’ve come a long way since, from methodologies to #microformats2, from publishing to peer-to-peer #IndieWeb use-cases.
We named #microformats only after we had established a pattern of real world examples; even our talk proposal was named RealWorldSemantics², and provided examples in that broader theme.
This exemplified important implicit values in ordering our efforts:
1. get real world things working first, not just theory
2. name them after a pattern emerges, not just solo efforts
3. grow the pattern with proposals, prototypes, iteration, evolution
The examples at that point in time:
* XFN — using rel-values for blogroll semantics, and the technology that defined rel=me in v1.1³, now the standard for decentralized social media verification on Mastodon⁴, GitHub⁵, elsewhere, and the basis of RelMeAuth⁶
* XMDP — XHTML MetaData Profiles, notably using an HTML class⁷ with a particular value 'profile' to indicate presence of a specific semantic structure
* XOXO — XHTML Outlines, formalizing existing usage of (X)HTML elements for outlines, also using an HTML class with a particular value 'xoxo' to express a semantic
Growing the pattern:
* rel=license — solved page licensing better than before, since widespread adopted
* VoteLinks — new rel values, prototyped, only one consuming implementation (since defunct)
And further brainstorming:
* recommendations — initial rel="recommendation" idea eventually evolved to hReview, and today’s h-review
* syndication — helped motivate HTML5 <time> element, eventually led to hAtom, and today’s h-entry
* playlists — led to various ideas, proposals, & demos⁸, still not really solved today
The mid-2000s were a time of eager experimentation, when we were learning that very small bits of markup (yes, hence the name) could be used to build some very useful capabilities on top of the open web platform.
A few observations with the benefit of years of experience since we proposed “microformats”:
One: Many microformats succeeded because we solved an existing problem, with existing *complex* solutions, by providing a drastically *simpler* solution.
XFN instead of FOAF. rel=license instead of Creative Commons RDF in HTML comments.
By doing so, we skipped the often harder problem of defining & refining a problem worth solving, a use-case, or user scenario.
Two: A few microformats succeeded because they solved existing problems, re-using *existing established* open solutions in other formats, reformatted into native HTML.
hCard from vCard. hCalendar from iCalendar.
This methodology leveraged years of prior hard open standards work by numerous others across numerous organizations, and deliberately avoided the bikeshedding trap of renaming things (or any other kind of non-trivial “clean-up”) while reformatting, thus making it easy for developers of one technology to see the 1:1 mapping and use the other.
The primary downside with this approach was formats that were larger than perhaps necessary for HTML-specific use-cases.
Eventually for microformats2 vocabularies, we adopted a subset approach, looking for web publishing use-cases for each feature, making h-card smaller than hCard, and h-event smaller than hCalendar.
Three: Success in a search engine was not enough, and sometimes attracted more bad actors than good. @KevinMarks.com, myself, and others at Technorati built search engine indexing and use of rel-tag and hReview, which helped evolve their specifications. A few other small search engines indexed rel=tag markup, however none remain today. hReview was adopted by Google which led to it being heavily spammed.
This pattern repeated itself with other microformats, and eventually we shifted from:
→ of course search is the first obvious use-case
→ search is one use-case among others
→ we need primary use-cases outside of search for longterm ecosystem success
Which leads to the fourth observation.
Four: Publishing alone is not a use-case. There must be multiple consuming code use-cases (beyond search) for a microformat to succeed longterm.
From individual features to whole microformats vocabularies, we learned that not only did there need to be sufficient content being published already, without microformats, that could benefit, but there needed to be good enough consuming code use-cases that benefited users (not just developers). The #IndieWeb community has been exceptionally helpful in both defining such use-cases and iterating on them with implementations.
We still get questions of the form: What’s the best way to mark this up?
I used to very much believe that if you could mark something up more semantically, you should spend the time & effort to do so. This drove a lot of early experiments with markup, and did provide some eventual benefits, most notably when semantic HTML elements provided good hooks for accessibility tools such as screen readers.
Now we know the answer to the question of “How should I mark-up this content?” must be accompanied by specific use-cases for consuming code of that markup.
If there is no consuming code use-case, it is not worth the time to add the mark-up (never mind the maintenance effort over time).
Sometimes one single consuming code use-case is sufficient to justify the time & effort to add more semantic mark-up. If that markup helps screenreaders, then it’s worth it. More often than not however, there must be multiple (again, beyond search) consuming code use-cases for it to be worth adding semantic markup, and certainly for developing new markup, whether microformats features or new microformats.
This focus on and repeated asking of questions like:
* What is the (consuming code) use-case?
* Or how does it benefit readers of this content?
has helped focus our modern microformats efforts on actual benefits to humans first, and machines second (if at all).
If you think of IndieWeb use-cases for existing or new microformats, come join us in the developers chat:
* https://chat.indieweb.org/dev
If you think of other use-cases or want to chat about modern microformats methodologies in general, join us in the microformats chat:
* https://chat.indieweb.org/microformats
This is day 32 of #100DaysOfIndieWeb #100Days
← Day 31: https://tantek.com/2023/044/t1/unified-sent-box-universal-outbox
→ 🔮
Post glossary:
h-card
https://microformats.org/wiki/h-card
h-entry
https://microformats.org/wiki/h-entry
h-event
https://microformats.org/wiki/h-event
h-review
https://microformats.org/wiki/h-review
hAtom
https://microformats.org/wiki/hatom
hCalendar
https://microformats.org/wiki/hcalendar
hCard
https://microformats.org/wiki/hcard
hReview
https://microformats.org/wiki/hreview
rel-license
https://microformats.org/wiki/rel-license
rel-tag
https://microformats.org/wiki/rel-tag
rel-values
https://microformats.org/wiki/existing-rel-values
XFN
https://gmpg.org/xfn/
XMDP
http://gmpg.org/xmdp/description
XOXO
https://microformats.org/wiki/xoxo
Previously, previously, previously:
* https://tantek.com/2019/044/t1/15-years-ago-introduced-microformats
* https://tantek.com/2014/042/t2/ten-years-ago-introduced-microformats-etech
* https://tantek.com/2011/042/t2/years-ago-presented-microformats-etech
* https://twitter.com/t/status/701095802
References:
¹ https://tantek.com/presentations/2004etech/realworldsemanticspres.html
² https://tantek.com/log/2004/02.html#d04t1311
³ https://gmpg.org/xfn/11#me
⁴ https://docs.joinmastodon.org/user/profile/#verification
⁵ https://hachyderm.io/@nova/109790530971147702
⁶ https://tantek.com/2023/032/t1/years-relmeauth-replace-openid
⁷ https://tantek.com/2012/353/b1/why-html-classes-css-class-selectors
⁸ http://microformats.org/wiki/events/2007-12-11-open-media-web
{
"type": "entry",
"published": "2023-02-16 17:01-0800",
"url": "http://tantek.com/2023/047/t1/nineteen-years-microformats",
"category": [
"microformats",
"microformats2",
"IndieWeb",
"100DaysOfIndieWeb",
"100Days"
],
"content": {
"text": "Nineteen years ago last Saturday, @KevinMarks.com & I introduced\u00b9 #microformats @OReillyMedia ETech 2004, building on \u201csemantic (x)html\u201d.\n\nWe\u2019ve come a long way since, from methodologies to #microformats2, from publishing to peer-to-peer #IndieWeb use-cases.\n\nWe named #microformats only after we had established a pattern of real world examples; even our talk proposal was named RealWorldSemantics\u00b2, and provided examples in that broader theme.\n\nThis exemplified important implicit values in ordering our efforts:\n1. get real world things working first, not just theory\n2. name them after a pattern emerges, not just solo efforts\n3. grow the pattern with proposals, prototypes, iteration, evolution\n\nThe examples at that point in time:\n* XFN \u2014 using rel-values for blogroll semantics, and the technology that defined rel=me in v1.1\u00b3, now the standard for decentralized social media verification on Mastodon\u2074, GitHub\u2075, elsewhere, and the basis of RelMeAuth\u2076\n* XMDP \u2014 XHTML MetaData Profiles, notably using an HTML class\u2077 with a particular value 'profile' to indicate presence of a specific semantic structure\n* XOXO \u2014 XHTML Outlines, formalizing existing usage of (X)HTML elements for outlines, also using an HTML class with a particular value 'xoxo' to express a semantic\n\nGrowing the pattern:\n* rel=license \u2014 solved page licensing better than before, since widespread adopted\n* VoteLinks \u2014 new rel values, prototyped, only one consuming implementation (since defunct)\n\nAnd further brainstorming:\n* recommendations \u2014 initial rel=\"recommendation\" idea eventually evolved to hReview, and today\u2019s h-review\n* syndication \u2014 helped motivate HTML5 <time> element, eventually led to hAtom, and today\u2019s h-entry\n* playlists \u2014 led to various ideas, proposals, & demos\u2078, still not really solved today\n\n\nThe mid-2000s were a time of eager experimentation, when we were learning that very small bits of markup (yes, hence the name) could be used to build some very useful capabilities on top of the open web platform.\n\nA few observations with the benefit of years of experience since we proposed \u201cmicroformats\u201d:\n\n\nOne: Many microformats succeeded because we solved an existing problem, with existing *complex* solutions, by providing a drastically *simpler* solution.\n\nXFN instead of FOAF. rel=license instead of Creative Commons RDF in HTML comments.\n\nBy doing so, we skipped the often harder problem of defining & refining a problem worth solving, a use-case, or user scenario.\n\n\nTwo: A few microformats succeeded because they solved existing problems, re-using *existing established* open solutions in other formats, reformatted into native HTML.\n\nhCard from vCard. hCalendar from iCalendar.\n\nThis methodology leveraged years of prior hard open standards work by numerous others across numerous organizations, and deliberately avoided the bikeshedding trap of renaming things (or any other kind of non-trivial \u201cclean-up\u201d) while reformatting, thus making it easy for developers of one technology to see the 1:1 mapping and use the other.\n\nThe primary downside with this approach was formats that were larger than perhaps necessary for HTML-specific use-cases.\n\nEventually for microformats2 vocabularies, we adopted a subset approach, looking for web publishing use-cases for each feature, making h-card smaller than hCard, and h-event smaller than hCalendar.\n\n\nThree: Success in a search engine was not enough, and sometimes attracted more bad actors than good. @KevinMarks.com, myself, and others at Technorati built search engine indexing and use of rel-tag and hReview, which helped evolve their specifications. A few other small search engines indexed rel=tag markup, however none remain today. hReview was adopted by Google which led to it being heavily spammed.\n\nThis pattern repeated itself with other microformats, and eventually we shifted from:\n\u2192 of course search is the first obvious use-case\n\u2192 search is one use-case among others\n\u2192 we need primary use-cases outside of search for longterm ecosystem success\nWhich leads to the fourth observation.\n\n\nFour: Publishing alone is not a use-case. There must be multiple consuming code use-cases (beyond search) for a microformat to succeed longterm.\n\nFrom individual features to whole microformats vocabularies, we learned that not only did there need to be sufficient content being published already, without microformats, that could benefit, but there needed to be good enough consuming code use-cases that benefited users (not just developers). The #IndieWeb community has been exceptionally helpful in both defining such use-cases and iterating on them with implementations.\n\nWe still get questions of the form: What\u2019s the best way to mark this up?\n\nI used to very much believe that if you could mark something up more semantically, you should spend the time & effort to do so. This drove a lot of early experiments with markup, and did provide some eventual benefits, most notably when semantic HTML elements provided good hooks for accessibility tools such as screen readers.\n\nNow we know the answer to the question of \u201cHow should I mark-up this content?\u201d must be accompanied by specific use-cases for consuming code of that markup. \n\nIf there is no consuming code use-case, it is not worth the time to add the mark-up (never mind the maintenance effort over time).\n\nSometimes one single consuming code use-case is sufficient to justify the time & effort to add more semantic mark-up. If that markup helps screenreaders, then it\u2019s worth it. More often than not however, there must be multiple (again, beyond search) consuming code use-cases for it to be worth adding semantic markup, and certainly for developing new markup, whether microformats features or new microformats.\n\n\nThis focus on and repeated asking of questions like:\n* What is the (consuming code) use-case? \n* Or how does it benefit readers of this content?\nhas helped focus our modern microformats efforts on actual benefits to humans first, and machines second (if at all).\n\n\nIf you think of IndieWeb use-cases for existing or new microformats, come join us in the developers chat:\n* https://chat.indieweb.org/dev\n\nIf you think of other use-cases or want to chat about modern microformats methodologies in general, join us in the microformats chat:\n* https://chat.indieweb.org/microformats\n\n\nThis is day 32 of #100DaysOfIndieWeb #100Days\n\n\u2190 Day 31: https://tantek.com/2023/044/t1/unified-sent-box-universal-outbox\n\u2192 \ud83d\udd2e\n\n\nPost glossary:\n\nh-card\n\u00a0https://microformats.org/wiki/h-card\nh-entry\n\u00a0https://microformats.org/wiki/h-entry\nh-event\n\u00a0https://microformats.org/wiki/h-event\nh-review\n\u00a0https://microformats.org/wiki/h-review\nhAtom\n\u00a0https://microformats.org/wiki/hatom\nhCalendar\n\u00a0https://microformats.org/wiki/hcalendar\nhCard\n\u00a0https://microformats.org/wiki/hcard\nhReview\n\u00a0https://microformats.org/wiki/hreview\nrel-license\n\u00a0https://microformats.org/wiki/rel-license\nrel-tag\n\u00a0https://microformats.org/wiki/rel-tag\nrel-values\n\u00a0https://microformats.org/wiki/existing-rel-values\nXFN\n\u00a0https://gmpg.org/xfn/\nXMDP\n\u00a0http://gmpg.org/xmdp/description\nXOXO\n\u00a0https://microformats.org/wiki/xoxo\n\n\nPreviously, previously, previously:\n* https://tantek.com/2019/044/t1/15-years-ago-introduced-microformats\n* https://tantek.com/2014/042/t2/ten-years-ago-introduced-microformats-etech\n* https://tantek.com/2011/042/t2/years-ago-presented-microformats-etech\n* https://twitter.com/t/status/701095802\n\n\nReferences:\n\u00b9 https://tantek.com/presentations/2004etech/realworldsemanticspres.html\n\u00b2 https://tantek.com/log/2004/02.html#d04t1311\n\u00b3 https://gmpg.org/xfn/11#me\n\u2074 https://docs.joinmastodon.org/user/profile/#verification\n\u2075 https://hachyderm.io/@nova/109790530971147702\n\u2076 https://tantek.com/2023/032/t1/years-relmeauth-replace-openid\n\u2077 https://tantek.com/2012/353/b1/why-html-classes-css-class-selectors\n\u2078 http://microformats.org/wiki/events/2007-12-11-open-media-web",
"html": "Nineteen years ago last Saturday, <a href=\"https://KevinMarks.com\">@KevinMarks.com</a> & I introduced<a href=\"http://tantek.com/#t5PQ1_note-1\">\u00b9</a> #<span class=\"p-category\">microformats</span> <a class=\"h-cassis-username\" href=\"https://twitter.com/OReillyMedia\">@OReillyMedia</a> ETech 2004, building on \u201csemantic (x)html\u201d.<br /><br />We\u2019ve come a long way since, from methodologies to #<span class=\"p-category\">microformats2</span>, from publishing to peer-to-peer #<span class=\"p-category\">IndieWeb</span> use-cases.<br /><br />We named #<span class=\"p-category\">microformats</span> only after we had established a pattern of real world examples; even our talk proposal was named RealWorldSemantics<a href=\"http://tantek.com/#t5PQ1_note-2\">\u00b2</a>, and provided examples in that broader theme.<br /><br />This exemplified important implicit values in ordering our efforts:<br />1. get real world things working first, not just theory<br />2. name them after a pattern emerges, not just solo efforts<br />3. grow the pattern with proposals, prototypes, iteration, evolution<br /><br />The examples at that point in time:<br />* XFN \u2014 using rel-values for blogroll semantics, and the technology that defined rel=me in v1.1<a href=\"http://tantek.com/#t5PQ1_note-3\">\u00b3</a>, now the standard for decentralized social media verification on Mastodon<a href=\"http://tantek.com/#t5PQ1_note-4\">\u2074</a>, GitHub<a href=\"http://tantek.com/#t5PQ1_note-5\">\u2075</a>, elsewhere, and the basis of RelMeAuth<a href=\"http://tantek.com/#t5PQ1_note-6\">\u2076</a><br />* XMDP \u2014 XHTML MetaData Profiles, notably using an HTML class<a href=\"http://tantek.com/#t5PQ1_note-7\">\u2077</a> with a particular value 'profile' to indicate presence of a specific semantic structure<br />* XOXO \u2014 XHTML Outlines, formalizing existing usage of (X)HTML elements for outlines, also using an HTML class with a particular value 'xoxo' to express a semantic<br /><br />Growing the pattern:<br />* rel=license \u2014 solved page licensing better than before, since widespread adopted<br />* VoteLinks \u2014 new rel values, prototyped, only one consuming implementation (since defunct)<br /><br />And further brainstorming:<br />* recommendations \u2014 initial rel=\"recommendation\" idea eventually evolved to hReview, and today\u2019s h-review<br />* syndication \u2014 helped motivate HTML5 <time> element, eventually led to hAtom, and today\u2019s h-entry<br />* playlists \u2014 led to various ideas, proposals, & demos<a href=\"http://tantek.com/#t5PQ1_note-8\">\u2078</a>, still not really solved today<br /><br /><br />The mid-2000s were a time of eager experimentation, when we were learning that very small bits of markup (yes, hence the name) could be used to build some very useful capabilities on top of the open web platform.<br /><br />A few observations with the benefit of years of experience since we proposed \u201cmicroformats\u201d:<br /><br /><br />One: Many microformats succeeded because we solved an existing problem, with existing *complex* solutions, by providing a drastically *simpler* solution.<br /><br />XFN instead of FOAF. rel=license instead of Creative Commons RDF in HTML comments.<br /><br />By doing so, we skipped the often harder problem of defining & refining a problem worth solving, a use-case, or user scenario.<br /><br /><br />Two: A few microformats succeeded because they solved existing problems, re-using *existing established* open solutions in other formats, reformatted into native HTML.<br /><br />hCard from vCard. hCalendar from iCalendar.<br /><br />This methodology leveraged years of prior hard open standards work by numerous others across numerous organizations, and deliberately avoided the bikeshedding trap of renaming things (or any other kind of non-trivial \u201cclean-up\u201d) while reformatting, thus making it easy for developers of one technology to see the 1:1 mapping and use the other.<br /><br />The primary downside with this approach was formats that were larger than perhaps necessary for HTML-specific use-cases.<br /><br />Eventually for microformats2 vocabularies, we adopted a subset approach, looking for web publishing use-cases for each feature, making h-card smaller than hCard, and h-event smaller than hCalendar.<br /><br /><br />Three: Success in a search engine was not enough, and sometimes attracted more bad actors than good. <a href=\"https://KevinMarks.com\">@KevinMarks.com</a>, myself, and others at Technorati built search engine indexing and use of rel-tag and hReview, which helped evolve their specifications. A few other small search engines indexed rel=tag markup, however none remain today. hReview was adopted by Google which led to it being heavily spammed.<br /><br />This pattern repeated itself with other microformats, and eventually we shifted from:<br />\u2192 of course search is the first obvious use-case<br />\u2192 search is one use-case among others<br />\u2192 we need primary use-cases outside of search for longterm ecosystem success<br />Which leads to the fourth observation.<br /><br /><br />Four: Publishing alone is not a use-case. There must be multiple consuming code use-cases (beyond search) for a microformat to succeed longterm.<br /><br />From individual features to whole microformats vocabularies, we learned that not only did there need to be sufficient content being published already, without microformats, that could benefit, but there needed to be good enough consuming code use-cases that benefited users (not just developers). The #<span class=\"p-category\">IndieWeb</span> community has been exceptionally helpful in both defining such use-cases and iterating on them with implementations.<br /><br />We still get questions of the form: What\u2019s the best way to mark this up?<br /><br />I used to very much believe that if you could mark something up more semantically, you should spend the time & effort to do so. This drove a lot of early experiments with markup, and did provide some eventual benefits, most notably when semantic HTML elements provided good hooks for accessibility tools such as screen readers.<br /><br />Now we know the answer to the question of \u201cHow should I mark-up this content?\u201d must be accompanied by specific use-cases for consuming code of that markup. <br /><br />If there is no consuming code use-case, it is not worth the time to add the mark-up (never mind the maintenance effort over time).<br /><br />Sometimes one single consuming code use-case is sufficient to justify the time & effort to add more semantic mark-up. If that markup helps screenreaders, then it\u2019s worth it. More often than not however, there must be multiple (again, beyond search) consuming code use-cases for it to be worth adding semantic markup, and certainly for developing new markup, whether microformats features or new microformats.<br /><br /><br />This focus on and repeated asking of questions like:<br />* What is the (consuming code) use-case? <br />* Or how does it benefit readers of this content?<br />has helped focus our modern microformats efforts on actual benefits to humans first, and machines second (if at all).<br /><br /><br />If you think of IndieWeb use-cases for existing or new microformats, come join us in the developers chat:<br />* <a href=\"https://chat.indieweb.org/dev\">https://chat.indieweb.org/dev</a><br /><br />If you think of other use-cases or want to chat about modern microformats methodologies in general, join us in the microformats chat:<br />* <a href=\"https://chat.indieweb.org/microformats\">https://chat.indieweb.org/microformats</a><br /><br /><br />This is day 32 of #<span class=\"p-category\">100DaysOfIndieWeb</span> #<span class=\"p-category\">100Days</span><br /><br />\u2190 Day 31: <a href=\"https://tantek.com/2023/044/t1/unified-sent-box-universal-outbox\">https://tantek.com/2023/044/t1/unified-sent-box-universal-outbox</a><br />\u2192 \ud83d\udd2e<br /><br /><br />Post glossary:<br /><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-event<br />\u00a0<a href=\"https://microformats.org/wiki/h-event\">https://microformats.org/wiki/h-event</a><br />h-review<br />\u00a0<a href=\"https://microformats.org/wiki/h-review\">https://microformats.org/wiki/h-review</a><br />hAtom<br />\u00a0<a href=\"https://microformats.org/wiki/hatom\">https://microformats.org/wiki/hatom</a><br />hCalendar<br />\u00a0<a href=\"https://microformats.org/wiki/hcalendar\">https://microformats.org/wiki/hcalendar</a><br />hCard<br />\u00a0<a href=\"https://microformats.org/wiki/hcard\">https://microformats.org/wiki/hcard</a><br />hReview<br />\u00a0<a href=\"https://microformats.org/wiki/hreview\">https://microformats.org/wiki/hreview</a><br />rel-license<br />\u00a0<a href=\"https://microformats.org/wiki/rel-license\">https://microformats.org/wiki/rel-license</a><br />rel-tag<br />\u00a0<a href=\"https://microformats.org/wiki/rel-tag\">https://microformats.org/wiki/rel-tag</a><br />rel-values<br />\u00a0<a href=\"https://microformats.org/wiki/existing-rel-values\">https://microformats.org/wiki/existing-rel-values</a><br />XFN<br />\u00a0<a href=\"https://gmpg.org/xfn/\">https://gmpg.org/xfn/</a><br />XMDP<br />\u00a0<a href=\"http://gmpg.org/xmdp/description\">http://gmpg.org/xmdp/description</a><br />XOXO<br />\u00a0<a href=\"https://microformats.org/wiki/xoxo\">https://microformats.org/wiki/xoxo</a><br /><br /><br />Previously, previously, previously:<br />* <a href=\"https://tantek.com/2019/044/t1/15-years-ago-introduced-microformats\">https://tantek.com/2019/044/t1/15-years-ago-introduced-microformats</a><br />* <a href=\"https://tantek.com/2014/042/t2/ten-years-ago-introduced-microformats-etech\">https://tantek.com/2014/042/t2/ten-years-ago-introduced-microformats-etech</a><br />* <a href=\"https://tantek.com/2011/042/t2/years-ago-presented-microformats-etech\">https://tantek.com/2011/042/t2/years-ago-presented-microformats-etech</a><br />* <a href=\"https://twitter.com/t/status/701095802\">https://twitter.com/t/status/701095802</a><br /><br /><br />References:<br /><a href=\"http://tantek.com/#t5PQ1_ref-1\">\u00b9</a> <a href=\"https://tantek.com/presentations/2004etech/realworldsemanticspres.html\">https://tantek.com/presentations/2004etech/realworldsemanticspres.html</a><br /><a href=\"http://tantek.com/#t5PQ1_ref-2\">\u00b2</a> <a href=\"https://tantek.com/log/2004/02.html#d04t1311\">https://tantek.com/log/2004/02.html#d04t1311</a><br /><a href=\"http://tantek.com/#t5PQ1_ref-3\">\u00b3</a> <a href=\"https://gmpg.org/xfn/11#me\">https://gmpg.org/xfn/11#me</a><br /><a href=\"http://tantek.com/#t5PQ1_ref-4\">\u2074</a> <a href=\"https://docs.joinmastodon.org/user/profile/#verification\">https://docs.joinmastodon.org/user/profile/#verification</a><br /><a href=\"http://tantek.com/#t5PQ1_ref-5\">\u2075</a> <a href=\"https://hachyderm.io/@nova/109790530971147702\">https://hachyderm.io/@nova/109790530971147702</a><br /><a href=\"http://tantek.com/#t5PQ1_ref-6\">\u2076</a> <a href=\"https://tantek.com/2023/032/t1/years-relmeauth-replace-openid\">https://tantek.com/2023/032/t1/years-relmeauth-replace-openid</a><br /><a href=\"http://tantek.com/#t5PQ1_ref-7\">\u2077</a> <a href=\"https://tantek.com/2012/353/b1/why-html-classes-css-class-selectors\">https://tantek.com/2012/353/b1/why-html-classes-css-class-selectors</a><br /><a href=\"http://tantek.com/#t5PQ1_ref-8\">\u2078</a> <a href=\"http://microformats.org/wiki/events/2007-12-11-open-media-web\">http://microformats.org/wiki/events/2007-12-11-open-media-web</a>"
},
"author": {
"type": "card",
"name": "Tantek \u00c7elik",
"url": "http://tantek.com/",
"photo": "https://aperture-media.p3k.io/tantek.com/acfddd7d8b2c8cf8aa163651432cc1ec7eb8ec2f881942dca963d305eeaaa6b8.jpg"
},
"post-type": "note",
"_id": "35210323",
"_source": "1",
"_is_read": false
}
@liztai Sorry you had to go through that. You handled it well, and I hope that you do feel free to express yourself however you want! I enjoy your posts so hope you can find your #IndieWeb spirit again.
{
"type": "entry",
"author": {
"name": "@box464",
"url": "https://mastodon.social/@box464",
"photo": null
},
"url": "https://mastodon.social/@box464/109877582719885178",
"content": {
"html": "<p><span class=\"h-card\"><a class=\"u-url\" href=\"https://hachyderm.io/@liztai\">@<span>liztai</span></a></span> Sorry you had to go through that. You handled it well, and I hope that you do feel free to express yourself however you want! I enjoy your posts so hope you can find your <a href=\"https://mastodon.social/tags/IndieWeb\">#<span>IndieWeb</span></a> spirit again.</p>",
"text": "@liztai Sorry you had to go through that. You handled it well, and I hope that you do feel free to express yourself however you want! I enjoy your posts so hope you can find your #IndieWeb spirit again."
},
"published": "2023-02-17T01:54:17+00:00",
"post-type": "note",
"_id": "35208966",
"_source": "7235",
"_is_read": false
}
@liztai Hey, what has been happening? I certainly understand the need to build something within the context of the #indieweb.
{
"type": "entry",
"author": {
"name": "@spearmintwarlock",
"url": "https://aus.social/@spearmintwarlock",
"photo": null
},
"url": "https://aus.social/@spearmintwarlock/109877552257106722",
"content": {
"html": "<p><span class=\"h-card\"><a class=\"u-url\" href=\"https://hachyderm.io/@liztai\">@<span>liztai</span></a></span> Hey, what has been happening? I certainly understand the need to build something within the context of the <a href=\"https://aus.social/tags/indieweb\">#<span>indieweb</span></a>.</p>",
"text": "@liztai Hey, what has been happening? I certainly understand the need to build something within the context of the #indieweb."
},
"published": "2023-02-17T01:46:32+00:00",
"post-type": "note",
"_id": "35208967",
"_source": "7235",
"_is_read": false
}
@adam @noellemitchell Yeah, that looks cool! I am going to use wordpress.com, however, so I used brid.gy instead to implement it. Maybe one day, when I have bandiwdth to once again have a self hosted space. Just glad that the #IndieWeb wizards created it for us!
{
"type": "entry",
"author": {
"name": "@liztai",
"url": "https://hachyderm.io/@liztai",
"photo": null
},
"url": "https://hachyderm.io/@liztai/109877407224077585",
"content": {
"html": "<p><span class=\"h-card\"><a class=\"u-url\" href=\"https://ruby.social/@adam\">@<span>adam</span></a></span> <span class=\"h-card\"><a class=\"u-url\" href=\"https://mstdn.social/@noellemitchell\">@<span>noellemitchell</span></a></span> Yeah, that looks cool! I am going to use wordpress.com, however, so I used brid.gy instead to implement it. Maybe one day, when I have bandiwdth to once again have a self hosted space. Just glad that the <a href=\"https://hachyderm.io/tags/IndieWeb\">#<span>IndieWeb</span></a> wizards created it for us!</p>",
"text": "@adam @noellemitchell Yeah, that looks cool! I am going to use wordpress.com, however, so I used brid.gy instead to implement it. Maybe one day, when I have bandiwdth to once again have a self hosted space. Just glad that the #IndieWeb wizards created it for us!"
},
"published": "2023-02-17T01:09:39+00:00",
"post-type": "note",
"_id": "35208309",
"_source": "7235",
"_is_read": false
}
I've always been a strong advocate for speaking up ... so this stance is something I don't really want to support, but I undertsand the physical, mental and even, monetary cost of speaking up. Oh well. If anything, this has been a good lesson in how important #IndieWeb is, and how I need to own the spaces I dwell online. I love #Mastodon but it's time to build my website :)
#POSSE - so that if those spaces are taken away, we still have our home.
{
"type": "entry",
"author": {
"name": "@liztai",
"url": "https://hachyderm.io/@liztai",
"photo": null
},
"url": "https://hachyderm.io/@liztai/109877392421652795",
"content": {
"html": "<p>I've always been a strong advocate for speaking up ... so this stance is something I don't really want to support, but I undertsand the physical, mental and even, monetary cost of speaking up. Oh well. If anything, this has been a good lesson in how important <a href=\"https://hachyderm.io/tags/IndieWeb\">#<span>IndieWeb</span></a> is, and how I need to own the spaces I dwell online. I love <a href=\"https://hachyderm.io/tags/Mastodon\">#<span>Mastodon</span></a> but it's time to build my website :)<br /><a href=\"https://hachyderm.io/tags/POSSE\">#<span>POSSE</span></a> - so that if those spaces are taken away, we still have our home.</p>",
"text": "I've always been a strong advocate for speaking up ... so this stance is something I don't really want to support, but I undertsand the physical, mental and even, monetary cost of speaking up. Oh well. If anything, this has been a good lesson in how important #IndieWeb is, and how I need to own the spaces I dwell online. I love #Mastodon but it's time to build my website :)\n#POSSE - so that if those spaces are taken away, we still have our home."
},
"published": "2023-02-17T01:05:53+00:00",
"post-type": "note",
"_id": "35208310",
"_source": "7235",
"_is_read": false
}
Thanks to @tchambers for introducing me to the concept of #calmtech. Along with the #IndieWeb, what initially seems to be going back is actually a great route to go forward. Totally on board this. https://calmtech.com
{
"type": "entry",
"author": {
"name": "@roadup",
"url": "https://indieweb.social/@roadup",
"photo": null
},
"url": "https://indieweb.social/@roadup/109877347174588665",
"content": {
"html": "<p>Thanks to <span class=\"h-card\"><a class=\"u-url\" href=\"https://indieweb.social/@tchambers\">@<span>tchambers</span></a></span> for introducing me to the concept of <a href=\"https://indieweb.social/tags/calmtech\">#<span>calmtech</span></a>. Along with the <a href=\"https://indieweb.social/tags/IndieWeb\">#<span>IndieWeb</span></a>, what initially seems to be going back is actually a great route to go forward. Totally on board this. <a href=\"https://calmtech.com\"><span>https://</span><span>calmtech.com</span><span></span></a></p>",
"text": "Thanks to @tchambers for introducing me to the concept of #calmtech. Along with the #IndieWeb, what initially seems to be going back is actually a great route to go forward. Totally on board this. https://calmtech.com"
},
"published": "2023-02-17T00:54:23+00:00",
"post-type": "note",
"_id": "35208029",
"_source": "7235",
"_is_read": false
}
Writing blog posts in a foreign language is really hard. I struggle so much to find the right words. It always sounds … kind of hacky!? #IndieWeb #WorkInProgress
{
"type": "entry",
"author": {
"name": "@flokosiol",
"url": "https://mastodon.social/@flokosiol",
"photo": null
},
"url": "https://mastodon.social/@flokosiol/109876918141455118",
"content": {
"html": "<p>Writing blog posts in a foreign language is really hard. I struggle so much to find the right words. It always sounds \u2026 kind of hacky!? <a href=\"https://mastodon.social/tags/IndieWeb\">#<span>IndieWeb</span></a> <a href=\"https://mastodon.social/tags/WorkInProgress\">#<span>WorkInProgress</span></a></p>",
"text": "Writing blog posts in a foreign language is really hard. I struggle so much to find the right words. It always sounds \u2026 kind of hacky!? #IndieWeb #WorkInProgress"
},
"published": "2023-02-16T23:05:16+00:00",
"post-type": "note",
"_id": "35206097",
"_source": "7235",
"_is_read": false
}
Free and Cheap Things to do in Philly!
less than or equal to $15
Thanks to @jag for suggesting some food distros
https://www.pixouls.xyz/philly.html
#philadelphia #philly #thingsToDo #indieWeb
{
"type": "entry",
"author": {
"name": "@pixouls",
"url": "https://post.lurk.org/@pixouls",
"photo": null
},
"url": "https://post.lurk.org/@pixouls/109876175940371443",
"content": {
"html": "<p>Free and Cheap Things to do in Philly!<br />less than or equal to $15</p><p>Thanks to <span class=\"h-card\"><a class=\"u-url\" href=\"https://weirder.earth/@jag\">@<span>jag</span></a></span> for suggesting some food distros</p><p><a href=\"https://www.pixouls.xyz/philly.html\"><span>https://www.</span><span>pixouls.xyz/philly.html</span><span></span></a></p><p><a href=\"https://post.lurk.org/tags/philadelphia\">#<span>philadelphia</span></a> <a href=\"https://post.lurk.org/tags/philly\">#<span>philly</span></a> <a href=\"https://post.lurk.org/tags/thingsToDo\">#<span>thingsToDo</span></a> <a href=\"https://post.lurk.org/tags/indieWeb\">#<span>indieWeb</span></a></p>",
"text": "Free and Cheap Things to do in Philly!\nless than or equal to $15Thanks to @jag for suggesting some food distroshttps://www.pixouls.xyz/philly.html#philadelphia #philly #thingsToDo #indieWeb"
},
"published": "2023-02-16T19:56:31+00:00",
"post-type": "note",
"_id": "35202329",
"_source": "7235",
"_is_read": false
}
(2 of X)
...We intend to stick around for the long run and see where this Federated, openweb social movement may take us all.
From its beginning, its objective has been to provide a venue for creators of #indieweb, #fediverse, and #decentralized technology to cross-pollinate, as well as a place for regular people seeking a calmtech, openweb, sociable online existence....
Due to your generosity, we are in a stable and solvent position, and there is no danger of our demise....
{
"type": "entry",
"author": {
"name": "@tchambers",
"url": "https://indieweb.social/@tchambers",
"photo": null
},
"url": "https://indieweb.social/@tchambers/109876170340776709",
"content": {
"html": "<p>(2 of X)</p><p>...We intend to stick around for the long run and see where this Federated, openweb social movement may take us all.</p><p>From its beginning, its objective has been to provide a venue for creators of <a href=\"https://indieweb.social/tags/indieweb\">#<span>indieweb</span></a>, <a href=\"https://indieweb.social/tags/fediverse\">#<span>fediverse</span></a>, and <a href=\"https://indieweb.social/tags/decentralized\">#<span>decentralized</span></a> technology to cross-pollinate, as well as a place for regular people seeking a calmtech, openweb, sociable online existence....</p><p>Due to your generosity, we are in a stable and solvent position, and there is no danger of our demise....</p>",
"text": "(2 of X)...We intend to stick around for the long run and see where this Federated, openweb social movement may take us all.From its beginning, its objective has been to provide a venue for creators of #indieweb, #fediverse, and #decentralized technology to cross-pollinate, as well as a place for regular people seeking a calmtech, openweb, sociable online existence....Due to your generosity, we are in a stable and solvent position, and there is no danger of our demise...."
},
"published": "2023-02-16T19:55:06+00:00",
"post-type": "note",
"_id": "35202330",
"_source": "7235",
"_is_read": false
}
This is an interesting little blogging tool: it turns a folder of notes on your Mac into a website.
- Create dedicated folder in the Apple Notes.
- Connect it to Montaigne.
- Add notes with your content.
- Everything will be published to the web automatically.
{
"type": "entry",
"published": "2023-02-16T18:27:02Z",
"url": "https://adactio.com/links/19910",
"category": [
"blogging",
"blogs",
"indieweb",
"personal",
"publishing",
"montaigne",
"apple",
"notes",
"mac"
],
"bookmark-of": [
"https://montaigne.io/"
],
"content": {
"text": "Montaigne\n\n\n\nThis is an interesting little blogging tool: it turns a folder of notes on your Mac into a website.\n\n\n Create dedicated folder in the Apple Notes.\n Connect it to Montaigne.\n Add notes with your content.\n Everything will be published to the web automatically.",
"html": "<h3>\n<a class=\"p-name u-bookmark-of\" href=\"https://montaigne.io/\">\nMontaigne\n</a>\n</h3>\n\n<p>This is an interesting little blogging tool: it turns a folder of notes on your Mac into a website.</p>\n\n<blockquote>\n <ol><li>Create dedicated folder in the Apple Notes.</li>\n <li>Connect it to Montaigne.</li>\n <li>Add notes with your content.</li>\n <li>Everything will be published to the web automatically.</li>\n </ol></blockquote>"
},
"author": {
"type": "card",
"name": "Jeremy Keith",
"url": "https://adactio.com/",
"photo": "https://adactio.com/images/photo-150.jpg"
},
"post-type": "bookmark",
"_id": "35199686",
"_source": "2",
"_is_read": false
}
It’s darn hard to set up a somewhat user-friendly #indieweb service.
Interoperability with some protocols requires you mix markup (i.e., microformats) with content.
The idea behind it was “DRY,” like, cut out the “metacrap,” have your HTML be the single source of truth, the one API you’ll ever need, and so on. Refreshingly simple, but it’s a bit of a pain even to seasoned web developers. (“Simple, but not easy.”)
Either way, it’s not easy building an intuitive interface that does all that
{
"type": "entry",
"author": {
"name": "@janboddez",
"url": "https://indieweb.social/@janboddez",
"photo": null
},
"url": "https://indieweb.social/@janboddez/109875310497360757",
"content": {
"html": "<p>It\u2019s darn hard to set up a somewhat user-friendly <a href=\"https://indieweb.social/tags/indieweb\">#<span>indieweb</span></a> service.</p><p>Interoperability with some protocols requires you mix markup (i.e., microformats) with content.</p><p>The idea behind it was \u201cDRY,\u201d like, cut out the \u201cmetacrap,\u201d have your HTML be the single source of truth, the one API you\u2019ll ever need, and so on. Refreshingly simple, but it\u2019s a bit of a pain even to seasoned web developers. (\u201cSimple, but not easy.\u201d)</p><p>Either way, it\u2019s not easy building an intuitive interface that does all that</p>",
"text": "It\u2019s darn hard to set up a somewhat user-friendly #indieweb service.Interoperability with some protocols requires you mix markup (i.e., microformats) with content.The idea behind it was \u201cDRY,\u201d like, cut out the \u201cmetacrap,\u201d have your HTML be the single source of truth, the one API you\u2019ll ever need, and so on. Refreshingly simple, but it\u2019s a bit of a pain even to seasoned web developers. (\u201cSimple, but not easy.\u201d)Either way, it\u2019s not easy building an intuitive interface that does all that"
},
"published": "2023-02-16T16:16:26+00:00",
"post-type": "note",
"_id": "35197386",
"_source": "7235",
"_is_read": false
}
Are there any self-hosted versions of Pinboard (which is like del.icio.us used to be)?
I used to use Scuttle long ago... I see there is SemanticScuttle, last updated 10 years ago(!)
Pinboard is great but I don't use it for discovery, just saving my own stuff.
So really I want a self-hosted bookmarking system. (Preferably on a LAMP stack.)
#bookmarks #indieWeb #openWeb #browser
{
"type": "entry",
"author": {
"name": "@rasterweb",
"url": "https://mastodon.social/@rasterweb",
"photo": null
},
"url": "https://mastodon.social/@rasterweb/109875146163388721",
"content": {
"html": "<p>Are there any self-hosted versions of Pinboard (which is like del.icio.us used to be)? </p><p>I used to use Scuttle long ago... I see there is SemanticScuttle, last updated 10 years ago(!)</p><p>Pinboard is great but I don't use it for discovery, just saving my own stuff.</p><p>So really I want a self-hosted bookmarking system. (Preferably on a LAMP stack.)</p><p><a href=\"https://mastodon.social/tags/bookmarks\">#<span>bookmarks</span></a> <a href=\"https://mastodon.social/tags/indieWeb\">#<span>indieWeb</span></a> <a href=\"https://mastodon.social/tags/openWeb\">#<span>openWeb</span></a> <a href=\"https://mastodon.social/tags/browser\">#<span>browser</span></a></p>",
"text": "Are there any self-hosted versions of Pinboard (which is like del.icio.us used to be)? I used to use Scuttle long ago... I see there is SemanticScuttle, last updated 10 years ago(!)Pinboard is great but I don't use it for discovery, just saving my own stuff.So really I want a self-hosted bookmarking system. (Preferably on a LAMP stack.)#bookmarks #indieWeb #openWeb #browser"
},
"published": "2023-02-16T15:34:38+00:00",
"post-type": "note",
"_id": "35195930",
"_source": "7235",
"_is_read": false
}
@madargon There is a whole movement dedicated to owning your content, publishing it on your own site, and syndicating it elsewhere called #IndieWeb
You can read more about it at indieweb.org
@liztai @noellemitchell
{
"type": "entry",
"author": {
"name": "#indieweb",
"url": "https://mastodon.social/tags/indieweb",
"photo": null
},
"url": "https://social.damianwajer.com/display/7b9e6109-3763-eddb-333d-c1a505548749",
"content": {
"html": "<span class=\"h-card\"><a class=\"u-url\" href=\"https://is-a.cat/users/madargon\">@<span>madargon</span></a></span> There is a whole movement dedicated to owning your content, publishing it on your own site, and syndicating it elsewhere called <a href=\"https://social.damianwajer.com/search?tag=IndieWeb\">#<span>IndieWeb</span></a><br /><br />You can read more about it at <a href=\"https://indieweb.org\">indieweb.org</a><br /><br /><span class=\"h-card\"><a class=\"u-url\" href=\"https://hachyderm.io/users/liztai\">@<span>liztai</span></a></span> <span class=\"h-card\"><a class=\"u-url\" href=\"https://mstdn.social/users/noellemitchell\">@<span>noellemitchell</span></a></span>",
"text": "@madargon There is a whole movement dedicated to owning your content, publishing it on your own site, and syndicating it elsewhere called #IndieWeb\n\nYou can read more about it at indieweb.org\n\n@liztai @noellemitchell"
},
"published": "2023-02-16T07:28:51+00:00",
"post-type": "note",
"_id": "35186838",
"_source": "7235",
"_is_read": false
}
{
"type": "entry",
"author": {
"name": null,
"url": "https://dri.es/",
"photo": null
},
"url": "https://dri.es/nostr-love-at-first-sight",
"published": "2023-02-15T17:22:33-05:00",
"content": {
"html": "<img src=\"https://dri.es/files/images/blog/nostr.jpg\" alt=\"This is an old film roll featuring an ostrich running in every frame. The ostrich is purple in color, which represents the mascot of Nostr.\" title=\"Nostr\" /><p>I recently discovered <a href=\"https://github.com/nostr-protocol/nostr\">Nostr</a>, a decentralized social network that I find exciting and promising.</p>\n\n<p>Technically, Nostr is a protocol, not a social network. However, developers can use the Nostr protocol to create a variety of applications, including social networks.</p>\n \n<p>Nostr has been around a few years, but in December 2022, <a href=\"https://en.wikipedia.org/wiki/Jack_Dorsey\">Jack Dorsey</a>, the co-founder and former CEO of Twitter, announced that he had made <a href=\"https://twitter.com/jack/status/1603381913485541376\">a donation of 14 bitcoins</a>, valued at approximately $250,000. The donation was made to <code><a href=\"https://fiatjaf.com/\">@fiatjaf</a></code>, the anonymous founder of Nostr.</p>\n\n<p>Nostr stands for Notes and Other Stuff Transmitted by Relays. At its core, it is a system to exchange signed messages. The basic architecture can be explained in three bullets:</p>\n<ul><li>Every Nostr user is identified by a public key.</li>\n <li>Users send and retrieve messages to servers. These servers are called relays.</li>\n <li>Messages are called events. Users sign events with a private key. Events can be social media posts, private messages <a href=\"https://github.com/jesterui/jesterui\">chess moves</a>, etc.</li>\n</ul><p>I reviewed the Nostr protocol and found it to be straightforward to understand. The core protocol seems simple enough to implement in a day. This is a quality I appreciate in protocols. It is why I love RSS, for example.</p>\n\n<p>While the core Nostr protocol is simple, it is very extensible. It is extended using <a href=\"https://github.com/nostr-protocol/nips\">NIPs</a>, which stands for Nostr Implementation Possibilities. NIPs can add new fields and features to Nostr messages or events. For example, <a href=\"https://github.com/nostr-protocol/nips/blob/master/02.md\">NIP-2</a> adds usernames and contact lists (followers), <a href=\"https://github.com/nostr-protocol/nips/blob/master/08.md\">NIP-8</a> adds mentions, <a href=\"https://github.com/nostr-protocol/nips/blob/master/36.md\">NIP-36</a> adds support for content warnings, etc.</p>\n\n<h3>Joining the Nostr social network</h3>\n\n<p>Despite Nostr being just a few years old, there are a <a href=\"https://github.com/aljazceru/awesome-nostr\">number of clients</a>. I decided on <a href=\"https://github.com/damus-io/damus\">Damus</a>, a Twitter-like Nostr client for iOS. (Nostr's Damus is a clever pun on Nostradamus, the French astrologer.)</p>\n\n<p>You don't need to create a traditional account to sign up. You just use a public and private key. You can use these keys to use the platform anonymously. Unlike with proprietary social networks, you don't need an email address or phone number to register.</p>\n\n<p>If you want, you can choose to verify your identity. Verifying your identity links your public key to a public profile. I verified my identity using <a href=\"https://github.com/nostr-protocol/nips/blob/master/05.md\">NIP-05</a>, though different options exist. The NIP-05 verification process involved creating a static file on my website, available at <a href=\"https://dri.es/well-known/nostr.json\">https://dri.es/well-known/nostr.json</a>. It verifies that I'm the owner of the name <code>Dries</code>, the public key <code>npub176xpl3dl0agjt7vjeccw6v5grlx8f9mhc75aazwvvqfjvq5al8uszj5asu</code> and <a href=\"https://dri.es/\">https://dri.es</a>.</p>\n\n<h3>Nostr versus ActivityPub</h3>\n\n<p>Recently, Elon Musk became the world's richest troll and many people have left Twitter for <a href=\"https://en.wikipedia.org/wiki/Mastodon_(social_network)\">Mastodon</a>. Mastodon is a decentralized social media platform built on the <a href=\"https://en.wikipedia.org/wiki/ActivityPub\">ActivityPub protocol</a>. I wanted to compare ActivityPub with Nostr, as Nostr offers many of the same promises.</p>\n\n<p>Before I do, I want to stress that I am not an expert in either ActivityPub or Nostr. I have read both specifications, but I have not implemented a client myself. However, I do have a basic understanding of the differences between the two.</p>\n\n<p>I also want to emphasize that both Nostr and ActivityPub are commendable for their efforts in addressing the problems encountered by traditional centralized social media platforms. I'm grateful for both.</p>\n\n<p>ActivityPub has been around for longer, and is more mature, but by comparison, there is a lot more to like about Nostr:</p>\n\n<ul><li><strong>Nostr is more decentralized</strong> \u2014 Nostr employs hash-based identification for users, while ActivityPub utilizes a more conventional user account system. ActivityPub user accounts are based on domain names, which can be controlled by third-party entities. Nostr's hash-based identification system is more decentralized, as it does not rely on domain names controlled by outside parties.</li>\n <li><strong>Nostr is easier to use</strong> \u2014 Decentralized networks are notoriously tough to use. To gain mass adoption, the user experience of decentralized social networks needs to match and exceed that of proprietary social networks. Both Nostr and Mastodon have user experience problems that stem from being decentralized applications. That said, I found Nostr easier to use, and I believe it is because the Nostr architecture is simpler.\n <ul><li>Migrating to a different Mastodon server can be challenging, as your username is tied to the domain name of the current Mastodon server. However, this is not a problem in Nostr, as users are identified using a unique hash rather than a domain name.</li>\n <li>Nostr doesn't currently offer the ability to edit or delete messages easily. While there is an API available to delete a message from a relay, it requires contacting each relay that holds a copy of your message to request its deletion, which can be challenging in practice.</li>\n </ul></li>\n <li><strong>Nostr is easier to develop for</strong> \u2014 The Nostr protocol is easier to implement than the ActivityPub protocol, and appears more extensible.</li>\n <li><strong>Nostr can support different content policies</strong> \u2014 In ActivityPub, Mastodon server owners have the power to ban users and ban content. In Nostr, users and content can't be banned. However, each Nostr relay can have its own content policy, and users can choose which relays they want to use. For example, you could have a relay that only lets verified users publish, does not allow content that has anything to do with violence, and conforms the local laws of Belgium. It means that each user can choose the relay that they align with, rather than being subject to a Mastodon server owner's rules. It also means that policy development and maintenance can be distributed based on beliefs, geographic location, and more.</li>\n <li><strong>Nostr has Zaps, which is potentially game-changing</strong> \u2014 ActivityPub lacks an equivalent of Zaps, which could make it harder to address funding issues and combat spam. More on that in the next section.</li>\n</ul><p>Lastly, both protocols likely suffer from problems unique to decentralized architectures. For example, when you post a link to your site, most clients will try to render a preview card of that link. That preview card can contain an image, the title of the page, and a description. To create preview cards, the page is fetched and its HTML is parsed, looking for <a href=\"https://ogp.me/\">Open Graph tags</a>. Because of the distributed nature of both Nostr and Mastodon this <a href=\"https://odd.blog/2023/01/02/the-mastodon-onslaught-on-your-blog/\">can cause a site to get hammered with requests</a>.</p>\n\n<h3>Zaps</h3>\n\n<p>Social networks are overrun with spam and bots. Ads are everywhere. Platform owners profit from content creators, and content creators themselves don't make money. The world needs some breakthrough in this regard, and Nostr's Zap-support might offer solutions.</p>\n\n<p>A Zap is essentially a micropayment made using Bitcoin's Lightning network. Although Nostr itself does not use blockchain technology, it enables each message or event to contain a \"Zap request\" or \"Zap invoice\" (receipt). In other words, Nostr has optional blockchain integration for micropayment support.</p>\n\n<p>The implementation of this protocol extension can be found in <a href=\"https://github.com/nostr-protocol/nips/blob/master/57.md\">NIP-57</a>, which was finalized last week. As a brand new development, the potential of Zap-support has yet to be fully explored. But it is not hard to see how micropayments could be used to reward content creators, fund relay upkeep, or decrease spam on social media platforms. With micropayments supported at the protocol level, trying out and implementing new solutions has become simpler than ever before.</p>\n\n<p>One potential solution is for receivers to require 200 satoshi (approximately $0.05) to receive a message from someone outside of their network. This would make spamming less economically attractive to marketers. Another option is for relays to charge their users a monthly fee, which could be used to maintain a block-list or content policy.</p>\n\n<p>Personally, I am a big fan of rewarding content creators, financing contributions, and implementing anti-spam techniques. It aligns with my interest in <a href=\"https://dri.es/balancing-makers-and-takers-to-scale-and-sustain-open-source\">public good governance and sustainability</a>.</p>\n\n<p>For the record, I have mixed feelings about blockchains. I've <a href=\"https://dri.es/i-bought-some-bitcoin-and-here-is-why\">HODL'd Bitcoin since 2013</a> and Ethereum since 2017. On one hand, I appreciate the opportunities and innovation they offer, but on the other hand, I am deeply concerned about their energy consumption and contribution to climate change.</p>\n\n<p>It's worth noting that the Lightning network is much more energy efficient than Bitcoin. Lightning operates on top of the Bitcoin network. The main Bitcoin blockchain, known as a layer 1 blockchain, is very energy inefficient and can only handle fewer than 10 transactions per second. In contrast, the <a href=\"https://en.wikipedia.org/wiki/Lightning_Network\">Lightning Network</a>, known as a layer 2 network, uses a lot less energy and has the potential to handle millions of transactions per second on top of the Bitcoin network.</p>\n\n<p>So, yes, Zap support is an important development to pay attention to. Even though it's brand new, I believe that in five years, we'll look back and agree that Zap support was a game-changer.</p>\n\n<h3>Conclusions</h3>\n\n<p>\"Notes and Other Stuff, Transmitted by Relays\" seems like a promising idea, even at this early stage. It is definitely something to keep an eye on. While for me it was love at first sight, I'm not sure how it will evolve. I am interested in exploring it further, and if time permits, I plan to create some basic integration with my own Drupal site.</p>\n\n<p><a href=\"https://news.indieweb.org/en\">Also posted on IndieNews</a>.</p>",
"text": "I recently discovered Nostr, a decentralized social network that I find exciting and promising.\n\nTechnically, Nostr is a protocol, not a social network. However, developers can use the Nostr protocol to create a variety of applications, including social networks.\n \nNostr has been around a few years, but in December 2022, Jack Dorsey, the co-founder and former CEO of Twitter, announced that he had made a donation of 14 bitcoins, valued at approximately $250,000. The donation was made to @fiatjaf, the anonymous founder of Nostr.\n\nNostr stands for Notes and Other Stuff Transmitted by Relays. At its core, it is a system to exchange signed messages. The basic architecture can be explained in three bullets:\nEvery Nostr user is identified by a public key.\n Users send and retrieve messages to servers. These servers are called relays.\n Messages are called events. Users sign events with a private key. Events can be social media posts, private messages chess moves, etc.\nI reviewed the Nostr protocol and found it to be straightforward to understand. The core protocol seems simple enough to implement in a day. This is a quality I appreciate in protocols. It is why I love RSS, for example.\n\nWhile the core Nostr protocol is simple, it is very extensible. It is extended using NIPs, which stands for Nostr Implementation Possibilities. NIPs can add new fields and features to Nostr messages or events. For example, NIP-2 adds usernames and contact lists (followers), NIP-8 adds mentions, NIP-36 adds support for content warnings, etc.\n\nJoining the Nostr social network\n\nDespite Nostr being just a few years old, there are a number of clients. I decided on Damus, a Twitter-like Nostr client for iOS. (Nostr's Damus is a clever pun on Nostradamus, the French astrologer.)\n\nYou don't need to create a traditional account to sign up. You just use a public and private key. You can use these keys to use the platform anonymously. Unlike with proprietary social networks, you don't need an email address or phone number to register.\n\nIf you want, you can choose to verify your identity. Verifying your identity links your public key to a public profile. I verified my identity using NIP-05, though different options exist. The NIP-05 verification process involved creating a static file on my website, available at https://dri.es/well-known/nostr.json. It verifies that I'm the owner of the name Dries, the public key npub176xpl3dl0agjt7vjeccw6v5grlx8f9mhc75aazwvvqfjvq5al8uszj5asu and https://dri.es.\n\nNostr versus ActivityPub\n\nRecently, Elon Musk became the world's richest troll and many people have left Twitter for Mastodon. Mastodon is a decentralized social media platform built on the ActivityPub protocol. I wanted to compare ActivityPub with Nostr, as Nostr offers many of the same promises.\n\nBefore I do, I want to stress that I am not an expert in either ActivityPub or Nostr. I have read both specifications, but I have not implemented a client myself. However, I do have a basic understanding of the differences between the two.\n\nI also want to emphasize that both Nostr and ActivityPub are commendable for their efforts in addressing the problems encountered by traditional centralized social media platforms. I'm grateful for both.\n\nActivityPub has been around for longer, and is more mature, but by comparison, there is a lot more to like about Nostr:\n\nNostr is more decentralized \u2014 Nostr employs hash-based identification for users, while ActivityPub utilizes a more conventional user account system. ActivityPub user accounts are based on domain names, which can be controlled by third-party entities. Nostr's hash-based identification system is more decentralized, as it does not rely on domain names controlled by outside parties.\n Nostr is easier to use \u2014 Decentralized networks are notoriously tough to use. To gain mass adoption, the user experience of decentralized social networks needs to match and exceed that of proprietary social networks. Both Nostr and Mastodon have user experience problems that stem from being decentralized applications. That said, I found Nostr easier to use, and I believe it is because the Nostr architecture is simpler.\n Migrating to a different Mastodon server can be challenging, as your username is tied to the domain name of the current Mastodon server. However, this is not a problem in Nostr, as users are identified using a unique hash rather than a domain name.\n Nostr doesn't currently offer the ability to edit or delete messages easily. While there is an API available to delete a message from a relay, it requires contacting each relay that holds a copy of your message to request its deletion, which can be challenging in practice.\n \n Nostr is easier to develop for \u2014 The Nostr protocol is easier to implement than the ActivityPub protocol, and appears more extensible.\n Nostr can support different content policies \u2014 In ActivityPub, Mastodon server owners have the power to ban users and ban content. In Nostr, users and content can't be banned. However, each Nostr relay can have its own content policy, and users can choose which relays they want to use. For example, you could have a relay that only lets verified users publish, does not allow content that has anything to do with violence, and conforms the local laws of Belgium. It means that each user can choose the relay that they align with, rather than being subject to a Mastodon server owner's rules. It also means that policy development and maintenance can be distributed based on beliefs, geographic location, and more.\n Nostr has Zaps, which is potentially game-changing \u2014 ActivityPub lacks an equivalent of Zaps, which could make it harder to address funding issues and combat spam. More on that in the next section.\nLastly, both protocols likely suffer from problems unique to decentralized architectures. For example, when you post a link to your site, most clients will try to render a preview card of that link. That preview card can contain an image, the title of the page, and a description. To create preview cards, the page is fetched and its HTML is parsed, looking for Open Graph tags. Because of the distributed nature of both Nostr and Mastodon this can cause a site to get hammered with requests.\n\nZaps\n\nSocial networks are overrun with spam and bots. Ads are everywhere. Platform owners profit from content creators, and content creators themselves don't make money. The world needs some breakthrough in this regard, and Nostr's Zap-support might offer solutions.\n\nA Zap is essentially a micropayment made using Bitcoin's Lightning network. Although Nostr itself does not use blockchain technology, it enables each message or event to contain a \"Zap request\" or \"Zap invoice\" (receipt). In other words, Nostr has optional blockchain integration for micropayment support.\n\nThe implementation of this protocol extension can be found in NIP-57, which was finalized last week. As a brand new development, the potential of Zap-support has yet to be fully explored. But it is not hard to see how micropayments could be used to reward content creators, fund relay upkeep, or decrease spam on social media platforms. With micropayments supported at the protocol level, trying out and implementing new solutions has become simpler than ever before.\n\nOne potential solution is for receivers to require 200 satoshi (approximately $0.05) to receive a message from someone outside of their network. This would make spamming less economically attractive to marketers. Another option is for relays to charge their users a monthly fee, which could be used to maintain a block-list or content policy.\n\nPersonally, I am a big fan of rewarding content creators, financing contributions, and implementing anti-spam techniques. It aligns with my interest in public good governance and sustainability.\n\nFor the record, I have mixed feelings about blockchains. I've HODL'd Bitcoin since 2013 and Ethereum since 2017. On one hand, I appreciate the opportunities and innovation they offer, but on the other hand, I am deeply concerned about their energy consumption and contribution to climate change.\n\nIt's worth noting that the Lightning network is much more energy efficient than Bitcoin. Lightning operates on top of the Bitcoin network. The main Bitcoin blockchain, known as a layer 1 blockchain, is very energy inefficient and can only handle fewer than 10 transactions per second. In contrast, the Lightning Network, known as a layer 2 network, uses a lot less energy and has the potential to handle millions of transactions per second on top of the Bitcoin network.\n\nSo, yes, Zap support is an important development to pay attention to. Even though it's brand new, I believe that in five years, we'll look back and agree that Zap support was a game-changer.\n\nConclusions\n\n\"Notes and Other Stuff, Transmitted by Relays\" seems like a promising idea, even at this early stage. It is definitely something to keep an eye on. While for me it was love at first sight, I'm not sure how it will evolve. I am interested in exploring it further, and if time permits, I plan to create some basic integration with my own Drupal site.\n\nAlso posted on IndieNews."
},
"name": "Nostr, love at first sight",
"post-type": "article",
"_id": "35184916",
"_source": "238",
"_is_read": false
}
Since I mentioned blogging, I forgot to ask for the URL to your blog so I can subscribe to it! Gimme those RSS feeds!
#rss #indieWeb #blogging #blog
{
"type": "entry",
"author": {
"name": "@rasterweb",
"url": "https://mastodon.social/@rasterweb",
"photo": null
},
"url": "https://mastodon.social/@rasterweb/109872172749606378",
"content": {
"html": "<p>Since I mentioned blogging, I forgot to ask for the URL to your blog so I can subscribe to it! Gimme those RSS feeds!</p><p><a href=\"https://mastodon.social/tags/rss\">#<span>rss</span></a> <a href=\"https://mastodon.social/tags/indieWeb\">#<span>indieWeb</span></a> <a href=\"https://mastodon.social/tags/blogging\">#<span>blogging</span></a> <a href=\"https://mastodon.social/tags/blog\">#<span>blog</span></a></p>",
"text": "Since I mentioned blogging, I forgot to ask for the URL to your blog so I can subscribe to it! Gimme those RSS feeds!#rss #indieWeb #blogging #blog"
},
"published": "2023-02-16T02:58:27+00:00",
"post-type": "note",
"_id": "35183418",
"_source": "7235",
"_is_read": false
}
You Should Check Out the Indie Web https://youtube.com/watch?v=rTSEr0cRJY8&feature=share
"In this ramble video, I talk about the indie web - also known as the small web or old web - how it's better than web3, and why I think you should make a website"
#indieweb #web3
{
"type": "entry",
"author": {
"name": "@sketchee",
"url": "https://socel.net/@sketchee",
"photo": null
},
"url": "https://socel.net/@sketchee/109872158882380863",
"content": {
"html": "<p>You Should Check Out the Indie Web <a href=\"https://youtube.com/watch?v=rTSEr0cRJY8&feature=share\"><span>https://</span><span>youtube.com/watch?v=rTSEr0cRJY</span><span>8&feature=share</span></a></p><p>\"In this ramble video, I talk about the indie web - also known as the small web or old web - how it's better than web3, and why I think you should make a website\" </p><p><a href=\"https://socel.net/tags/indieweb\">#<span>indieweb</span></a> <a href=\"https://socel.net/tags/web3\">#<span>web3</span></a></p>",
"text": "You Should Check Out the Indie Web https://youtube.com/watch?v=rTSEr0cRJY8&feature=share\"In this ramble video, I talk about the indie web - also known as the small web or old web - how it's better than web3, and why I think you should make a website\" #indieweb #web3"
},
"published": "2023-02-16T02:54:56+00:00",
"post-type": "note",
"_id": "35183419",
"_source": "7235",
"_is_read": false
}
@manton @lime_juice_cube I couldn't remember the discussion on #indieweb IRC so I'm glad you corrected me! I should have performed a quick search to verify before typing 😅
{
"type": "entry",
"author": {
"name": "@asuh",
"url": "https://mastodon.social/@asuh",
"photo": null
},
"url": "https://mastodon.social/@asuh/109872056887757201",
"content": {
"html": "<p><span class=\"h-card\"><a class=\"u-url\" href=\"https://manton.org/activitypub/manton\">@<span>manton</span></a></span> <span class=\"h-card\"><a class=\"u-url\" href=\"https://mastodon.au/@lime_juice_cube\">@<span>lime_juice_cube</span></a></span> I couldn't remember the discussion on <a href=\"https://mastodon.social/tags/indieweb\">#<span>indieweb</span></a> IRC so I'm glad you corrected me! I should have performed a quick search to verify before typing \ud83d\ude05</p>",
"text": "@manton @lime_juice_cube I couldn't remember the discussion on #indieweb IRC so I'm glad you corrected me! I should have performed a quick search to verify before typing \ud83d\ude05"
},
"published": "2023-02-16T02:28:59+00:00",
"post-type": "note",
"_id": "35183167",
"_source": "7235",
"_is_read": false
}
@lime_juice_cube I always hear great things about https://micro.blog/ for #indieweb support and easy to use platform. @manton is very receptive to feedback and has a great platform for turnkey site.
{
"type": "entry",
"author": {
"name": "@asuh",
"url": "https://mastodon.social/@asuh",
"photo": null
},
"url": "https://mastodon.social/@asuh/109871862444367419",
"content": {
"html": "<p><span class=\"h-card\"><a class=\"u-url\" href=\"https://mastodon.au/@lime_juice_cube\">@<span>lime_juice_cube</span></a></span> I always hear great things about <a href=\"https://micro.blog/\"><span>https://</span><span>micro.blog/</span><span></span></a> for <a href=\"https://mastodon.social/tags/indieweb\">#<span>indieweb</span></a> support and easy to use platform. <span class=\"h-card\"><a class=\"u-url\" href=\"https://manton.org/activitypub/manton\">@<span>manton</span></a></span> is very receptive to feedback and has a great platform for turnkey site.</p>",
"text": "@lime_juice_cube I always hear great things about https://micro.blog/ for #indieweb support and easy to use platform. @manton is very receptive to feedback and has a great platform for turnkey site."
},
"published": "2023-02-16T01:39:32+00:00",
"post-type": "note",
"_id": "35182393",
"_source": "7235",
"_is_read": false
}
Hey #blogging #mastodon and #fediverse #indieweb users. Looking for a new blog framework that isn't just awful and locked-in. Very tired of #wordpress bloat. And #ghostblog just doesn't work without Node JS. So, maybe #writefreely? But if I go self-hosted then I'm either asking my web host to support it or I'm having to learn about running my own virtualised server. At that point, I might as well just use WP! Any recommendations?
{
"type": "entry",
"author": {
"name": "@lime_juice_cube",
"url": "https://mastodon.au/@lime_juice_cube",
"photo": null
},
"url": "https://mastodon.au/@lime_juice_cube/109871775879059099",
"content": {
"html": "<p>Hey <a href=\"https://mastodon.au/tags/blogging\">#<span>blogging</span></a> <a href=\"https://mastodon.au/tags/mastodon\">#<span>mastodon</span></a> and <a href=\"https://mastodon.au/tags/fediverse\">#<span>fediverse</span></a> <a href=\"https://mastodon.au/tags/indieweb\">#<span>indieweb</span></a> users. Looking for a new blog framework that isn't just awful and locked-in. Very tired of <a href=\"https://mastodon.au/tags/wordpress\">#<span>wordpress</span></a> bloat. And <a href=\"https://mastodon.au/tags/ghostblog\">#<span>ghostblog</span></a> just doesn't work without Node JS. So, maybe <a href=\"https://mastodon.au/tags/writefreely\">#<span>writefreely</span></a>? But if I go self-hosted then I'm either asking my web host to support it or I'm having to learn about running my own virtualised server. At that point, I might as well just use WP! Any recommendations?</p>",
"text": "Hey #blogging #mastodon and #fediverse #indieweb users. Looking for a new blog framework that isn't just awful and locked-in. Very tired of #wordpress bloat. And #ghostblog just doesn't work without Node JS. So, maybe #writefreely? But if I go self-hosted then I'm either asking my web host to support it or I'm having to learn about running my own virtualised server. At that point, I might as well just use WP! Any recommendations?"
},
"published": "2023-02-16T01:17:32+00:00",
"post-type": "note",
"_id": "35182394",
"_source": "7235",
"_is_read": false
}