I finally have a new featured project on my site, my first attempting at creating a Diffusion-limited Aggregation #simulation ! It's been fun getting back into simulations, especially now that I've gotten so much better at grid-based programming over the years. Please give it a try, and let me know if you have any ideas on how it could be improved.
#JavaScript #GenArt #p5js #IndieWeb #SmallWeb
https://www.vzqk50.com/projects/dla-naive/
{
"type": "entry",
"author": {
"name": "@ApisNecros",
"url": "https://ioc.exchange/@ApisNecros",
"photo": null
},
"url": "https://ioc.exchange/@ApisNecros/112288216348110839",
"content": {
"html": "<p>I finally have a new featured project on my site, my first attempting at creating a Diffusion-limited Aggregation <a href=\"https://ioc.exchange/tags/simulation\">#<span>simulation</span></a> ! It's been fun getting back into simulations, especially now that I've gotten so much better at grid-based programming over the years. Please give it a try, and let me know if you have any ideas on how it could be improved.</p><p><a href=\"https://ioc.exchange/tags/JavaScript\">#<span>JavaScript</span></a> <a href=\"https://ioc.exchange/tags/GenArt\">#<span>GenArt</span></a> <a href=\"https://ioc.exchange/tags/p5js\">#<span>p5js</span></a> <a href=\"https://ioc.exchange/tags/IndieWeb\">#<span>IndieWeb</span></a> <a href=\"https://ioc.exchange/tags/SmallWeb\">#<span>SmallWeb</span></a><br /><a href=\"https://www.vzqk50.com/projects/dla-naive/\"><span>https://www.</span><span>vzqk50.com/projects/dla-naive/</span><span></span></a></p>",
"text": "I finally have a new featured project on my site, my first attempting at creating a Diffusion-limited Aggregation #simulation ! It's been fun getting back into simulations, especially now that I've gotten so much better at grid-based programming over the years. Please give it a try, and let me know if you have any ideas on how it could be improved.\n\n#JavaScript #GenArt #p5js #IndieWeb #SmallWeb\nhttps://www.vzqk50.com/projects/dla-naive/"
},
"published": "2024-04-17T19:30:07+00:00",
"post-type": "note",
"_id": "40866674",
"_source": "8007",
"_is_read": false
}
Early today, I had a wonderful conversation with @manton@manton.org about #Microblog, #IndieWeb, and #ActivityPub. It will be released in a couple of days as episode 4 of my podcast, as well as a video on my YouTube channel.
{
"type": "entry",
"author": {
"name": "#indieweb",
"url": "https://mastodon.social/tags/indieweb",
"photo": null
},
"url": "https://vladcampos.com/2024/04/17/early-today-i.html",
"content": {
"html": "<p>Early today, I had a wonderful conversation with @manton@manton.org about #Microblog, #IndieWeb, and #ActivityPub. It will be released in a couple of days as episode 4 of my <a href=\"https://vladcampos.com/podcast\">podcast</a>, as well as a video on my YouTube channel.</p>",
"text": "Early today, I had a wonderful conversation with @manton@manton.org about #Microblog, #IndieWeb, and #ActivityPub. It will be released in a couple of days as episode 4 of my podcast, as well as a video on my YouTube channel."
},
"published": "2024-04-17T17:54:41+00:00",
"post-type": "note",
"_id": "40866254",
"_source": "8007",
"_is_read": false
}
Early today, I had a wonderful conversation with @manton about #Microblog, #IndieWeb, and #ActivityPub. It will be released in a couple of days as episode 4 of my podcast, as well as a video on my YouTube channel. https://vladcampos.com/podcast
{
"type": "entry",
"author": {
"name": "@vladcampos",
"url": "https://mastodon.social/@vladcampos",
"photo": null
},
"url": "https://mastodon.social/@vladcampos/112287841529442754",
"content": {
"html": "<p>Early today, I had a wonderful conversation with <span class=\"h-card\"><a class=\"u-url\" href=\"https://manton.org/activitypub/manton\">@<span>manton</span></a></span> about <a href=\"https://mastodon.social/tags/Microblog\">#<span>Microblog</span></a>, <a href=\"https://mastodon.social/tags/IndieWeb\">#<span>IndieWeb</span></a>, and <a href=\"https://mastodon.social/tags/ActivityPub\">#<span>ActivityPub</span></a>. It will be released in a couple of days as episode 4 of my podcast, as well as a video on my YouTube channel. <a href=\"https://vladcampos.com/podcast\"><span>https://</span><span>vladcampos.com/podcast</span><span></span></a></p>\n<a class=\"u-mention\" href=\"https://manton.org/activitypub/manton\"></a>",
"text": "Early today, I had a wonderful conversation with @manton about #Microblog, #IndieWeb, and #ActivityPub. It will be released in a couple of days as episode 4 of my podcast, as well as a video on my YouTube channel. https://vladcampos.com/podcast"
},
"published": "2024-04-17T17:54:48+00:00",
"post-type": "note",
"_id": "40865972",
"_source": "8007",
"_is_read": false
}
My entry for this month's #IndieWeb Carnival ponders about the benefits of doing things "good enough".
https://hamatti.org/posts/good-enough-as-power-for-good/
#blogging
{
"type": "entry",
"author": {
"name": "@hamatti",
"url": "https://mastodon.world/@hamatti",
"photo": null
},
"url": "https://mastodon.world/@hamatti/112287666284746856",
"content": {
"html": "<p>My entry for this month's <a href=\"https://mastodon.world/tags/IndieWeb\">#<span>IndieWeb</span></a> Carnival ponders about the benefits of doing things \"good enough\".</p><p><a href=\"https://hamatti.org/posts/good-enough-as-power-for-good/\"><span>https://</span><span>hamatti.org/posts/good-enough-</span><span>as-power-for-good/</span></a></p><p><a href=\"https://mastodon.world/tags/blogging\">#<span>blogging</span></a></p>",
"text": "My entry for this month's #IndieWeb Carnival ponders about the benefits of doing things \"good enough\".\n\nhttps://hamatti.org/posts/good-enough-as-power-for-good/\n\n#blogging"
},
"published": "2024-04-17T17:10:14+00:00",
"post-type": "note",
"_id": "40865279",
"_source": "8007",
"_is_read": false
}
Great article by @nachtfunke:
📝 Craft vs Industry: Separating Concerns
Reconciling the differences between the craft of making websites and the industry that has grown around it.
> Handcrafted websites are made by humans for humans. This is what differentiates our craftsperson from the factory worker—what the craftsperson does is valuable to people, not businesses.
https://helloyes.dev/blog/2023/craft-vs-industry/
#IndieWeb #WebDev #WebDesign
{
"type": "entry",
"author": {
"name": "@timotheegoguely",
"url": "https://mastodon.design/@timotheegoguely",
"photo": null
},
"url": "https://mastodon.design/@timotheegoguely/112287289642824286",
"content": {
"html": "<p>Great article by <span class=\"h-card\"><a class=\"u-url\" href=\"https://indieweb.social/@nachtfunke\">@<span>nachtfunke</span></a></span>: </p><p>\ud83d\udcdd Craft vs Industry: Separating Concerns<br />Reconciling the differences between the craft of making websites and the industry that has grown around it.</p><p>> Handcrafted websites are made by humans for humans. This is what differentiates our craftsperson from the factory worker\u2014what the craftsperson does is valuable to people, not businesses.</p><p><a href=\"https://helloyes.dev/blog/2023/craft-vs-industry/\"><span>https://</span><span>helloyes.dev/blog/2023/craft-v</span><span>s-industry/</span></a></p><p><a href=\"https://mastodon.design/tags/IndieWeb\">#<span>IndieWeb</span></a> <a href=\"https://mastodon.design/tags/WebDev\">#<span>WebDev</span></a> <a href=\"https://mastodon.design/tags/WebDesign\">#<span>WebDesign</span></a></p>\n<a class=\"u-mention\" href=\"https://indieweb.social/@nachtfunke\"></a>",
"text": "Great article by @nachtfunke: \n\n\ud83d\udcdd Craft vs Industry: Separating Concerns\nReconciling the differences between the craft of making websites and the industry that has grown around it.\n\n> Handcrafted websites are made by humans for humans. This is what differentiates our craftsperson from the factory worker\u2014what the craftsperson does is valuable to people, not businesses.\n\nhttps://helloyes.dev/blog/2023/craft-vs-industry/\n\n#IndieWeb #WebDev #WebDesign"
},
"published": "2024-04-17T15:34:27+00:00",
"post-type": "note",
"_id": "40864273",
"_source": "8007",
"_is_read": false
}
There's a million ways to capture, store, organise, engage with, and publish notes. This is my current flow for notes that end up published on the web in various places.
#Obsidian #smallweb #indieweb #rss #fediverse #workinprogress https://spyderooth.vercel.app//notes/notes-flow/
{
"type": "entry",
"author": {
"name": "@inforflux",
"url": "https://mastodon.social/@inforflux",
"photo": null
},
"url": "https://mastodon.social/@inforflux/112286782838682222",
"content": {
"html": "<p>There's a million ways to capture, store, organise, engage with, and publish notes. This is my current flow for notes that end up published on the web in various places.<br /><a href=\"https://mastodon.social/tags/Obsidian\">#<span>Obsidian</span></a> <a href=\"https://mastodon.social/tags/smallweb\">#<span>smallweb</span></a> <a href=\"https://mastodon.social/tags/indieweb\">#<span>indieweb</span></a> <a href=\"https://mastodon.social/tags/rss\">#<span>rss</span></a> <a href=\"https://mastodon.social/tags/fediverse\">#<span>fediverse</span></a> <a href=\"https://mastodon.social/tags/workinprogress\">#<span>workinprogress</span></a> <a href=\"https://spyderooth.vercel.app//notes/notes-flow/\"><span>https://</span><span>spyderooth.vercel.app//notes/n</span><span>otes-flow/</span></a></p>",
"text": "There's a million ways to capture, store, organise, engage with, and publish notes. This is my current flow for notes that end up published on the web in various places.\n#Obsidian #smallweb #indieweb #rss #fediverse #workinprogress https://spyderooth.vercel.app//notes/notes-flow/"
},
"published": "2024-04-17T13:25:33+00:00",
"photo": [
"https://files.mastodon.social/media_attachments/files/112/286/782/805/363/095/original/0b5e49a3addfe253.png"
],
"post-type": "photo",
"_id": "40863621",
"_source": "8007",
"_is_read": false
}
{
"type": "entry",
"author": {
"name": "#indieweb",
"url": "https://indieweb.social/tags/indieweb",
"photo": null
},
"url": "https://makai.chaotic.ninja/notes/9s7f1f2322",
"content": {
"html": "<p><a href=\"https://makai.chaotic.ninja/tags/RSS\">#RSS</a> + <a href=\"https://makai.chaotic.ninja/tags/Webmention\">#Webmention</a> = poor man's <a href=\"https://makai.chaotic.ninja/tags/ActivityPub\">#ActivityPub</a>? \u200b<img alt=\":sagume_think:\" height=\"16\" src=\"https://cdn.masto.host/indiewebsocial/cache/custom_emojis/images/000/367/577/original/332d1d8e23e3517b.webp\" title=\":sagume_think:\" width=\"16\" />\u200b<span><br /><br /></span><a href=\"https://makai.chaotic.ninja/tags/IndieWeb\">#IndieWeb</a></p>",
"text": "#RSS + #Webmention = poor man's #ActivityPub? \u200b\u200b\n\n#IndieWeb"
},
"published": "2024-04-17T13:31:45+00:00",
"post-type": "note",
"_id": "40862995",
"_source": "8007",
"_is_read": false
}
I’ve seen and talked to a number of people who don't feel that having a website is for them because they have nothing to share or put there ☹️. For many, having a website seems to mean having a "blog”, but I’m here to say that having a website *isn't* about blogging, it's about YOU.
https://shellsharks.com/notes/2024/04/17/having-a-website-is-about-you
Inside is a quick, hopefully mildly motivating writeup on things you can put on a personal website that have almost nothing to do with publishing "blog" content.
#indieweb #blogging
{
"type": "entry",
"author": {
"name": "@shellsharks",
"url": "https://shellsharks.social/@shellsharks",
"photo": null
},
"url": "https://shellsharks.social/@shellsharks/112286757069450457",
"content": {
"html": "<p>I\u2019ve seen and talked to a number of people who don't feel that having a website is for them because they have nothing to share or put there \u2639\ufe0f. For many, having a website seems to mean having a \"blog\u201d, but I\u2019m here to say that having a website *isn't* about blogging, it's about YOU.</p><p><a href=\"https://shellsharks.com/notes/2024/04/17/having-a-website-is-about-you\"><span>https://</span><span>shellsharks.com/notes/2024/04/</span><span>17/having-a-website-is-about-you</span></a></p><p>Inside is a quick, hopefully mildly motivating writeup on things you can put on a personal website that have almost nothing to do with publishing \"blog\" content.</p><p><a href=\"https://shellsharks.social/tags/indieweb\">#<span>indieweb</span></a> <a href=\"https://shellsharks.social/tags/blogging\">#<span>blogging</span></a></p>",
"text": "I\u2019ve seen and talked to a number of people who don't feel that having a website is for them because they have nothing to share or put there \u2639\ufe0f. For many, having a website seems to mean having a \"blog\u201d, but I\u2019m here to say that having a website *isn't* about blogging, it's about YOU.\n\nhttps://shellsharks.com/notes/2024/04/17/having-a-website-is-about-you\n\nInside is a quick, hopefully mildly motivating writeup on things you can put on a personal website that have almost nothing to do with publishing \"blog\" content.\n\n#indieweb #blogging"
},
"published": "2024-04-17T13:19:00+00:00",
"post-type": "note",
"_id": "40862996",
"_source": "8007",
"_is_read": false
}
Owning your own piece of the Internet (to borrow a recent phrase from Anil Dash) is itself a radical act. Linking to others at will is subversive all on its own. Or as Jeremy Keith once put it, “it sounds positively disruptive to even suggest that you should have your own website.” The web still exists for everyone. And beneath this increasingly desiccated surface, there is plenty of creators still simply creating.
People create these sites simply so that they exist. They are not fed to an algorithm, or informed by any trends. It is quieter and slower, meant to tether us to a more mechanical framework of the web.
This is the analog web.
{
"type": "entry",
"published": "2024-04-17T10:10:35Z",
"url": "https://adactio.com/links/21056",
"category": [
"analog",
"web",
"history",
"indieweb",
"independence",
"personal",
"human",
"digital",
"technology"
],
"bookmark-of": [
"https://thehistoryoftheweb.com/the-analog-web/"
],
"content": {
"text": "The Analog Web - The History of the Web\n\n\n\n\n Owning your own piece of the Internet (to borrow a recent phrase from Anil Dash) is itself a radical act. Linking to others at will is subversive all on its own. Or as Jeremy Keith once put it, \u201cit sounds positively disruptive to even suggest that you should have your own website.\u201d The web still exists for everyone. And beneath this increasingly desiccated surface, there is plenty of creators still simply creating.\n \n People create these sites simply so that they exist. They are not fed to an algorithm, or informed by any trends. It is quieter and slower, meant to tether us to a more mechanical framework of the web.\n \n This is the analog web.",
"html": "<h3>\n<a class=\"p-name u-bookmark-of\" href=\"https://thehistoryoftheweb.com/the-analog-web/\">\nThe Analog Web - The History of the Web\n</a>\n</h3>\n\n<blockquote>\n <p>Owning your own piece of the Internet (<a href=\"https://www.anildash.com/2024/02/06/wherever-you-get-podcasts/\">to borrow a recent phrase from Anil Dash</a>) is itself a radical act. Linking to others at will <a href=\"https://blog.jim-nielsen.com/2024/the-subversive-hyperlink/\">is subversive all on its own</a>. Or <a href=\"https://adactio.com/articles/13879\">as Jeremy Keith once put it</a>, \u201cit sounds positively disruptive to even suggest that you should have your own website.\u201d The web still exists for everyone. And beneath this increasingly desiccated surface, there is plenty of creators still simply creating.</p>\n \n <p>People create these sites simply so that they exist. They are not fed to an algorithm, or informed by any trends. It is quieter and slower, meant to tether us to a more mechanical framework of the web.</p>\n \n <p><em>This is the analog web.</em></p>\n</blockquote>"
},
"author": {
"type": "card",
"name": "Jeremy Keith",
"url": "https://adactio.com/",
"photo": "https://adactio.com/images/photo-150.jpg"
},
"post-type": "bookmark",
"_id": "40862001",
"_source": "2",
"_is_read": false
}
What is a good font combo for titles/body on a text oriented blog?
#11ty #webdev #indieweb
{
"type": "entry",
"author": {
"name": "@anders",
"url": "https://thoresson.social/@anders",
"photo": null
},
"url": "https://thoresson.social/@anders/112285584641939966",
"content": {
"html": "<p>What is a good font combo for titles/body on a text oriented blog? </p><p><a href=\"https://thoresson.social/tags/11ty\">#<span>11ty</span></a> <a href=\"https://thoresson.social/tags/webdev\">#<span>webdev</span></a> <a href=\"https://thoresson.social/tags/indieweb\">#<span>indieweb</span></a></p>",
"text": "What is a good font combo for titles/body on a text oriented blog? \n\n#11ty #webdev #indieweb"
},
"published": "2024-04-17T08:20:50+00:00",
"post-type": "note",
"_id": "40860469",
"_source": "8007",
"_is_read": false
}
I've only just discovered the #fediverse and found out #indieweb and #smallweb are what you call those cool, fun, real websites I've missed so badly.
I feel like I've just opened a door that I've only ever heard muffled crys of joy from the other side. It's completely bonkers in here. So much creativity. Am I late to the party or is it just getting started?
https://spyderooth.vercel.app//quick-posts/quick-post-2024-04-16-180205/
{
"type": "entry",
"author": {
"name": "@inforflux",
"url": "https://mastodon.social/@inforflux",
"photo": null
},
"url": "https://mastodon.social/@inforflux/112285011728220549",
"content": {
"html": "<p>I've only just discovered the <a href=\"https://mastodon.social/tags/fediverse\">#<span>fediverse</span></a> and found out <a href=\"https://mastodon.social/tags/indieweb\">#<span>indieweb</span></a> and <a href=\"https://mastodon.social/tags/smallweb\">#<span>smallweb</span></a> are what you call those cool, fun, real websites I've missed so badly.<br />I feel like I've just opened a door that I've only ever heard muffled crys of joy from the other side. It's completely bonkers in here. So much creativity. Am I late to the party or is it just getting started?<br /><a href=\"https://spyderooth.vercel.app//quick-posts/quick-post-2024-04-16-180205/\"><span>https://</span><span>spyderooth.vercel.app//quick-p</span><span>osts/quick-post-2024-04-16-180205/</span></a></p>",
"text": "I've only just discovered the #fediverse and found out #indieweb and #smallweb are what you call those cool, fun, real websites I've missed so badly.\nI feel like I've just opened a door that I've only ever heard muffled crys of joy from the other side. It's completely bonkers in here. So much creativity. Am I late to the party or is it just getting started?\nhttps://spyderooth.vercel.app//quick-posts/quick-post-2024-04-16-180205/"
},
"published": "2024-04-17T05:55:08+00:00",
"post-type": "note",
"_id": "40859738",
"_source": "8007",
"_is_read": false
}
100 percent agree: we need to "rewild" the Internet. And the #Fediverse and #indieweb and #openweb are all part of that one big fight.
https://mastodon.social/@freakonometrics/112283131450411828
{
"type": "entry",
"author": {
"name": "@tchambers",
"url": "https://indieweb.social/@tchambers",
"photo": null
},
"url": "https://indieweb.social/@tchambers/112283450334547219",
"content": {
"html": "<p>100 percent agree: we need to \"rewild\" the Internet. And the <a href=\"https://indieweb.social/tags/Fediverse\">#<span>Fediverse</span></a> and <a href=\"https://indieweb.social/tags/indieweb\">#<span>indieweb</span></a> and <a href=\"https://indieweb.social/tags/openweb\">#<span>openweb</span></a> are all part of that one big fight.<br /><a href=\"https://mastodon.social/@freakonometrics/112283131450411828\"><span>https://</span><span>mastodon.social/@freakonometri</span><span>cs/112283131450411828</span></a></p>",
"text": "100 percent agree: we need to \"rewild\" the Internet. And the #Fediverse and #indieweb and #openweb are all part of that one big fight.\nhttps://mastodon.social/@freakonometrics/112283131450411828"
},
"published": "2024-04-16T23:18:03+00:00",
"post-type": "note",
"_id": "40857809",
"_source": "8007",
"_is_read": false
}
New scrap posted, Sic Erat Scriptum. Alternatively titled, Fun With the Curse of Knowledge!
#IndieWeb #SmallWeb #latin
https://www.vzqk50.com/blog/scraps/sic-erat-scriptum/
{
"type": "entry",
"author": {
"name": "@ApisNecros",
"url": "https://ioc.exchange/@ApisNecros",
"photo": null
},
"url": "https://ioc.exchange/@ApisNecros/112282512575319306",
"content": {
"html": "<p>New scrap posted, Sic Erat Scriptum. Alternatively titled, Fun With the Curse of Knowledge!</p><p><a href=\"https://ioc.exchange/tags/IndieWeb\">#<span>IndieWeb</span></a> <a href=\"https://ioc.exchange/tags/SmallWeb\">#<span>SmallWeb</span></a> <a href=\"https://ioc.exchange/tags/latin\">#<span>latin</span></a><br /><a href=\"https://www.vzqk50.com/blog/scraps/sic-erat-scriptum/\"><span>https://www.</span><span>vzqk50.com/blog/scraps/sic-era</span><span>t-scriptum/</span></a></p>",
"text": "New scrap posted, Sic Erat Scriptum. Alternatively titled, Fun With the Curse of Knowledge!\n\n#IndieWeb #SmallWeb #latin\nhttps://www.vzqk50.com/blog/scraps/sic-erat-scriptum/"
},
"published": "2024-04-16T19:19:34+00:00",
"post-type": "note",
"_id": "40856082",
"_source": "8007",
"_is_read": false
}
Basic-ish #jekyll stuff but I just posted a new #devlog about using Jekyll's powerful "collections" feature.
https://shellsharks.com/devlog/collection-all-the-things
Using multiple collections and remembering to use collections whenever you can makes building new cool stuff for the site A LOT easier.
Also worth mentioning that in the #indieweb world, having multiple "types" of posts (i.e. "post", "note", etc…) is a valued characteristic (per #indiemark at least https://indieweb.org/IndieMark#Level_2_posts)
#blogging
{
"type": "entry",
"author": {
"name": "@shellsharks",
"url": "https://shellsharks.social/@shellsharks",
"photo": null
},
"url": "https://shellsharks.social/@shellsharks/112281848799996931",
"content": {
"html": "<p>Basic-ish <a href=\"https://shellsharks.social/tags/jekyll\">#<span>jekyll</span></a> stuff but I just posted a new <a href=\"https://shellsharks.social/tags/devlog\">#<span>devlog</span></a> about using Jekyll's powerful \"collections\" feature.</p><p><a href=\"https://shellsharks.com/devlog/collection-all-the-things\"><span>https://</span><span>shellsharks.com/devlog/collect</span><span>ion-all-the-things</span></a></p><p>Using multiple collections and remembering to use collections whenever you can makes building new cool stuff for the site A LOT easier.</p><p>Also worth mentioning that in the <a href=\"https://shellsharks.social/tags/indieweb\">#<span>indieweb</span></a> world, having multiple \"types\" of posts (i.e. \"post\", \"note\", etc\u2026) is a valued characteristic (per <a href=\"https://shellsharks.social/tags/indiemark\">#<span>indiemark</span></a> at least <a href=\"https://indieweb.org/IndieMark#Level_2_posts\"><span>https://</span><span>indieweb.org/IndieMark#Level_2</span><span>_posts</span></a>)</p><p><a href=\"https://shellsharks.social/tags/blogging\">#<span>blogging</span></a></p>",
"text": "Basic-ish #jekyll stuff but I just posted a new #devlog about using Jekyll's powerful \"collections\" feature.\n\nhttps://shellsharks.com/devlog/collection-all-the-things\n\nUsing multiple collections and remembering to use collections whenever you can makes building new cool stuff for the site A LOT easier.\n\nAlso worth mentioning that in the #indieweb world, having multiple \"types\" of posts (i.e. \"post\", \"note\", etc\u2026) is a valued characteristic (per #indiemark at least https://indieweb.org/IndieMark#Level_2_posts)\n\n#blogging"
},
"published": "2024-04-16T16:30:46+00:00",
"post-type": "note",
"_id": "40854606",
"_source": "8007",
"_is_read": false
}
{
"type": "entry",
"author": {
"name": "Paul Robert Lloyd",
"url": "https://paulrobertlloyd.com",
"photo": null
},
"url": "https://paulrobertlloyd.com/2024/107/a1/indiekit/",
"published": "2024-04-16T12:07:35+00:00",
"content": {
"html": "<blockquote><p>This project will be a marathon, not a sprint.</p></blockquote><p>Those were my words when <a href=\"https://paulrobertlloyd.com/2019/041/a1/weeknotes_5/\">I first mentioned building a Micropub server</a> in February 2019. 5 years later, these words have never been truer.</p><p>That Micropub server became <a href=\"https://getindiekit.com/\">Indiekit</a>, a Node.js application that aims to provide all the parts needed to publish content to a staticlly-generated website and then share it on social media.</p><p>It\u2019s been a while since I <a href=\"https://paulrobertlloyd.com/2022/351/a1/indiekit/\">formally announced the project in December 2022</a>, so I thought I\u2019d provide a progress report covering what\u2019s been added, what\u2019s still missing and my longer term ambitions.</p><h2>New features</h2><p>Aside from fixing a good number of bugs, I\u2019ve added the following features:</p><ul><li>The ability to <a href=\"https://getindiekit.com/plugins/post-types\">add post types via plug-ins</a></li><li>The ability to upload and add media items to posts</li><li>A Markdown editor with a full screen interface and auto save</li><li>A service worker with enhanced support for progressive web apps</li><li>An S3-compatible content store plug-in</li><li>A publication preset plug-in for Eleventy</li><li>Swedish, Latin American Spanish and simplified Chinese localisations</li></ul><p>There\u2019s been a good deal of polish to the content management interface, plus improvements to the onboarding experience and overall robustness of the application. I also updated the 600+ tests to use Node\u2019s native test runner instead of AVA.</p><p>The project is reasonably well documented, both within the code and outside of it. Whenever I return to the project, I\u2019m able to pick up from where I left off and, importantly, not feel like I need to rip everything apart and start again.</p><p>I\u2019m really happy and proud with what I\u2019ve built so far.</p><img src=\"https://paulrobertlloyd.com/media/2024/107/a1/markdown_editor.png#screenshot\" alt=\"Screenshot of the Markdown editing interface in full screen mode.\" /><h2>The perpetual beta</h2><p>If there\u2019s one thing I\u2019ve learnt during the development of this project, it\u2019s that I\u2019m bad at version numbering. My hesitancy to call anything \u2018done\u2019 means that, over <a href=\"https://github.com/getindiekit/indiekit/releases\">67 individual releases</a>, I\u2019ve published the following versions:</p><ul><li><code>v0.0.1</code></li><li><code>v0.0.2</code></li><li><code>v0.0.3</code></li><li><code>v0.1.0.alpha.x</code> (23 releases)</li><li><code>v0.1.0.beta.x</code> (5 releases)</li><li><code>v0.2.0</code></li><li><code>v0.3.0</code></li><li><code>v1.0.0.alpha.x</code> (19 releases)</li><li><code>v1.0.0.beta.x</code> (15 releases)</li></ul><p>Maybe this is fine, but it\u2019s clear that I like the comfort of alpha and beta releases which allow me to make breaking changes.</p><p>When will v1.0.0 be released? Well, there are a few gnarly issues that are preventing me from calling it done.</p><ul><li><h3>Syncing with content stores</h3><p>This issue is firmly within the realm of fundamental architectural constraint. Indiekit saves posts to a database as well as writing files to a content store such as a GitHub repository. This allows deleted posts to be restored later, and makes it easier to update posts without parsing files where data may have gone missing.</p><p>However, it also means there are 2 separate stores of data. In most cases, this is not a problem. However, should you create a post and the content store returns an error, the post in the database will not reflect the unpublished state of the post in the content store (and therefore your website).</p><p>I think the solution is to have posts remain in a pending state until the content store has confirmed that the file has been published. Sounds simple, but last time I tried to tackle this, I had to take a break from the project.</p></li><li><h3>Syndicating content to social networks</h3><p>I originally created syndicator plug-ins for the Internet Archive, Mastodon and Twitter. I removed the Twitter syndicator in Beta 5 (I don\u2019t need to explain why) while the Internet Archive syndicator can cause Indiekit\u2019s syndication endpoint to time out. That means in effect, there is only one usable syndicator at present. And even that one can end up creating duplicate posts on Mastodon.</p><p>This is another hairy architectural challenge, the sort that makes me question the decision to build my own software. A complete rethink is needed \u2013 and partly the reason why I\u2019ve not written plug-ins for other social networks yet.</p><p>I\u2019ve been toying with the idea of adding an event model to Indiekit. This would allow syndicators (and possibly other plug-ins) to hook into certain points of the publishing flow.</p><p>The speed in which a syndicator can return a URL to its syndicated copy would dictate which event they should hook into.</p><p>For example, the Mastodon syndicator could respond to a <code>publish.before</code> event, syndicate a post, append the returned URL to post data prior to this being sent on to the content store. Meanwhile, the Internet Archive syndicator could respond to a <code>publish.after</code> event, where it would query the Internet Archive <abbr title=\"application programming interface\">API</abbr> and only update a post once an archived URL had been created.</p><p>I\u2019d also like syndicators to provide equivalent methods when a post is updated or deleted. This would allow syndicated copies to remain in sync with content published to a website.</p></li><li><h3>An independent Micropub client</h3><p>One of the most intriguing aspects of Micropub is that it allows you to manage content on your website using different clients.</p><p>While any Micropub client can post to an Indiekit-powered website, it\u2019s not possible for Indiekit to publish to other websites in the same way. It should be possible, for example, to post to a Micro.blog-hosted blog using your Indiekit server.</p><p>There are a few changes I need to make to enable this. Firstly, Indiekit\u2019s authentication endpoint needs the ability to perform endpoint discovery, and the posts endpoint needs to query a website\u2019s Micropub endpoint to know which post types it supports.</p></li><li><h3>Documentation and tutorials</h3><p>While I\u2019ve tried to provide adequate documentation, it\u2019s written from the perspective of someone who knows far too much about the project! <a href=\"https://ohhelloana.blog/iwc-brighton-2024/\">Helping Ana set up Indiekit at IndieWebCamp</a> last month really highlighted how badly placed I am to write useful documentation about how to get started.</p><p>That sounds like a cop-out, really it\u2019s an invitation for people to try Indiekit and let me know how and where they\u2019re getting stuck.</p></li></ul><h2>The future</h2><p>In the future I\u2019d like to support Webmention, Microsub and ActivityPub protocols, as well as support multi-tenancy (the ability to have one server support several different websites).</p><p>I\u2019ve also got one eye on (and several pounds invested in) <a href=\"https://www.kickstarter.com/projects/fontawesome/web-awesome\">Web Awesome</a>; being able to lean on a well-designed, well-documented component system would make it easier to create plug-ins that provide pages to the application interface.</p><p>Lastly, I\u2019m questioning my choice of MongoDB; an SQL-like database would mean Indiekit could support more platforms and perhaps even use a single SQLite file.</p><p>But as you can see, there are a few knotty problems that I need to untangle before I take on any more complexity.</p><h2>Thank you</h2><p>Finally, a big thank you to everyone who has supported this project so far. The GitHub repository currently shows Indiekit as having:</p><ul><li>6 sponsors</li><li>13 contributors</li><li>51 dependent projects</li><li>320 stars</li></ul><p>Meanwhile on Localazy, 26 people have contributed to <a href=\"https://localazy.com/p/indiekit\">11 available translations</a> (with a further 10 translations pending).</p><p>Nothing makes me happier than when somebody files a bug or makes a pull request, each small contribution supporting me as I continue along this marathon IndieWeb journey.</p><p>Reply via email</p>",
"text": "This project will be a marathon, not a sprint.Those were my words when I first mentioned building a Micropub server in February 2019. 5 years later, these words have never been truer.\n\nThat Micropub server became Indiekit, a Node.js application that aims to provide all the parts needed to publish content to a staticlly-generated website and then share it on social media.\n\nIt\u2019s been a while since I formally announced the project in December 2022, so I thought I\u2019d provide a progress report covering what\u2019s been added, what\u2019s still missing and my longer term ambitions.New featuresAside from fixing a good number of bugs, I\u2019ve added the following features:The ability to add post types via plug-insThe ability to upload and add media items to postsA Markdown editor with a full screen interface and auto saveA service worker with enhanced support for progressive web appsAn S3-compatible content store plug-inA publication preset plug-in for EleventySwedish, Latin American Spanish and simplified Chinese localisationsThere\u2019s been a good deal of polish to the content management interface, plus improvements to the onboarding experience and overall robustness of the application. I also updated the 600+ tests to use Node\u2019s native test runner instead of AVA.\n\nThe project is reasonably well documented, both within the code and outside of it. Whenever I return to the project, I\u2019m able to pick up from where I left off and, importantly, not feel like I need to rip everything apart and start again.\n\nI\u2019m really happy and proud with what I\u2019ve built so far.The perpetual betaIf there\u2019s one thing I\u2019ve learnt during the development of this project, it\u2019s that I\u2019m bad at version numbering. My hesitancy to call anything \u2018done\u2019 means that, over 67 individual releases, I\u2019ve published the following versions:v0.0.1v0.0.2v0.0.3v0.1.0.alpha.x (23 releases)v0.1.0.beta.x (5 releases)v0.2.0v0.3.0v1.0.0.alpha.x (19 releases)v1.0.0.beta.x (15 releases)Maybe this is fine, but it\u2019s clear that I like the comfort of alpha and beta releases which allow me to make breaking changes.\n\nWhen will v1.0.0 be released? Well, there are a few gnarly issues that are preventing me from calling it done.Syncing with content storesThis issue is firmly within the realm of fundamental architectural constraint. Indiekit saves posts to a database as well as writing files to a content store such as a GitHub repository. This allows deleted posts to be restored later, and makes it easier to update posts without parsing files where data may have gone missing.\n\nHowever, it also means there are 2 separate stores of data. In most cases, this is not a problem. However, should you create a post and the content store returns an error, the post in the database will not reflect the unpublished state of the post in the content store (and therefore your website).\n\nI think the solution is to have posts remain in a pending state until the content store has confirmed that the file has been published. Sounds simple, but last time I tried to tackle this, I had to take a break from the project.Syndicating content to social networksI originally created syndicator plug-ins for the Internet Archive, Mastodon and Twitter. I removed the Twitter syndicator in Beta 5 (I don\u2019t need to explain why) while the Internet Archive syndicator can cause Indiekit\u2019s syndication endpoint to time out. That means in effect, there is only one usable syndicator at present. And even that one can end up creating duplicate posts on Mastodon.\n\nThis is another hairy architectural challenge, the sort that makes me question the decision to build my own software. A complete rethink is needed \u2013 and partly the reason why I\u2019ve not written plug-ins for other social networks yet.\n\nI\u2019ve been toying with the idea of adding an event model to Indiekit. This would allow syndicators (and possibly other plug-ins) to hook into certain points of the publishing flow.\n\nThe speed in which a syndicator can return a URL to its syndicated copy would dictate which event they should hook into.\n\nFor example, the Mastodon syndicator could respond to a publish.before event, syndicate a post, append the returned URL to post data prior to this being sent on to the content store. Meanwhile, the Internet Archive syndicator could respond to a publish.after event, where it would query the Internet Archive API and only update a post once an archived URL had been created.\n\nI\u2019d also like syndicators to provide equivalent methods when a post is updated or deleted. This would allow syndicated copies to remain in sync with content published to a website.An independent Micropub clientOne of the most intriguing aspects of Micropub is that it allows you to manage content on your website using different clients.\n\nWhile any Micropub client can post to an Indiekit-powered website, it\u2019s not possible for Indiekit to publish to other websites in the same way. It should be possible, for example, to post to a Micro.blog-hosted blog using your Indiekit server.\n\nThere are a few changes I need to make to enable this. Firstly, Indiekit\u2019s authentication endpoint needs the ability to perform endpoint discovery, and the posts endpoint needs to query a website\u2019s Micropub endpoint to know which post types it supports.Documentation and tutorialsWhile I\u2019ve tried to provide adequate documentation, it\u2019s written from the perspective of someone who knows far too much about the project! Helping Ana set up Indiekit at IndieWebCamp last month really highlighted how badly placed I am to write useful documentation about how to get started.\n\nThat sounds like a cop-out, really it\u2019s an invitation for people to try Indiekit and let me know how and where they\u2019re getting stuck.The futureIn the future I\u2019d like to support Webmention, Microsub and ActivityPub protocols, as well as support multi-tenancy (the ability to have one server support several different websites).\n\nI\u2019ve also got one eye on (and several pounds invested in) Web Awesome; being able to lean on a well-designed, well-documented component system would make it easier to create plug-ins that provide pages to the application interface.\n\nLastly, I\u2019m questioning my choice of MongoDB; an SQL-like database would mean Indiekit could support more platforms and perhaps even use a single SQLite file.\n\nBut as you can see, there are a few knotty problems that I need to untangle before I take on any more complexity.Thank youFinally, a big thank you to everyone who has supported this project so far. The GitHub repository currently shows Indiekit as having:6 sponsors13 contributors51 dependent projects320 starsMeanwhile on Localazy, 26 people have contributed to 11 available translations (with a further 10 translations pending).\n\nNothing makes me happier than when somebody files a bug or makes a pull request, each small contribution supporting me as I continue along this marathon IndieWeb journey.\n\nReply via email"
},
"name": "The state of Indiekit",
"post-type": "article",
"_id": "40853820",
"_source": "3686",
"_is_read": false
}
{
"type": "entry",
"author": {
"name": "@knowler",
"url": "https://sunny.garden/@knowler",
"photo": null
},
"url": "https://sunny.garden/@knowler/112281509757352871",
"content": {
"html": "<p>How and why I\u2019m self-hosting my code demos.<br /><a href=\"https://knowler.dev/blog/self-hosting-code-demos\"><span>https://</span><span>knowler.dev/blog/self-hosting-</span><span>code-demos</span></a></p><p><a href=\"https://sunny.garden/tags/IndieWeb\">#<span>IndieWeb</span></a></p>",
"text": "How and why I\u2019m self-hosting my code demos.\nhttps://knowler.dev/blog/self-hosting-code-demos\n\n#IndieWeb"
},
"published": "2024-04-16T15:04:33+00:00",
"post-type": "note",
"_id": "40853645",
"_source": "8007",
"_is_read": false
}
New brain rot: Dune Part II
"But I was very skeptical. The trailers seemed to indicate a train wreck. They were full of explosions, angry screaming guys and the taglines about war. Dune was never about war. War was in there, but it was never the point. But cinema, SciFi especially, loves special effects, and big-booms are amongst the most used. I dislike a lot of SciFi movies from the USA, as the (so called) spectacle is all there is."
https://michal.sapka.me/brain-rot/dune/part-two-2024/
#dune #scifi #100daystooffload #smallweb #indieweb
{
"type": "entry",
"author": {
"name": "@mms",
"url": "https://emacs.ch/@mms",
"photo": null
},
"url": "https://emacs.ch/@mms/112281445160069036",
"content": {
"html": "<p>New brain rot: Dune Part II</p><p>\"But I was very skeptical. The trailers seemed to indicate a train wreck. They were full of explosions, angry screaming guys and the taglines about war. Dune was never about war. War was in there, but it was never the point. But cinema, SciFi especially, loves special effects, and big-booms are amongst the most used. I dislike a lot of SciFi movies from the USA, as the (so called) spectacle is all there is.\"</p><p><a href=\"https://michal.sapka.me/brain-rot/dune/part-two-2024/\"><span>https://</span><span>michal.sapka.me/brain-rot/dune</span><span>/part-two-2024/</span></a></p><p><a href=\"https://emacs.ch/tags/dune\">#<span>dune</span></a> <a href=\"https://emacs.ch/tags/scifi\">#<span>scifi</span></a> <a href=\"https://emacs.ch/tags/100daystooffload\">#<span>100daystooffload</span></a> <a href=\"https://emacs.ch/tags/smallweb\">#<span>smallweb</span></a> <a href=\"https://emacs.ch/tags/indieweb\">#<span>indieweb</span></a></p>",
"text": "New brain rot: Dune Part II\n\n\"But I was very skeptical. The trailers seemed to indicate a train wreck. They were full of explosions, angry screaming guys and the taglines about war. Dune was never about war. War was in there, but it was never the point. But cinema, SciFi especially, loves special effects, and big-booms are amongst the most used. I dislike a lot of SciFi movies from the USA, as the (so called) spectacle is all there is.\"\n\nhttps://michal.sapka.me/brain-rot/dune/part-two-2024/\n\n#dune #scifi #100daystooffload #smallweb #indieweb"
},
"published": "2024-04-16T14:48:07+00:00",
"post-type": "note",
"_id": "40853493",
"_source": "8007",
"_is_read": false
}
Added a #now page to my personal site. Pretty bare-bones at the moment but it's a neat idea. https://www.jack-case.pro/now/
#PersonalSites #Website #Hugo #indieweb
{
"type": "entry",
"author": {
"name": "@GandalfDG",
"url": "https://indieweb.social/@GandalfDG",
"photo": null
},
"url": "https://indieweb.social/@GandalfDG/112281281321649906",
"content": {
"html": "<p>Added a <a href=\"https://indieweb.social/tags/now\">#<span>now</span></a> page to my personal site. Pretty bare-bones at the moment but it's a neat idea. <a href=\"https://www.jack-case.pro/now/\"><span>https://www.</span><span>jack-case.pro/now/</span><span></span></a></p><p><a href=\"https://indieweb.social/tags/PersonalSites\">#<span>PersonalSites</span></a> <a href=\"https://indieweb.social/tags/Website\">#<span>Website</span></a> <a href=\"https://indieweb.social/tags/Hugo\">#<span>Hugo</span></a> <a href=\"https://indieweb.social/tags/indieweb\">#<span>indieweb</span></a></p>",
"text": "Added a #now page to my personal site. Pretty bare-bones at the moment but it's a neat idea. https://www.jack-case.pro/now/\n\n#PersonalSites #Website #Hugo #indieweb"
},
"published": "2024-04-16T14:06:27+00:00",
"post-type": "note",
"_id": "40852983",
"_source": "8007",
"_is_read": false
}
I love this exact kind of tech you describe! The #SmallTech and the #SmallWeb and, by extension, the #IndieWeb @collinsworth
{
"type": "entry",
"author": {
"name": "@weirdwriter",
"url": "https://tweesecake.social/@weirdwriter",
"photo": null
},
"url": "https://tweesecake.social/@weirdwriter/112281103270555752",
"content": {
"html": "<p>I love this exact kind of tech you describe! The <a href=\"https://tweesecake.social/tags/SmallTech\">#<span>SmallTech</span></a> and the <a href=\"https://tweesecake.social/tags/SmallWeb\">#<span>SmallWeb</span></a> and, by extension, the <a href=\"https://tweesecake.social/tags/IndieWeb\">#<span>IndieWeb</span></a> <span class=\"h-card\"><a class=\"u-url\" href=\"https://hachyderm.io/@collinsworth\">@<span>collinsworth</span></a></span></p>\n<a class=\"u-mention\" href=\"https://hachyderm.io/@collinsworth\"></a>",
"text": "I love this exact kind of tech you describe! The #SmallTech and the #SmallWeb and, by extension, the #IndieWeb @collinsworth"
},
"published": "2024-04-16T13:21:10+00:00",
"post-type": "note",
"_id": "40852984",
"_source": "8007",
"_is_read": false
}
The most important lesson that blogging taught me is that writing is for thinking first, communication last.
{
"type": "entry",
"published": "2024-04-16T10:43:56Z",
"url": "https://adactio.com/links/21051",
"category": [
"writing",
"blogging",
"thinking",
"sharing",
"communication",
"indieweb"
],
"bookmark-of": [
"https://robinrendle.com/notes/good-and-useful-writing-/"
],
"content": {
"text": "Robin Rendle \u2014 Good and useful writing\n\n\n\n\n The most important lesson that blogging taught me is that writing is for thinking first, communication last.",
"html": "<h3>\n<a class=\"p-name u-bookmark-of\" href=\"https://robinrendle.com/notes/good-and-useful-writing-/\">\nRobin Rendle \u2014 Good and useful writing\n</a>\n</h3>\n\n<blockquote>\n <p>The most important lesson that blogging taught me is that writing is for thinking first, communication last.</p>\n</blockquote>"
},
"author": {
"type": "card",
"name": "Jeremy Keith",
"url": "https://adactio.com/",
"photo": "https://adactio.com/images/photo-150.jpg"
},
"post-type": "bookmark",
"_id": "40851660",
"_source": "2",
"_is_read": false
}