<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Web - Bagaag</title>
	<atom:link href="https://www.bagaag.com/category/web/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.bagaag.com</link>
	<description></description>
	<lastBuildDate>Mon, 05 Jan 2026 02:01:16 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://www.bagaag.com/wp-content/uploads/2025/09/cropped-bagaag-favicon-32x32.png</url>
	<title>Web - Bagaag</title>
	<link>https://www.bagaag.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
					<title>Random Web Surfing</title>
					<link>https://www.bagaag.com/random-web-surfing/</link>
					<comments>https://www.bagaag.com/random-web-surfing/#respond</comments>
		
		<dc:creator><![CDATA[matt]]></dc:creator>
		<pubDate>Mon, 05 Jan 2026 02:01:15 +0000</pubDate>
				<category><![CDATA[Web]]></category>
		<guid isPermaLink="false">https://www.bagaag.com/?p=808</guid>

					<description><![CDATA[url.town is an indie web home grown URL directory of fun, interesting or useful websites. Spamming the random link link is a wonderful way to wile away a few hours and learn something along the way. I also enjoy Wikipedia’s random link and Indiewebring’s random link.]]></description>
										<content:encoded><![CDATA[
<p><a href="https://url.town/">url.town</a> is an indie web home grown URL directory of fun, interesting or useful websites. Spamming the <a href="https://url.town/random">random link</a> link is a wonderful way to wile away a few hours and learn something along the way. I also enjoy Wikipedia’s <a href="https://en.wikipedia.org/wiki/Special:Random">random link</a> and <a href="https://xn--sr8hvo.ws/">Indiewebring</a>’s <a href="https://xn--sr8hvo.ws/random">random link</a>. </p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bagaag.com/random-web-surfing/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
					<title>The Social Website — Update</title>
					<link>https://www.bagaag.com/the-social-website-update/</link>
					<comments>https://www.bagaag.com/the-social-website-update/#comments</comments>
		
		<dc:creator><![CDATA[matt]]></dc:creator>
		<pubDate>Sat, 11 Oct 2025 04:09:19 +0000</pubDate>
				<category><![CDATA[Web]]></category>
		<guid isPermaLink="false">https://www.bagaag.com/?p=423</guid>

					<description><![CDATA[This is a follow-up to my previous post, The Social Website. In that post, I challenged myself to turn this website into my “central social media hub”. Having thought about it a while, I suppose that can mean any combination of a few things: So I’ve just been mucking about with plugins to see what’s [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>This is a follow-up to my previous post, <a href="https://www.bagaag.com/2025/09/23/the-social-website/" data-type="post" data-id="202">The Social Website</a>. In that post, I challenged myself to turn this website into my “central social media hub”. Having thought about it a while, I suppose that can mean any combination of a few things:</p>



<span id="more-423"></span>



<ol class="wp-block-list">
<li>Use the website to post content, replacing the act of posting to other social networks</li>



<li> Syndicating that content to other social networks — either manually, automatically or on schedule</li>



<li>Pulling in reactions from other social networks — for example, displaying on the website if a post got a reply or like on a social network where it was posted</li>



<li>The ability to interact with social network posts by reposting and sharing content from external feeds</li>
</ol>



<p>So I’ve just been mucking about with plugins to see what’s out there.</p>



<p>I tried a WordPress plugin called <em>Blog2Social: Social Media Auto Post &amp; Scheduler</em>, but it couldn’t even connect to my Mastodon account without the paid version. I’d honestly just manually post rather than pay a subscription fee. But for $29/year, it can post to up to 25 social networks. I need at least the $11/yr version just to connect to Mastodon, which is the only social network I’m currently active on. Blog2Social has a <a href="https://en.blog2social.com/pricing/#wordpress-plugin">silly complicated</a> pricing structure. But if it works, and you want to post to a bunch of social networks from WordPress, the cost isn’t bad. It’s good to know there are options for this, but I decided I’m happy to just post a link to Mastodon when I need to. Doing that from WordPress isn’t particularly helpful for me.</p>



<p>What I really wanted was to make it easy to share and interact with the content on this site. I installed the <a href="https://wordpress.org/plugins/add-to-any/">AddToAny</a> plugin for this. That’s one of the two sharing plugins we recommend to clients at work. Seems like Oracle bought <a href="https://www.addtoany.com/blog/replace-addthis-with-addtoany-the-addthis-alternative/">the other one</a> and now is shutting it down. Nice. I like AddToAny because it replaces the Blocksy theme’s less complete sharing options. It looks good and works well. AddToAny <a href="https://en.wikipedia.org/wiki/AddToAny">supposedly</a> makes money by selling data, but its unclear exactly what data they are collecting and who they are selling it to. I could find nothing about this anywhere on the website, even in the <a href="https://www.addtoany.com/terms">terms of service</a>. That’s pretty shady. There is no paid option. It wasn’t enough to keep me from using it, in any case. This is a public website, and if someone is sharing, they’re most likely doing that publicly too. So whatever, take public data and sell it, I guess?</p>



<p>Despite integrating with a ridiculously large number of sharing targets, Instagram isn’t supported by AddToAny out of the box. I found some <a href="https://wordpress.stackexchange.com/questions/307795/no-way-to-add-instagram-in-addtoany-plugin">code on SO</a> that adds it as an option. I tweaked it to reference a better Instagram logo I found and uploaded to WordPress, and changed the icon size to match the default AddToAny icons:</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.75rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#39404f;color:#c8d0e0">PHP</span><span role="button" tabindex="0" style="color:#d8dee9ff;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>/*  AddToAny Instagram */
function addtoany_add_share_services( $services ) {
    $services['example_share_service'] = array(
        'name'        =&gt; 'Instagram',
        'icon_url'    =&gt; site_url('/wp-content/uploads/2025/10/instagram.gif'),
        'icon_width'  =&gt; 34,
        'icon_height' =&gt; 34,
        'href'        =&gt; 'https://www.instagram.com/',
    );
    return $services;
}
add_filter( 'A2A_SHARE_SAVE_services', 'addtoany_add_share_services', 10, 1 );</textarea></pre><svg style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4" /><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2" /></svg></span><pre class="shiki nord" style="background-color: #2e3440ff" tabindex="0"><code><span class="line"><span style="color: #616E88">/*  AddToAny Instagram */</span></span>
<span class="line"><span style="color: #81A1C1">function</span><span style="color: #D8DEE9FF"> </span><span style="color: #88C0D0">addtoany_add_share_services</span><span style="color: #ECEFF4">(</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">$</span><span style="color: #D8DEE9">services</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">)</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">{</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #81A1C1">$</span><span style="color: #D8DEE9">services</span><span style="color: #ECEFF4">[</span><span style="color: #ECEFF4">'</span><span style="color: #A3BE8C">example_share_service</span><span style="color: #ECEFF4">'</span><span style="color: #ECEFF4">]</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">array</span><span style="color: #ECEFF4">(</span></span>
<span class="line"><span style="color: #D8DEE9FF">        </span><span style="color: #ECEFF4">'</span><span style="color: #A3BE8C">name</span><span style="color: #ECEFF4">'</span><span style="color: #D8DEE9FF">        </span><span style="color: #81A1C1">=&gt;</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">'</span><span style="color: #A3BE8C">Instagram</span><span style="color: #ECEFF4">'</span><span style="color: #ECEFF4">,</span></span>
<span class="line"><span style="color: #D8DEE9FF">        </span><span style="color: #ECEFF4">'</span><span style="color: #A3BE8C">icon_url</span><span style="color: #ECEFF4">'</span><span style="color: #D8DEE9FF">    </span><span style="color: #81A1C1">=&gt;</span><span style="color: #D8DEE9FF"> </span><span style="color: #88C0D0">site_url</span><span style="color: #ECEFF4">(</span><span style="color: #ECEFF4">'</span><span style="color: #A3BE8C">/wp-content/uploads/2025/10/instagram.gif</span><span style="color: #ECEFF4">'</span><span style="color: #ECEFF4">),</span></span>
<span class="line"><span style="color: #D8DEE9FF">        </span><span style="color: #ECEFF4">'</span><span style="color: #A3BE8C">icon_width</span><span style="color: #ECEFF4">'</span><span style="color: #D8DEE9FF">  </span><span style="color: #81A1C1">=&gt;</span><span style="color: #D8DEE9FF"> </span><span style="color: #B48EAD">34</span><span style="color: #ECEFF4">,</span></span>
<span class="line"><span style="color: #D8DEE9FF">        </span><span style="color: #ECEFF4">'</span><span style="color: #A3BE8C">icon_height</span><span style="color: #ECEFF4">'</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">=&gt;</span><span style="color: #D8DEE9FF"> </span><span style="color: #B48EAD">34</span><span style="color: #ECEFF4">,</span></span>
<span class="line"><span style="color: #D8DEE9FF">        </span><span style="color: #ECEFF4">'</span><span style="color: #A3BE8C">href</span><span style="color: #ECEFF4">'</span><span style="color: #D8DEE9FF">        </span><span style="color: #81A1C1">=&gt;</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">'</span><span style="color: #A3BE8C">https://www.instagram.com/</span><span style="color: #ECEFF4">'</span><span style="color: #ECEFF4">,</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #ECEFF4">)</span><span style="color: #81A1C1">;</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #81A1C1">return</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">$</span><span style="color: #D8DEE9">services</span><span style="color: #81A1C1">;</span></span>
<span class="line"><span style="color: #ECEFF4">}</span></span>
<span class="line"><span style="color: #88C0D0">add_filter</span><span style="color: #ECEFF4">(</span><span style="color: #88C0D0"> </span><span style="color: #ECEFF4">'</span><span style="color: #A3BE8C">A2A_SHARE_SAVE_services</span><span style="color: #ECEFF4">'</span><span style="color: #ECEFF4">,</span><span style="color: #88C0D0"> </span><span style="color: #ECEFF4">'</span><span style="color: #A3BE8C">addtoany_add_share_services</span><span style="color: #ECEFF4">'</span><span style="color: #ECEFF4">,</span><span style="color: #88C0D0"> </span><span style="color: #B48EAD">10</span><span style="color: #ECEFF4">,</span><span style="color: #88C0D0"> </span><span style="color: #B48EAD">1</span><span style="color: #88C0D0"> </span><span style="color: #ECEFF4">)</span><span style="color: #81A1C1">;</span></span></code></pre></div>



<p>In the spirit of making this space more interactive, I enabled standard WordPress comments and registration. Because doing this creates a nearly instant spam honeypot, I installed  <a href="https://pluginkollektiv.org/plugins/">Antispam Bee</a>.</p>



<p>I also installed the <a href="https://wordpress.org/plugins/indieweb/">IndieWeb</a> plugin. This plugin wraps a bunch of other plugins that provide additional features. It’s a little unclear what, if anything, the core plugin does. But it collects a bunch of other plugins. </p>



<figure data-wp-context="{&quot;imageId&quot;:&quot;69c944eda5523&quot;}" data-wp-interactive="core/image" data-wp-key="69c944eda5523" class="wp-block-image size-large wp-lightbox-container"><img fetchpriority="high" decoding="async" width="1024" height="624" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://www.bagaag.com/wp-content/uploads/2025/10/indieweb-plugin-extensions-1024x624.png" alt class="wp-image-518" srcset="https://www.bagaag.com/wp-content/uploads/2025/10/indieweb-plugin-extensions-1024x624.png 1024w, https://www.bagaag.com/wp-content/uploads/2025/10/indieweb-plugin-extensions-300x183.png 300w, https://www.bagaag.com/wp-content/uploads/2025/10/indieweb-plugin-extensions-768x468.png 768w, https://www.bagaag.com/wp-content/uploads/2025/10/indieweb-plugin-extensions-1536x937.png 1536w, https://www.bagaag.com/wp-content/uploads/2025/10/indieweb-plugin-extensions.png 1653w" sizes="(max-width: 1024px) 100vw, 1024px"><button class="lightbox-trigger" type="button" aria-haspopup="dialog" aria-label="Enlarge" data-wp-init="callbacks.initTriggerButton" data-wp-on--click="actions.showLightbox" data-wp-style--right="state.imageButtonRight" data-wp-style--top="state.imageButtonTop">
			<svg width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>



<p>Webmention is like the standards-based implementation of WordPress <a href="https://wordpress.org/documentation/article/trackbacks-and-pingbacks/">pingbacks</a>. I set up IndieAuth, which is a cool idea that is slowly gaining <a href="https://indieweb.org/IndieAuth_clients">adoption</a>. Syndication Links lets you reference where else you posted the same content or a reference to it. WebSub is a cool idea — basically web hooks for website notifications. I’ll be tinkering with this stuff. IndieBlocks seems to provide a set of questionably useful blocks. This one formats a repost, which is kind of cool:</p>



<div class="wp-block-indieblocks-repost"><div class="u-repost-of h-cite"><p><i>Reposted <a class="u-url p-name" href="https://mastodon.online/@universalhub/115353401056878569">Universal Hub: “Hours after refusing to kiss the Presidential rin…” — Mastodon</a>.</i></p><blockquote class="wp-block-quote e-content">
<p>Hours after refusing to kiss the Presidential ring, <a href="https://mastodon.online/tags/MIT">#MIT</a> wins court battle over Defense Department plan to slash its grant funding</p>
</blockquote></div></div>



<p>At least for Mastodon, using their embed code looks a lot better:</p>



<blockquote class="mastodon-embed" data-embed-url="https://indieweb.social/@Bagaag/115296675531979338/embed" style="background: #FCF8FF; border-radius: 8px; border: 1px solid #C9C4DA; margin: 0; max-width: 540px; min-width: 270px; overflow: hidden; padding: 0;"> <a href="https://indieweb.social/@Bagaag/115296675531979338" target="_blank" style="align-items: center; color: #1C1A25; display: flex; flex-direction: column; font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', Roboto, sans-serif; font-size: 14px; justify-content: center; letter-spacing: 0.25px; line-height: 20px; padding: 24px; text-decoration: none;"> <svg width="32" height="32" viewBox="0 0 79 75" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M63 45.3v-20c0-4.1-1-7.3-3.2-9.7-2.1-2.4-5-3.7-8.5-3.7-4.1 0-7.2 1.6-9.3 4.7l-2 3.3-2-3.3c-2-3.1-5.1-4.7-9.2-4.7-3.5 0-6.4 1.3-8.6 3.7-2.1 2.4-3.1 5.6-3.1 9.7v20h8V25.9c0-4.1 1.7-6.2 5.2-6.2 3.8 0 5.8 2.5 5.8 7.4V37.7H44V27.1c0-4.9 1.9-7.4 5.8-7.4 3.5 0 5.2 2.1 5.2 6.2V45.3h8ZM74.7 16.6c.6 6 .1 15.7.1 17.3 0 .5-.1 4.8-.1 5.3-.7 11.5-8 16-15.6 17.5-.1 0-.2 0-.3 0-4.9 1-10 1.2-14.9 1.4-1.2 0-2.4 0-3.6 0-4.8 0-9.7-.6-14.4-1.7-.1 0-.1 0-.1 0s-.1 0-.1 0 0 .1 0 .1 0 0 0 0c.1 1.6.4 3.1 1 4.5.6 1.7 2.9 5.7 11.4 5.7 5 0 9.9-.6 14.8-1.7 0 0 0 0 0 0 .1 0 .1 0 .1 0 0 .1 0 .1 0 .1.1 0 .1 0 .1.1v5.6s0 .1-.1.1c0 0 0 0 0 .1-1.6 1.1-3.7 1.7-5.6 2.3-.8.3-1.6.5-2.4.7-7.5 1.7-15.4 1.3-22.7-1.2-6.8-2.4-13.8-8.2-15.5-15.2-.9-3.8-1.6-7.6-1.9-11.5-.6-5.8-.6-11.7-.8-17.5C3.9 24.5 4 20 4.9 16 6.7 7.9 14.1 2.2 22.3 1c1.4-.2 4.1-1 16.5-1h.1C51.4 0 56.7.8 58.1 1c8.4 1.2 15.5 7.5 16.6 15.6Z" fill="currentColor" /></svg> <div style="color: #787588; margin-top: 16px;">Post by @Bagaag@indieweb.social</div> <div style="font-weight: 500;">View on Mastodon</div> </a> </blockquote> <script data-allowed-prefixes="https://indieweb.social/" async src="https://indieweb.social/embed.js"></script>



<p></p>



<p>Finally, I added this site to the <a href="https://xn--sr8hvo.ws/">IndieWeb Webring</a>, which is now displayed in the footer with links to previous and next sites in the ring. These are fun to surf through. </p>



<p>I’m curious to see what I can do with cross-posting to Mastodon. Can I capture replies and likes and boosts from Mastodon in WordPress?</p>



<p>Late breaking update: <a href="http://mwaters.net/">Mark Waters</a> posted a comment suggesting a couple additional plugins for Mastodon integration. <a href="https://github.com/janboddez/share-on-mastodon">Share on Mastodon</a> is an easy way to auto-post to Mastodon from the WordPress editor. And <a href="https://wordpress.org/plugins/replies-importer-for-mastodon/">Replies Importer for Mastodon</a> closes the loop, importing replies to posts on Mastodon that link back to a page here into comments in WordPress.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bagaag.com/the-social-website-update/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
					<title>The Social Website</title>
					<link>https://www.bagaag.com/the-social-website/</link>
					<comments>https://www.bagaag.com/the-social-website/#respond</comments>
		
		<dc:creator><![CDATA[matt]]></dc:creator>
		<pubDate>Tue, 23 Sep 2025 02:45:57 +0000</pubDate>
				<category><![CDATA[Web]]></category>
		<guid isPermaLink="false">https://www.bagaag.com/?p=202</guid>

					<description><![CDATA[What if personal websites could replace traditional social media networks as the primary vehicle for sharing content on the Internet? Back in the 90s, if you wanted to share information on the Internet, you created a personal website. There was a fairly steep learning curve, limiting access to those few willing to put in sufficient [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>What if personal websites could replace traditional social media networks as the primary vehicle for sharing content on the Internet?</p>



<span id="more-202"></span>



<p>Back in the 90s, if you wanted to share information on the Internet, you created a personal website. There was a fairly steep learning curve, limiting access to those few willing to put in sufficient elbow grease. Today, social media is the de facto method for sharing information online. Networks like Facebook, Instagram and X provide some attractive features that were simply not available on the traditional personal website:</p>



<ul class="wp-block-list">
<li>Super easy to use, no technical skills or complex setup required.</li>



<li>A very low barrier to post — just type a few words, maybe pick a photo, and you’re done.</li>



<li>A rewarding feedback loop in the form of likes, replies and re-posts from family, friends and followers.</li>



<li>The “network” effect, meaning most of the people you know are on the platform.</li>



<li>The ability to make your content public or limited to people you know.</li>



<li>They’re “free”.</li>
</ul>



<p>Social media companies have done well to provide software that keeps users coming back. Unfortunately, these companies have also made lots of decisions along the way that are decidedly against the interest of their users:</p>



<ul class="wp-block-list">
<li>While users may technically own their content, they relinquish full use and access to the network, and networks deliberately make it hard or impossible to export your data and move it somewhere else. </li>



<li>They use proprietary formats, protocols and APIs that are deliberately incompatible with other networks or websites. By offering the service for free, these companies paid to collect that valuable data and they have no incentive to let it go.</li>



<li>They minimize posting updates and maximize display of algorithmic content designed to keep users hooked via emotionally charged and divisive messages. The vast majority of time spent on social networks is consuming, not creating content. Studies have repeatedly shown that such curated content consumption has resulted in numerous harms to society and mental health.</li>



<li>They collect and leverage every post, photo and action taken on the network for targeted advertising, manipulation via algorithmic content and training AI models. </li>
</ul>



<p>The big social networks are free for the vast majority of users, and many even pay top content creators. But few users ever really consider what they’re giving up in exchange for that free service. The actual per-user cost to run a typical social media network is tiny, and the social media companies are profiting tens of billions of dollars per year on their “free” service. </p>



<p>Thankfully, there are better options. A number of open platforms, protocols, and APIs have emerged as a direct response to frustration with the closed, proprietary, and data-extractive nature of traditional social media giants. The core idea is to decentralize social networking, giving users more control over their data, identity, and content.</p>



<p>A review of these would be an entire post, so I’ll just briefly list the big ones: </p>



<ul class="wp-block-list">
<li><a href="https://en.wikipedia.org/wiki/ActivityPub">ActivityPub</a> is a W3C-recommended open standard and protocol for decentralized social networking. Around it has grown an ecosystem of open source social media platforms to replace the likes of X (<a href="https://en.wikipedia.org/wiki/Mastodon_(social_network)">Mastodon</a>), Instagram (<a href="https://en.wikipedia.org/wiki/Pixelfed">Pixelfed</a>) and YouTube (<a href="https://en.wikipedia.org/wiki/PeerTube">PeerTube</a>). All of these platforms speak the same underlying language, and anyone can host their own instance or write software that interoperates with them.</li>



<li>The <a href="https://en.wikipedia.org/wiki/AT_Protocol">AT protocol</a> is similar to ActivityPub, but differs in several technical areas. It’s primary implementation is <a href="https://en.wikipedia.org/wiki/Bluesky">BlueSky</a>, which is closed source software owned by a corporation. While BlueSky is a <a href="https://en.wikipedia.org/wiki/Benefit_corporation">benefit corporation</a>, it is still ultimately profit-driven and beholden to its venture capital investors.</li>



<li>Blockchain’s tamper-proof and decentralized architecture provides the basis for some interesting but still experimental social protocols like <a href="https://github.com/farcasterxyz/protocol">Farcaster</a>, <a href="https://lens.xyz/docs/chain/overview">Lens</a> and <a href="https://en.wikipedia.org/wiki/Nostr">Nostr</a>.</li>



<li>There are a number of interesting infrastructure-level protocols that focus on decentralization, tamper-resistance and autonomous governance like <a href="https://en.wikipedia.org/wiki/InterPlanetary_File_System">IPFS</a> and <a href="https://en.wikipedia.org/wiki/Filecoin">Filecoin</a> for storage or <a href="https://internetcomputer.org/what-is-the-ic">ICP</a> and <a href="https://www.fluence.network/">Fluence</a> for compute. While these aren’t for end-users, they provide a viable back-bone for decentralized Internet services.</li>
</ul>



<p>Unfortunately, these alternatives have yet to catch on in a meaningful way. Meta and X still massively dominate Internet attention and participation. Perhaps a new breed of decentralized and open social media will ascend and eventually overtake the big players. Or perhaps they’ll grow just large enough to bring the big players back in line with the interests of their end users. Either way, I envision a rocky road ahead.</p>



<p>As I’ve been learning about this stuff and tinkering with this website, I’m reminded that a personal website is still the most flexible, standards-based, and widely accessible “home” for what a person may want to share on the Internet. Websites can be programmed to do anything, so there’s nothing stopping a personal website from also doing things you might expect from a social media network, like:</p>



<ul class="wp-block-list">
<li>Effortlessly re-posting content to any open or otherwise accessible social protocol or network.</li>



<li>Aggregating posts and feeds of interest from open protocols or other accessible networks.</li>



<li>Responding to and displaying feedback on re-posts, likes and replies from syndicating networks. </li>
</ul>



<p>In addition to social network integration, personal websites offer a number of things no single social network or app can, such as:</p>



<ul class="wp-block-list">
<li>Providing a permanent “home” on the Internet that is fully owned and controlled by the end user.</li>



<li>The ability to add software and features from different sources or custom software written by the end user.</li>



<li>Allowing for full design customization.</li>



<li>The ability to host it on any number of platforms, centralized or decentralized, allowing the end-user to move it freely between platforms.</li>



<li>The ability to self-host on a home computer.</li>



<li>Complete end-user ownership and custody of all the data.</li>
</ul>



<p>As of this writing, this site is running on WordPress and hosted on a computer running in my home. I own and control the domain it uses and the hardware it runs on. I use Cloudflare for DNS, but only because it’s the best of many options available. So I’ve ticked most of the boxes for a personal website, but what about the social interaction part of it?</p>



<p>This whole line of thinking feels like a fun challenge. If I treat this site like a proof of concept, how close can I get it to this vision of the personal website also being one’s central social media hub? I’m guessing I can do a lot of this with plugins. And where I can’t, I can write my own. I don’t regularly read social feeds and haven’t posted on social media in many years, but I do have accounts that I can test with on all the platforms. Some aspects of this integration will be impossible due to the walls that social media companies put up. But at least for the open protocols, I know its possible.</p>



<p>Let’s see where this goes.</p>



<p>Continued at <em><a href="https://www.bagaag.com/2025/10/11/the-social-website-update/" data-type="post" data-id="423">The Social Website — Update</a></em>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bagaag.com/the-social-website/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
					<title></title>
					<link>https://www.bagaag.com/excalidraw/</link>
					<comments>https://www.bagaag.com/excalidraw/#respond</comments>
		
		<dc:creator><![CDATA[matt]]></dc:creator>
		<pubDate>Sat, 19 Jul 2025 14:57:00 +0000</pubDate>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[software]]></category>
		<guid isPermaLink="false">https://www.bagaag.com/?p=11</guid>

					<description><![CDATA[Excalidraw&#160;is a simple but highly capable wireframe editor and drawing tool. It runs entirely in the browser and saves data to browser storage — no cloud service required. You can also save and load drawings to and from a local file. The&#160;software&#160;is free and open source. A reasonably priced paid version adds some optional niceties [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p><a href="https://excalidraw.com/">Excalidraw</a>&nbsp;is a simple but highly capable wireframe editor and drawing tool. It runs entirely in the browser and saves data to browser storage — no cloud service required. You can also save and load drawings to and from a local file. The&nbsp;<a href="https://github.com/excalidraw/excalidraw">software</a>&nbsp;is free and open source. A reasonably priced paid version adds some optional niceties like access controls and cloud storage.</p>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bagaag.com/excalidraw/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
					<title></title>
					<link>https://www.bagaag.com/it-matters-i-care/</link>
					<comments>https://www.bagaag.com/it-matters-i-care/#respond</comments>
		
		<dc:creator><![CDATA[matt]]></dc:creator>
		<pubDate>Sat, 28 Jun 2025 04:21:00 +0000</pubDate>
				<category><![CDATA[Web]]></category>
		<guid isPermaLink="false">https://www.bagaag.com/?p=55</guid>

					<description><![CDATA[Great post calling out the growing apathy around government corruption. It matters. I care.]]></description>
										<content:encoded><![CDATA[
<p>Great post calling out the growing apathy around government corruption.</p>



<p><a href="https://www.citationneeded.news/it-matters-i-care/">It matters. I care.</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bagaag.com/it-matters-i-care/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
					<title></title>
					<link>https://www.bagaag.com/piskel/</link>
					<comments>https://www.bagaag.com/piskel/#respond</comments>
		
		<dc:creator><![CDATA[matt]]></dc:creator>
		<pubDate>Sat, 28 Jun 2025 04:00:47 +0000</pubDate>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[art]]></category>
		<category><![CDATA[software]]></category>
		<guid isPermaLink="false">https://www.bagaag.com/?p=40</guid>

					<description><![CDATA[I was cruising around&#160;this lovely personal website&#160;— another pixel artist — and was curious what tool she uses to create her art. It’s&#160;https://www.piskelapp.com/&#160;— a fun and free web-based alternative to Aseprite that can save files in browser storage.]]></description>
										<content:encoded><![CDATA[
<p>I was cruising around&nbsp;<a href="https://antikrist.lol/">this lovely personal website</a>&nbsp;— another pixel artist — and was curious what tool she uses to create her art. It’s&nbsp;<a href="https://www.piskelapp.com/">https://www.piskelapp.com/</a>&nbsp;— a fun and free web-based alternative to Aseprite that can save files in browser storage.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bagaag.com/piskel/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
					<title></title>
					<link>https://www.bagaag.com/neocities/</link>
					<comments>https://www.bagaag.com/neocities/#respond</comments>
		
		<dc:creator><![CDATA[matt]]></dc:creator>
		<pubDate>Thu, 12 Jun 2025 04:18:22 +0000</pubDate>
				<category><![CDATA[Web]]></category>
		<guid isPermaLink="false">https://www.bagaag.com/?p=49</guid>

					<description><![CDATA[Neocities&#160;provides a free website builder in the spirit of Geocities. I found that at&#160;pomelo.lol, which also led me to&#160;Aseprite.]]></description>
										<content:encoded><![CDATA[
<p><a href="https://neocities.org/">Neocities</a>&nbsp;provides a free website builder in the spirit of Geocities.</p>



<figure class="wp-block-image size-full"><a href="http://www.humanforsale.com/"><img decoding="async" width="200" height="150" src="https://www.bagaag.com/wp-content/uploads/2025/09/1964.gif" alt class="wp-image-50"></a></figure>



<p>I found that at&nbsp;<a href="https://pomelo.lol/">pomelo.lol</a>, which also led me to&nbsp;<a href="https://www.aseprite.org/">Aseprite</a>.</p>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bagaag.com/neocities/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
					<title></title>
					<link>https://www.bagaag.com/broligarchy/</link>
					<comments>https://www.bagaag.com/broligarchy/#respond</comments>
		
		<dc:creator><![CDATA[matt]]></dc:creator>
		<pubDate>Sat, 07 Jun 2025 03:46:02 +0000</pubDate>
				<category><![CDATA[Web]]></category>
		<guid isPermaLink="false">https://www.bagaag.com/?p=32</guid>

					<description><![CDATA[How to Survive the Broligarchy&#160;by journalist Carole Cadwalladr succinctly captures a lot of what I’ve been thinking about since January.]]></description>
										<content:encoded><![CDATA[
<p><a href="https://broligarchy.substack.com/p/how-to-survive-the-broligarchy">How to Survive the Broligarchy</a>&nbsp;by journalist Carole Cadwalladr succinctly captures a lot of what I’ve been thinking about since January.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bagaag.com/broligarchy/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
					<title></title>
					<link>https://www.bagaag.com/speak-n-spell/</link>
		
		<dc:creator><![CDATA[matt]]></dc:creator>
		<pubDate>Thu, 05 Jun 2025 03:51:01 +0000</pubDate>
				<category><![CDATA[Web]]></category>
		<guid isPermaLink="false">https://www.bagaag.com/?p=34</guid>

					<description><![CDATA[Speak n Spell implemented in JavaScript&#160;— Bonus points if you can get it to say “butcher”.]]></description>
										<content:encoded><![CDATA[
<p><a href="https://sha.nnoncarey.com/">Speak n Spell implemented in JavaScript</a>&nbsp;— Bonus points if you can get it to say “butcher”.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
					<title></title>
					<link>https://www.bagaag.com/medlar-tree/</link>
		
		<dc:creator><![CDATA[matt]]></dc:creator>
		<pubDate>Wed, 04 Jun 2025 04:20:00 +0000</pubDate>
				<category><![CDATA[Web]]></category>
		<guid isPermaLink="false">https://www.bagaag.com/?p=53</guid>

					<description><![CDATA[I thoroughly enjoyed this BBC article on the&#160;medlar tree&#160;and its fruit’s curious past. This was a discovery from&#160;Pocket, which I found out today is unfortunately&#160;shutting down.]]></description>
										<content:encoded><![CDATA[
<p>I thoroughly enjoyed this BBC article on the&nbsp;<a href="https://www.bbc.co.uk/future/article/20210325-the-strange-medieval-fruit-the-world-forgot">medlar tree</a>&nbsp;and its fruit’s curious past. This was a discovery from&nbsp;<a href="https://getpocket.com/">Pocket</a>, which I found out today is unfortunately&nbsp;<a href="https://getpocket.com/farewell">shutting down</a>.</p>



<p></p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
