<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/rss-style.xsl" type="text/xsl"?>
<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>BlueSky &#8211; Terence Eden’s Blog</title>
	<atom:link href="https://shkspr.mobi/blog/tag/bluesky/feed/" rel="self" type="application/rss+xml" />
	<link>https://shkspr.mobi/blog</link>
	<description>Regular nonsense about tech and its effects 🙃</description>
	<lastBuildDate>Sun, 05 Oct 2025 22:13:18 +0000</lastBuildDate>
	<language>en-GB</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://shkspr.mobi/blog/wp-content/uploads/2023/07/cropped-avatar-32x32.jpeg</url>
	<title>BlueSky &#8211; Terence Eden’s Blog</title>
	<link>https://shkspr.mobi/blog</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title><![CDATA[Now witness the power of this fully operational Fediverse!]]></title>
		<link>https://shkspr.mobi/blog/2025/11/now-witness-the-power-of-this-fully-operational-fediverse/</link>
					<comments>https://shkspr.mobi/blog/2025/11/now-witness-the-power-of-this-fully-operational-fediverse/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Sun, 23 Nov 2025 12:34:35 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[ActivityPub]]></category>
		<category><![CDATA[BlueSky]]></category>
		<category><![CDATA[fediverse]]></category>
		<category><![CDATA[mastodon]]></category>
		<category><![CDATA[statistics]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=63716</guid>

					<description><![CDATA[How can you measure the popularity of a social network site? Perhaps by counting the number of active accounts, or the quality of the discourse, or even how many people reply to your witty memes.  Me? I prefer to look at how many people visit my blog from each site. It is an imperfect measure - and a vain one - but lets me know where I should be spending my time. No point posting on a network…]]></description>
										<content:encoded><![CDATA[<p>How can you measure the popularity of a social network site? Perhaps by counting the number of active accounts, or the quality of the discourse, or even how many people reply to your witty memes.</p>

<p>Me? I prefer to look at how many people visit my blog from each site. It is an imperfect measure - and a vain one - but lets me know where I should be spending my time. No point posting on a network which is just bots talking to each other, right?</p>

<p>Earlier this year <a href="https://shkspr.mobi/blog/2025/09/reasonably-accurate-privacy-conscious-cookieless-visitor-tracking-for-wordpress/">I built a stats-counter for my blog</a>. Every time someone clicks from a website which links to my blog, it records that visit in a database. I get to see which blog posts are doing numbers, and where those numbers came from.</p>

<p>Until fairly recently, the Mastodon social network didn't send referer details. I thought that reduced the visibility of the network and <a href="https://shkspr.mobi/blog/2024/12/mastodon-now-sends-referer-headers-hurrah/">lobbied for it to change</a>. As various Mastodon servers upgrade, and admins opt-in, it is becoming more apparent just how much traffic originates from the Fediverse.</p>

<p>Over the last few weeks, here's how many people have clicked <em>from</em> BlueSky and Mastodon <em>to</em> one of my blog posts.</p>

<table class="edent_stats_column"><thead><tr><th class="totals">Total</th><th>Source</th></tr></thead><tbody>
<tr><td class="stats-count">1,607</td><td><img class="pingback-favicon" src="https://shkspr.mobi/favicons/?domain=bsky.app"><a href="https://bsky.app">bsky.app</a></td></tr>
<tr><td class="stats-count">752</td><td><img class="pingback-favicon" src="https://shkspr.mobi/favicons/?domain=mastodon.social"><a href="https://mastodon.social">mastodon.social</a></td></tr>
</tbody></table>

<p>At first glance, it doesn't look good for our elephantine friends, does it? The butterfly sends over twice the traffic. Game over!</p>

<p>But, of course, while Mastodon.social is the biggest instance - it is far from the only one. What happens if we slide down the long tail? Here's all the Mastodon-ish instances which sent me over 10 clicks.</p>

<table class="edent_stats_column"><thead><tr><th class="totals">Total</th><th>Source</th></tr></thead><tbody>
<tr><td class="stats-count">193</td><td><img class="pingback-favicon" src="https://shkspr.mobi/favicons/?domain=phanpy.social"><a href="https://phanpy.social">phanpy.social</a></td></tr>
<tr><td class="stats-count">120</td><td><img class="pingback-favicon" src="https://shkspr.mobi/favicons/?domain=joinmastodon.org"> android-app://org.joinmastodon.android/</td></tr>
<tr><td class="stats-count">106</td><td><img class="pingback-favicon" src="https://shkspr.mobi/favicons/?domain=infosec.exchange"><a href="https://infosec.exchange">infosec.exchange</a></td></tr>
<tr><td class="stats-count">62</td><td><img class="pingback-favicon" src="https://shkspr.mobi/favicons/?domain=mas.to"><a href="https://mas.to">mas.to</a></td></tr>
<tr><td class="stats-count">59</td><td><img class="pingback-favicon" src="https://shkspr.mobi/favicons/?domain=mstdn.social"><a href="https://mstdn.social">mstdn.social</a></td></tr>
<tr><td class="stats-count">55</td><td><img class="pingback-favicon" src="https://shkspr.mobi/favicons/?domain=social.vivaldi.net"><a href="https://social.vivaldi.net">social.vivaldi.net</a></td></tr>
<tr><td class="stats-count">49</td><td><img class="pingback-favicon" src="https://shkspr.mobi/favicons/?domain=wandering.shop"><a href="https://wandering.shop">wandering.shop</a></td></tr>
<tr><td class="stats-count">48</td><td><img class="pingback-favicon" src="https://shkspr.mobi/favicons/?domain=fosstodon.org"><a href="https://fosstodon.org">fosstodon.org</a></td></tr>
<tr><td class="stats-count">33</td><td><img class="pingback-favicon" src="https://shkspr.mobi/favicons/?domain=mathstodon.xyz"><a href="https://mathstodon.xyz">mathstodon.xyz</a></td></tr>
<tr><td class="stats-count">27</td><td><img class="pingback-favicon" src="https://shkspr.mobi/favicons/?domain=mastodon.online"><a href="https://mastodon.online">mastodon.online</a></td></tr>
<tr><td class="stats-count">26</td><td><img class="pingback-favicon" src="https://shkspr.mobi/favicons/?domain=mastodon.scot"><a href="https://mastodon.scot">mastodon.scot</a></td></tr>
<tr><td class="stats-count">24</td><td><img class="pingback-favicon" src="https://shkspr.mobi/favicons/?domain=app.wafrn.net"><a href="https://app.wafrn.net">app.wafrn.net</a></td></tr>
<tr><td class="stats-count">19</td><td><img class="pingback-favicon" src="https://shkspr.mobi/favicons/?domain=indieweb.social"><a href="https://indieweb.social">indieweb.social</a></td></tr>
<tr><td class="stats-count">18</td><td><img class="pingback-favicon" src="https://shkspr.mobi/favicons/?domain=social.lol"><a href="https://social.lol">social.lol</a></td></tr>
<tr><td class="stats-count">17</td><td><img class="pingback-favicon" src="https://shkspr.mobi/favicons/?domain=tech.lgbt"><a href="https://tech.lgbt">tech.lgbt</a></td></tr>
<tr><td class="stats-count">17</td><td><img class="pingback-favicon" src="https://shkspr.mobi/favicons/?domain=toot.wales"><a href="https://toot.wales">toot.wales</a></td></tr>
<tr><td class="stats-count">16</td><td><img class="pingback-favicon" src="https://shkspr.mobi/favicons/?domain=en.osm.town"><a href="https://en.osm.town">en.osm.town</a></td></tr>
<tr><td class="stats-count">16</td><td><img class="pingback-favicon" src="https://shkspr.mobi/favicons/?domain=feditrends.com"><a href="https://feditrends.com">feditrends.com</a></td></tr>
<tr><td class="stats-count">14</td><td><img class="pingback-favicon" src="https://shkspr.mobi/favicons/?domain=mstdn.ca"><a href="https://mstdn.ca">mstdn.ca</a></td></tr>
<tr><td class="stats-count">14</td><td><img class="pingback-favicon" src="https://shkspr.mobi/favicons/?domain=piefed.social"><a href="https://piefed.social">piefed.social</a></td></tr>
<tr><td class="stats-count">12</td><td><img class="pingback-favicon" src="https://shkspr.mobi/favicons/?domain=wetdry.world"><a href="https://wetdry.world">wetdry.world</a></td></tr>
<tr><td class="stats-count">11</td><td><img class="pingback-favicon" src="https://shkspr.mobi/favicons/?domain=c.im"><a href="https://c.im">c.im</a></td></tr>
<tr><td class="stats-count">11</td><td><img class="pingback-favicon" src="https://shkspr.mobi/favicons/?domain=mastodon.nl"><a href="https://mastodon.nl">mastodon.nl</a></td></tr>
<tr><td class="stats-count">51</td><td><img class="pingback-favicon" src="https://shkspr.mobi/favicons/?domain=mastodon.social"> Sites sending &lt; 10 clicks</td></tr>
</tbody></table>

<p>Ah! Add them all up and you get a grand total of <strong>1,773 visitors from Mastodon-powered sites</strong>.  That's <em>more</em> than BlueSky.</p>

<p>Now, there are some obvious caveats to the data:</p>

<ul>
<li>I have a smaller follower count on BlueSky than I do on Mastodon.</li>
<li>My posts may appeal more to one demographic than another.</li>
<li>People may have strict privacy controls which suppress the true volume of visitors.</li>
<li>There's no way to measure how long someone spends reading my posts.</li>
<li>RSS and newsletter visitors aren't counted.</li>
<li>Clicks from apps may not always show a referer.</li>
<li>Some people may be on multiple services.</li>
<li>Fediverse users can follow the post directly, so don't need to visit the site to read it.</li>
</ul>

<p>And yet… no matter how you slice it, Fediverse servers are sending as much traffic as BlueSky!</p>

<p>I think this is brilliant. Web services should be able to scale from small to big - and each ActivityPub-powered site helps power the open Internet.</p>

<p>Just for completeness, this is how Reddit, Facebook, LinkedIn, Twitter, and Lemmy do over the same period:</p>

<table class="edent_stats_column"><thead><tr><th class="totals">Total</th><th>Source</th></tr></thead><tbody>
<tr><td class="stats-count">1,158</td><td><img class="pingback-favicon" src="https://shkspr.mobi/favicons/?domain=reddit.com"><a href="https://reddit.com">reddit.com</a></td></tr>
<tr><td class="stats-count">585</td><td><img class="pingback-favicon" src="https://shkspr.mobi/favicons/?domain=reddit.com"> android-app://com.reddit.frontpage/</td></tr>
<tr><td class="stats-count">76</td><td><img class="pingback-favicon" src="https://shkspr.mobi/favicons/?domain=facebook.com"><a href="https://facebook.com">facebook.com</a></td></tr>
<tr><td class="stats-count">76</td><td><img class="pingback-favicon" src="https://shkspr.mobi/favicons/?domain=old.reddit.com"><a href="https://old.reddit.com/r/programming/">https://old.reddit.com/r/programming/</a></td></tr>
<tr><td class="stats-count">56</td><td><img class="pingback-favicon" src="https://shkspr.mobi/favicons/?domain=www.reddit.com"><a href="https://www.reddit.com/r/programming/">https://www.reddit.com/r/programming/</a></td></tr>
<tr><td class="stats-count">52</td><td><img class="pingback-favicon" src="https://shkspr.mobi/favicons/?domain=youtube.com"><a href="https://youtube.com">youtube.com</a></td></tr>
<tr><td class="stats-count">41</td><td><img class="pingback-favicon" src="https://shkspr.mobi/favicons/?domain=t.co"><a href="https://t.co">t.co</a></td></tr>
<tr><td class="stats-count">38</td><td><img class="pingback-favicon" src="https://shkspr.mobi/favicons/?domain=old.reddit.com"><a href="https://old.reddit.com/r/todayilearned/comments/1nsw7f4/til_in_mongolia_instead_of_a_street_address_a/">https://old.reddit.com/r/todayilearned/comments/1nsw7f4/til_in_mongolia_instead_of_a_street_address_a/</a></td></tr>
<tr><td class="stats-count">31</td><td><img class="pingback-favicon" src="https://shkspr.mobi/favicons/?domain=linkedin.com"><a href="https://linkedin.com">linkedin.com</a></td></tr>
<tr><td class="stats-count">27</td><td><img class="pingback-favicon" src="https://shkspr.mobi/favicons/?domain=lemmy.world"> android-app://io.syncapps.lemmy_sync/</td></tr>
<tr><td class="stats-count">27</td><td><img class="pingback-favicon" src="https://shkspr.mobi/favicons/?domain=www.reddit.com"><a href="https://www.reddit.com/r/todayilearned/comments/1nsw7f4/til_in_mongolia_instead_of_a_street_address_a/">https://www.reddit.com/r/todayilearned/comments/1nsw7f4/til_in_mongolia_instead_of_a_street_address_a/</a></td></tr>
<tr><td class="stats-count">22</td><td><img class="pingback-favicon" src="https://shkspr.mobi/favicons/?domain=old.reddit.com"><a href="https://old.reddit.com/r/programming/comments/1n96ftn/40_years_later_are_bentleys_programming_pearls/">https://old.reddit.com/r/programming/comments/1n96ftn/40_years_later_are_bentleys_programming_pearls/</a></td></tr>
<tr><td class="stats-count">22</td><td><img class="pingback-favicon" src="https://shkspr.mobi/favicons/?domain=lemmy.ca"><a href="https://lemmy.ca">lemmy.ca</a></td></tr>
<tr><td class="stats-count">17</td><td><img class="pingback-favicon" src="https://shkspr.mobi/favicons/?domain=linkedin.com"> android-app://com.linkedin.android/</td></tr>
<tr><td class="stats-count">16</td><td><img class="pingback-favicon" src="https://shkspr.mobi/favicons/?domain=lemmy.dbzer0.com"><a href="https://lemmy.dbzer0.com">lemmy.dbzer0.com</a></td></tr>
<tr><td class="stats-count">14</td><td><img class="pingback-favicon" src="https://shkspr.mobi/favicons/?domain=feddit.org"><a href="https://feddit.org">feddit.org</a></td></tr>
<tr><td class="stats-count">11</td><td><img class="pingback-favicon" src="https://shkspr.mobi/favicons/?domain=www.reddit.com"><a href="https://www.reddit.com/r/programming/comments/1n96ftn/40_years_later_are_bentleys_programming_pearls/">https://www.reddit.com/r/programming/comments/1n96ftn/40_years_later_are_bentleys_programming_pearls/</a></td></tr>
<tr><td class="stats-count">10</td><td><img class="pingback-favicon" src="https://shkspr.mobi/favicons/?domain=discuss.tchncs.de"><a href="https://discuss.tchncs.de">discuss.tchncs.de</a></td></tr>
<tr><td class="stats-count">10</td><td><img class="pingback-favicon" src="https://shkspr.mobi/favicons/?domain=l.instagram.com"><a href="https://l.instagram.com">l.instagram.com</a></td></tr>
<tr><td class="stats-count">8</td><td><img class="pingback-favicon" src="https://shkspr.mobi/favicons/?domain=lemmy.blahaj.zone"><a href="https://lemmy.blahaj.zone">lemmy.blahaj.zone</a></td></tr>
<tr><td class="stats-count">6</td><td><img class="pingback-favicon" src="https://shkspr.mobi/favicons/?domain=www.reddit.com"><a href="https://www.reddit.com/r/GrapheneOS/comments/1m2l84b/considering_making_the_switch_does_google_pay/">https://www.reddit.com/r/GrapheneOS/comments/1m2l84b/considering_making_the_switch_does_google_pay/</a></td></tr>
<tr><td class="stats-count">6</td><td><img class="pingback-favicon" src="https://shkspr.mobi/favicons/?domain=reddthat.com"><a href="https://reddthat.com">reddthat.com</a></td></tr>
</tbody></table>

<p>If you add up all the Lemmy instances, they send about as much traffic as Facebook and LinkedIn combined. That's not a huge surprise - those platforms hate anyone clicking away to the wider web.</p>

<p>Twitter is basically <a href="https://en.wikipedia.org/wiki/Dead_Internet_theory">the Dead Internet</a>. I'm no longer on there, but I do occasionally search it to see who is sharing my posts. The popular posts I write get shared a <em>lot</em> - sometimes by accounts with huge followers - yet there are no comments or retweets and barely and clicks.</p>

<p>I don't do Instagram or Threads, and that might be reflected in their low numbers. But I'm not active on YouTube either - yet people there occasionally link back to me.</p>

<h2 id="final-thoughts"><a href="https://shkspr.mobi/blog/2025/11/now-witness-the-power-of-this-fully-operational-fediverse/#final-thoughts">Final Thoughts</a></h2>

<p>Firstly, my stats only represent my site. Your site might be very different.</p>

<p>Secondly, I've ignored search engine traffic, big blogs, newsletters, and other sources.</p>

<p>Thirdly, and most importantly, this <em>isn't</em> a competition! The desire for a "winner-takes-all" service is dangerous and disturbing. An ecosystem is at its most vibrant when there are multiple participants each thriving in their own niche.</p>

<p>I want a thousand sites, running a hundred different software stacks, some of which only serve a dozen people, or even a lone participant.</p>

<p>Diversity is strength.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=63716&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2025/11/now-witness-the-power-of-this-fully-operational-fediverse/feed/</wfw:commentRss>
			<slash:comments>10</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[Can you use GDPR to Circumvent BlueSky's Adult Content Blocks?]]></title>
		<link>https://shkspr.mobi/blog/2025/09/can-you-use-gdpr-to-circumvent-blueskys-adult-content-blocks/</link>
					<comments>https://shkspr.mobi/blog/2025/09/can-you-use-gdpr-to-circumvent-blueskys-adult-content-blocks/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Mon, 29 Sep 2025 11:34:27 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[BlueSky]]></category>
		<category><![CDATA[gdpr]]></category>
		<category><![CDATA[OnlineSafety]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=62143</guid>

					<description><![CDATA[In the battle between the Online Safety Act and GDPR, who will win? FIGHT!  I&#039;ll start by saying that I&#039;m moderately positive on Online Safety. If services don&#039;t want to provide moderation then they shouldn&#039;t let their younger users be exposed to harm.  The social network BlueSky has taken a pragmatic approach to this. If you don&#039;t want to verify your age, you can still use its services - but it…]]></description>
										<content:encoded><![CDATA[<p>In the battle between the Online Safety Act and GDPR, who will win? FIGHT!</p>

<p>I'll start by saying that I'm <a href="https://shkspr.mobi/blog/2024/12/food-safety-vs-online-safety/">moderately positive on Online Safety</a>. If services don't want to provide moderation then they shouldn't let their younger users be exposed to harm.</p>

<p>The social network BlueSky has taken a pragmatic approach to this. If you don't want to verify your age, you can still use its services - but <a href="https://bsky.app/profile/edent.tel/post/3ltmzgl5h4c2k">it won't serve you porn or let people send you non-public messages</a>.</p>

<p>I think that's pretty reasonable. I don't use BSky to look at naked <del>mole rats</del> people, and I already have plenty of other messaging accounts. So I haven't verified my age.</p>

<p>There are two slight wrinkles with BSky's implementation.  Firstly, there's no way to retrieve DMs which were sent before this restriction came into force. Oh, you can one-click export your data - but <a href="https://docs.bsky.app/blog/repo-export">it only includes <em>public</em> data</a>. So no DMs.</p>

<p>Secondly, you can't turn off DM from people who have previously messaged you. <a href="https://bsky.app/profile/edent.tel/post/3luoqklgdhk27">I asked people to message me</a> to see if they got an error - but it looks like the messages just get silently accepted. I probably look a bit rude if I don't answer them.</p>

<p>Worse still, the DM notification keeps incrementing!</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2025/07/Bluesky-DM-notification.webp" alt="A notification counter showing the number 3. The message next to it says I need to complete age assurance." width="932" height="401" class="aligncenter size-full wp-image-62145">

<p>It <em>is</em> possible to turn off DMs - but <a href="https://bsky.social/about/blog/05-22-2024-direct-messages">only if you can access your DM settings</a>. Which you can't if you haven't passed age assurance.</p>

<p>Well, what about GDPR?</p>

<p><a href="https://bsky.social/about/support/privacy-policy#personal-information-collect">BlueSky's privacy policy</a> has this to say about DMs:</p>

<blockquote><p>Your Direct Messages. We store and process your direct messages in order to enable you to communicate directly and privately with other users on the Bluesky App. These are unencrypted and can be accessed for Trust and Safety purposes.</p></blockquote>

<p>They go on to say that I may have the right to:</p>

<blockquote><p>Request Access to and Portability of Your Personal Information, including: (i) obtaining access to or a copy of your personal information; and (ii) receiving an electronic copy of personal information that you have provided to us, or asking us to send that information to another company in a structured, commonly used, and machine-readable format (also known as the “right of data portability”);</p></blockquote>

<p>So I sent off a Subject Access Request asking specifically for the Direct Messages sent to/from my account.</p>

<p>I was 100% sure that the messages I had sent were my personal data and should be returned to me. I wasn't sure if messages other people had sent to me could be considered personal data.  But I figured that the OSA hadn't invalidated GDPR.</p>

<p>Here's what happened:</p>

<h2 id="timeline"><a href="https://shkspr.mobi/blog/2025/09/can-you-use-gdpr-to-circumvent-blueskys-adult-content-blocks/#timeline">Timeline</a></h2>

<ul>
<li>2025-07-24 - Sent request to their support desk and received an acknowledgement.

<ul>
<li>Response: "I've gone ahead and shared your request with our team and will follow up with you if any additional information or verification is needed."</li>
</ul></li>
<li>2025-07-31 - Sent a reminder to them.

<ul>
<li>Response: "We've escalated your concern to our developers and are still waiting for their response and confirmation. We'll get back as soon as we get this information."</li>
</ul></li>
<li>2025-08-25 - One month later sent an escalation to their legal team reminding them of their obligations.

<ul>
<li>Response: Asked to provide my country of residence and to prove my account ownership by send an email from the address associated with my BSky account.</li>
</ul></li>
<li>2025-09-05 - Sent yet another chaser.</li>
<li>2025-09-13 - Over seven weeks since the initial request. Told them that I wanted to know which data protection authority they were registered with so I could make a formal complaint.

<ul>
<li>Response: "Please be aware that we are currently in the process of making your data available for download. We will notify you as soon as it is ready."</li>
</ul></li>
<li>2025-09-22 - 8 weeks since the complaint was raised. Sent another chaser asking how long until my data would be ready to download.</li>
<li>2025-09-25 - After 64 days they sent me a CSV with my data!</li>
</ul>

<h2 id="result"><a href="https://shkspr.mobi/blog/2025/09/can-you-use-gdpr-to-circumvent-blueskys-adult-content-blocks/#result">Result</a></h2>

<p>Here's an extract of the CSV. I've lightly redacted the data, but you can see how JSON embedding works.</p>

<pre><code class="language-csv">convoId,sentAt,sender,contents
3kt6f7a2,2025-07-24 05:50:09.339+00,did:plc:pxy4cjqfu5aa6eadtx5,"{""text"": ""Testing testing""}"
3ku4lvbh,2024-06-04 18:17:52.414+00,did:plc:i6misxex577k4q6o7gl,"{""text"": ""Thought this might be up your alley. I've been to a few of them - pretty good crowd. thegeomob.com/post/july-3r..."", ""facets"": [{""index"": {""byteEnd"": 114, ""byteStart"": 85}, ""features"": [{""uri"": ""https://thegeomob.com/post/july-3rd-2024-geomoblon-details"", ""$type"": ""app.bsky.richtext.facet#link""}]}]}"
</code></pre>

<h2 id="thoughts"><a href="https://shkspr.mobi/blog/2025/09/can-you-use-gdpr-to-circumvent-blueskys-adult-content-blocks/#thoughts">Thoughts</a></h2>

<p>I didn't have to prove my age. I just proved account ownership and then politely but insistently asked for my data. Frankly, it is baffling that such a well-funded company takes this long to answer a simple request.</p>

<p>Does this expose a gaping whole in the idea of online safety?</p>

<p>No. Not really. I suppose that a theoretical abuser could send messages to a minor and then that minor could go through a Subject Access Request process to try and access them. But that all feels a bit far-fetched and is likely to draw attention to both parties.</p>

<h2 id="but-why-didnt-you-just"><a href="https://shkspr.mobi/blog/2025/09/can-you-use-gdpr-to-circumvent-blueskys-adult-content-blocks/#but-why-didnt-you-just">But why didn't you just…</a></h2>

<p>This was definitely "playing on hard mode". There were other ways to get my DMs. Here are some alternatives which I didn't try and <em>why</em> I didn't try them.</p>

<ul>
<li>Use a VPN to circumvent the geoblock.

<ul>
<li>Why should I have to pay for a VPN, or trust my browsing data to a dodgy 3rd party? I shouldn't have to install and configure software just to work around a crappy design decision.</li>
</ul></li>
<li>Go through age verification.

<ul>
<li>I don't browse BlueSky for the "gentlemen's special interest" section. I already have lots of ways people can contact me. I'm not against a KYC process - but I simply don't need it.</li>
</ul></li>
<li>Use a 3rd party client to download the data.

<ul>
<li>I don't trust my data with 3rd party apps, and neither should you!</li>
</ul></li>
<li>Use <a href="https://docs.bsky.app/docs/api/chat-bsky-convo-get-messages">the API</a> to read DMs.

<ul>
<li>I wasn't sure if the API required age verification. And, frankly, I couldn't be faffed learning a brand new API.</li>
</ul></li>
<li>Escalate straight to the CEO or via a friend who works there.

<ul>
<li>I like doing things the official way. Not everyone has a friend who works at BSky (thanks &lt;REDACTED&gt;!) and I feel it is better if legal teams get direct feedback from users; not management.</li>
</ul></li>
<li>Ignore this and use a better social network.

<ul>
<li>I go where my friends are. I have lots of friends on Mastodon and other services. BSky is OK, but I'm only there for my friends. But, while they are there, I didn't want an obnoxious DM notification taunting me.</li>
</ul></li>
</ul>

<h2 id="next-steps"><a href="https://shkspr.mobi/blog/2025/09/can-you-use-gdpr-to-circumvent-blueskys-adult-content-blocks/#next-steps">Next Steps</a></h2>

<p>I've emailed BlueSky to ask them to completely disable my inbox and clear my notifications. We'll see how long that takes them!</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=62143&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2025/09/can-you-use-gdpr-to-circumvent-blueskys-adult-content-blocks/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[Hashtag Standards (part deux)]]></title>
		<link>https://shkspr.mobi/blog/2024/12/hashtag-standards-part-deux/</link>
					<comments>https://shkspr.mobi/blog/2024/12/hashtag-standards-part-deux/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Wed, 04 Dec 2024 12:34:34 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[BlueSky]]></category>
		<category><![CDATA[hashtags]]></category>
		<category><![CDATA[mastodon]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=54180</guid>

					<description><![CDATA[What is a hashtag?  Fifteen years ago (fuck, I&#039;m old) I started documenting what Twitter&#039;s nascent hashtags could and couldn&#039;t do.  Back in 2010, this is how the official Twitter site linked hashtags.    Notably, punctuation symbols didn&#039;t &#34;count&#34; as part of a tag.  How does modern social media handle something like #Fish&#38;Chips?   Mastodon links directly to #Fish&#38;Chips BlueSky links directly to…]]></description>
										<content:encoded><![CDATA[<p>What is a hashtag?</p>

<p>Fifteen years ago (fuck, I'm old) I started documenting <a href="https://shkspr.mobi/blog/2010/02/hashtag-standards/">what Twitter's nascent hashtags could and couldn't do</a>.</p>

<p>Back in 2010, this is how the official Twitter site linked hashtags.</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2010/02/Twitter-Website-Hashtag.png" alt="Screenshot from the Twitter website showing hashtags being linked." width="407" height="214" class="aligncenter size-full wp-image-25902">

<p>Notably, punctuation symbols didn't "count" as part of a tag.</p>

<p>How does modern social media handle something like #Fish&amp;Chips?</p>

<ul>
<li>Mastodon links directly to <a href="https://mastodon.social/tags/Fish&amp;Chips">#Fish&amp;Chips</a></li>
<li>BlueSky links directly to <a href="https://bsky.app/hashtag/Fish%26Chips">#Fish&amp;Chips</a></li>
<li>Threads links to a <em>search</em> for <a href="https://www.threads.net/search?q=Fish%26Chips&amp;serp_type=tags&amp;tag_id=18413420497040775">Fish &amp; Chips</a></li>
</ul>

<p>What about normalisation?</p>

<p>Should #Romeo link to #ROMEO and #rOMeO?</p>

<p>On all three of the major social networks, case is insensitive.</p>

<p>But what about the vagueries of <a href="https://www.unicode.org/reports/tr15/">Unicode normalisation</a>?</p>

<p>Is #Ŕöméø&amp;Jülíèt the same as #Romeo&amp;Juliet?</p>

<p>Both <a href="https://www.threads.net/search?q=%C5%94%C3%B6m%C3%A9%C3%B8%26J%C3%BCl%C3%AD%C3%A8t&amp;serp_type=tags&amp;tag_id=18475178065037431">Threads</a> and <a href="https://mastodon.social/tags/%C5%94%C3%B6m%C3%A9%C3%B8&amp;J%C3%BCl%C3%AD%C3%A8t">Mastodon</a> do some form of decomposition - turning the various accents into their accentless versions.</p>

<p>But <a href="https://bsky.app/hashtag/%C5%94%C3%B6m%C3%A9%C3%B8%26J%C3%BCl%C3%AD%C3%A8t">BlueSky links to the <em>literal</em> version</a>.</p>

<p>Is that the right thing to do? I don't know.</p>

<p>This literal interpretation of the text in hashtags <a href="https://shkspr.mobi/blog/2019/12/hashtag-steganography/">allows for some interesting steganography</a> - which can be fun, but I wonder if it is what users expect?</p>

<p>And that's what it comes down to. What is <em>technically</em> correct isn't always the same as what users <em>need</em>.</p>

<p>Perhaps most users prefer #ROMEO to link to the same posts as #romeo.  Perhaps they think #Romeó should link there too.  But no social network, as far as I am aware, has done any user research into the behaviour that users want when interacting with hashtags.</p>

<p>I'd love someone to do some actual research on how people expect a <a href="https://www.vanderwal.net/folksonomy.html">folksonomy</a> to work.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=54180&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2024/12/hashtag-standards-part-deux/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[Exploring BlueSky's Domain Handles]]></title>
		<link>https://shkspr.mobi/blog/2024/12/exploring-blueskys-domain-handles/</link>
					<comments>https://shkspr.mobi/blog/2024/12/exploring-blueskys-domain-handles/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Tue, 03 Dec 2024 12:34:57 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[BlueSky]]></category>
		<category><![CDATA[data]]></category>
		<category><![CDATA[domains]]></category>
		<category><![CDATA[visualisation]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=54241</guid>

					<description><![CDATA[Hot new social networking site BlueSky has an interesting approach to usernames. Rather than just being @example you can verify your domain name and be @example.com! Isn&#039;t that exciting?  Some people are @whatever.tld and others are @cool.subdomain.funny.lol.fwd.boring.tld  I wanted to know what the distribution is of these domain names. For example, are there more .uk users than .org users? …]]></description>
										<content:encoded><![CDATA[<p>Hot new social networking site BlueSky has an interesting approach to usernames. Rather than just being <code>@example</code> you can verify your domain name and be <code>@example.com</code>! Isn't that exciting?</p>

<p>Some people are <code>@whatever.tld</code> and others are <code>@cool.subdomain.funny.lol.fwd.boring.tld</code></p>

<p>I wanted to know what the distribution is of these domain names. For example, are there more .uk users than .org users?</p>

<h2 id="shut-up-and-show-me-the-results"><a href="https://shkspr.mobi/blog/2024/12/exploring-blueskys-domain-handles/#shut-up-and-show-me-the-results">Shut up and show me the results</a></h2>

<p><a href="https://edent.github.io/bsky-domain-graphs/treemap.html"><img src="https://shkspr.mobi/blog/wp-content/uploads/2024/11/TLD-fs8.png" alt="Treemap of top level domains. It is dominated by .com, although .social is very popular." width="1533" height="755" class="aligncenter size-full wp-image-54242"></a></p>

<p>You can <a href="https://edent.github.io/bsky-domain-graphs/treemap.html">play with the interactive data</a></p>

<p>Oh, and the large number of .gy domains is due to <a href="https://bsky.app/profile/edent.tel/post/3lbewj5vwhk2j">The Fediverse Bridge</a>.</p>

<h2 id="getting-the-data"><a href="https://shkspr.mobi/blog/2024/12/exploring-blueskys-domain-handles/#getting-the-data">Getting the data</a></h2>

<p>BlueSky has an open "firehose" of the data passing through it. Following <a href="https://github.com/MarshalX/atproto/blob/main/examples/firehose/process_commits_async.py">the sample code</a> I listened for <em>public</em> interactions - people posting, liking, or follows.</p>

<p>From there, I grabbed every username which wasn't on the default <code>.bsky.social</code> domain.  I left the code running for a few days until I had over 22,000 usernames.</p>

<p>Note, these data are all public - although I'm not sure if users necessarily realise that. It doesn't include lurkers (people who don't interact). Some of the accounts may have been moved, banned, or deleted.</p>

<h2 id="drawing-a-treemap"><a href="https://shkspr.mobi/blog/2024/12/exploring-blueskys-domain-handles/#drawing-a-treemap">Drawing a TreeMap</a></h2>

<p>I used <a href="https://plotly.com/python/treemaps/">Plotly's TreeMap library</a> to draw a static map of all the Top Level Domains (TLD).</p>

<p>As you can see, .com dominates the landscape - but there are quite a few country code TLDs in there as well.</p>

<h2 id="public-suffixes"><a href="https://shkspr.mobi/blog/2024/12/exploring-blueskys-domain-handles/#public-suffixes">Public Suffixes</a></h2>

<p>Domain names have the concepts of <a href="https://publicsuffix.org/">Public Suffixes</a>. For example, users can register domains at .co.uk and .org.uk as well as just plain .uk.  The <a href="https://pypi.org/project/tldextract/">Python <code>tldextract</code> library</a> allowed me to see which domains were public suffixes, so I could attach them to their parent TLD.</p>

<p>I then drew a TreeMap showing this.</p>

<p><a href="https://edent.github.io/bsky-domain-graphs/public-suffix.html"><img src="https://shkspr.mobi/blog/wp-content/uploads/2024/11/PS-fs8.png" alt="TreeMap. UK, followed by Brazil, then many other countries." width="1517" height="719" class="aligncenter size-full wp-image-54243"></a></p>

<p>Note! You'll need to <a href="https://community.plotly.com/t/ignore-non-leaves-rows-for-sunburst-diagram/60789">hack your Plotly installation to allow empty leaf nodes</a> to get in the same style as the first map.</p>

<h2 id="so-what-what-next"><a href="https://shkspr.mobi/blog/2024/12/exploring-blueskys-domain-handles/#so-what-what-next">So what? What next?</a></h2>

<ul>
<li>Not everyone from, say, Brazil will have a .br domain name - but it is fascinating to see which countries dominate.</li>
<li>It might be fun to go full "Information Is Beautiful" and turn each ccTLD into its country's flag.</li>
<li>Are there ethical implications of recording the fact that an account has publicly shared themselves on a social network?</li>
<li>What percentage of all users have a domain name handle?</li>
</ul>

<h2 id="get-the-code"><a href="https://shkspr.mobi/blog/2024/12/exploring-blueskys-domain-handles/#get-the-code">Get the code</a></h2>

<p>Everything is <a href="https://github.com/edent/bsky-domain-graphs">open source on GitHub</a>.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=54241&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2024/12/exploring-blueskys-domain-handles/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[A few thoughts on domain verification for social media]]></title>
		<link>https://shkspr.mobi/blog/2024/12/a-few-thoughts-on-domain-verification-for-social-media/</link>
					<comments>https://shkspr.mobi/blog/2024/12/a-few-thoughts-on-domain-verification-for-social-media/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Sun, 01 Dec 2024 12:34:24 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[BlueSky]]></category>
		<category><![CDATA[domains]]></category>
		<category><![CDATA[mastodon]]></category>
		<category><![CDATA[Social Media]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=54056</guid>

					<description><![CDATA[Both Mastodon and BlueSky have the concept of &#34;self-verification&#34;. Rather than trust a central authority to assess your notability and then bless your account (as Twitter used to do), they let anyone self-attest using Domain Verification.  What does that mean?   You tell the service what your website is. The service gives you a secret code. You upload that secret code onto your website. The…]]></description>
										<content:encoded><![CDATA[<p>Both Mastodon and BlueSky have the concept of "self-verification". Rather than trust a central authority to assess your notability and then bless your account (as Twitter used to do), they let anyone self-attest using Domain Verification<sup id="fnref:complicated"><a href="https://shkspr.mobi/blog/2024/12/a-few-thoughts-on-domain-verification-for-social-media/#fn:complicated" class="footnote-ref" title="It is a lot more complicated than that - as per this essay by Christine Lemmer-Webber." role="doc-noteref">0</a></sup>.</p>

<p>What does that mean?</p>

<ul>
<li>You tell the service what your website is.</li>
<li>The service gives you a secret code<sup id="fnref:secret"><a href="https://shkspr.mobi/blog/2024/12/a-few-thoughts-on-domain-verification-for-social-media/#fn:secret" class="footnote-ref" title="Secret in the sense that they only generate it for you. It isn't private. Nothing bad will happen if other people see it." role="doc-noteref">1</a></sup>.</li>
<li>You upload that secret code onto your website.</li>
<li>The service checks the secret code is on the website.</li>
<li>If it is, the service says your domain is verified.</li>
</ul>

<p>On Mastodon, that gives you a green tick next to your link. On BlueSky, it gives you the ability to change your username to your website's name.</p>

<p>This is <em>reasonably</em> strong proof that you are the owner of that website. I don't have the ability to add the secret file I've been given to <code>bbc.co.uk</code>, so I cannot impersonate them.</p>

<p>But it isn't all sunshine and roses. There are some important issues with this process.</p>

<h2 id="revocation-and-revalidation"><a href="https://shkspr.mobi/blog/2024/12/a-few-thoughts-on-domain-verification-for-social-media/#revocation-and-revalidation">Revocation and Revalidation</a></h2>

<p>Let's say an employee has validated <code>alice.big_company.com</code> - what happens when Alice leaves<sup id="fnref:alice"><a href="https://shkspr.mobi/blog/2024/12/a-few-thoughts-on-domain-verification-for-social-media/#fn:alice" class="footnote-ref" title="Let's assume she's naughty and doesn't remove the validation herself from her profile." role="doc-noteref">2</a></sup>?</p>

<p>Well, you just delete the secret code from your website, right?</p>

<p>In <em>theory</em> yes. But in practice, no.</p>

<p>From <a href="https://bsky.social/about/blog/4-28-2023-domain-handle-tutorial#:~:text=revalidate">BlueSky</a>:</p>

<blockquote><p>We're working on adding the ability to revalidate these handles periodically.</p></blockquote>

<p>And <a href="https://github.com/mastodon/mastodon/issues/27847">Mastodon</a>:</p>

<blockquote><p>Verified links are currently verified at each time the profile is updated, but they will only be verified once, when initially entered.</p></blockquote>

<p>So, at the moment, there is a risk that revalidation isn't completed and revocation never happens<sup id="fnref:rev"><a href="https://shkspr.mobi/blog/2024/12/a-few-thoughts-on-domain-verification-for-social-media/#fn:rev" class="footnote-ref" title="It appears that it takes BlueSky around 2 hour to detect and revoke verification." role="doc-noteref">3</a></sup>.  Accounts which were once trusted may stay trusted, even when they're no longer trustworthy.</p>

<h2 id="copy-cat-domains"><a href="https://shkspr.mobi/blog/2024/12/a-few-thoughts-on-domain-verification-for-social-media/#copy-cat-domains">Copy Cat Domains</a></h2>

<p>You're chatting with your credit card company's social media account. You see that they've verified the domain.</p>

<p>Wait?! Are they <em>really</em> <code>mastercrrd.info ✅</code>?</p>

<p>There are several practical attacks against humans trying to validate a domain name. A simple misspelling is easy to overlook. There are thousands of top level domains, and you may not be sure if your bank uses .com, .uk, .tech, or something else.  It only costs a few quid for an attacker to buy a domain which contains a politician's name.</p>

<p>International domain names mean that <a href="https://www.malwarebytes.com/blog/news/2017/10/out-of-character-homograph-attacks-explained">homograph attacks</a> are possible.</p>

<h2 id="humans-arent-very-clever"><a href="https://shkspr.mobi/blog/2024/12/a-few-thoughts-on-domain-verification-for-social-media/#humans-arent-very-clever">Humans aren't very clever</a></h2>

<p>Recently, several prominent journalists on BlueSky embarrassed themselves by pronouncing fake accounts to be real. The journalists - with all their resources and contacts - didn't bother to actually verify if the person who registered <code>@KemiBadenoch</code> was really the Leader of the Opposition.</p>

<p>They could have checked her website to see if it linked to the new account. They could have rung up the Tory press office. They could have checked to see if she have verified her account. Or they could have done a dozen other things to verify the facts before posting.  They didn't.</p>

<p>These aren't random users blindly reposting. These are highly educated, thoroughly trained fact-finders. Their mission is accuracy and their livelihood depends on being able to report the truth. And yet they just <em>assumed</em> that no one would lie on the Internet.</p>

<p>Would a journalist be able to spot that <code>tailer-swift.fartotron.xyz</code> was an impersonator? I highly doubt it<sup id="fnref:wrong"><a href="https://shkspr.mobi/blog/2024/12/a-few-thoughts-on-domain-verification-for-social-media/#fn:wrong" class="footnote-ref" title="Prove me wrong. Seriously. So many journalists seem utterly credulous." role="doc-noteref">4</a></sup>.</p>

<h2 id="hacks-happen"><a href="https://shkspr.mobi/blog/2024/12/a-few-thoughts-on-domain-verification-for-social-media/#hacks-happen">Hacks Happen</a></h2>

<p>Even when Twitter was validating celebrities correctly, it didn't stop <a href="https://www.bbc.co.uk/news/technology-65540901">the accounts getting hacked</a>.</p>

<p>An attacker might compromise your social media account <em>or</em> your domain name registrar.</p>

<p>Just because an account and domain appear verified, it doesn't mean they're legitimate. Is that politician you follow <em>really</em> posting about dietary supplements?</p>

<h2 id="it-might-be-too-difficult-for-large-organisation"><a href="https://shkspr.mobi/blog/2024/12/a-few-thoughts-on-domain-verification-for-social-media/#it-might-be-too-difficult-for-large-organisation">It might be too difficult for large organisation</a></h2>

<p>I've written <a href="https://shkspr.mobi/blog/2024/11/an-easy-guide-to-bluesky-verification/">An Easy Guide To BlueSky Verification</a>. It can be as simple as uploading a single file to your website. Although I have some sympathy for claims that managing the process for hundreds of employees might be difficult.</p>

<p>Based on <a href="https://bsky.app/profile/edent.tel/post/3lbwpu7zmuc2r">my calculations</a> around 5% of active BlueSky users have verified their domain.</p>

<h2 id="the-alternative-isnt-much-better"><a href="https://shkspr.mobi/blog/2024/12/a-few-thoughts-on-domain-verification-for-social-media/#the-alternative-isnt-much-better">The alternative isn't much better</a></h2>

<p>Verification is <em>hard</em>. Can an over-worked verification team spot that I've photoshopped a passport so that it looks like someone else's?</p>

<p>There are hundred of famous people called <a href="https://en.wikipedia.org/wiki/John_Williams_(disambiguation)">John Williams</a> - which one do you verify?</p>

<p>Also, <em>what</em> are you verifying? In my post on <a href="https://shkspr.mobi/blog/2021/08/rethinking-twitter-verification/">Rethinking Twitter Verification</a>, I pointed out that the ambiguity of verification leads to some weird and non-obvious outcomes.</p>

<h2 id="final-thoughts"><a href="https://shkspr.mobi/blog/2024/12/a-few-thoughts-on-domain-verification-for-social-media/#final-thoughts">Final thoughts</a></h2>

<p>There are no simple technological fixes to complex social issues.</p>

<p>But I'm naïve enough to believe that, with time, we can train people to be better at assessing the information they are given.</p>

<div id="footnotes" role="doc-endnotes">
<hr>
<ol start="0">

<li id="fn:complicated">
<p>It is a <em>lot</em> more complicated than that - <a href="https://dustycloud.org/blog/how-decentralized-is-bluesky/">as per this essay by Christine Lemmer-Webber</a>.&nbsp;<a href="https://shkspr.mobi/blog/2024/12/a-few-thoughts-on-domain-verification-for-social-media/#fnref:complicated" class="footnote-backref" role="doc-backlink">↩︎</a></p>
</li>

<li id="fn:secret">
<p>Secret in the sense that they only generate it for you. It isn't private. Nothing bad will happen if other people see it.&nbsp;<a href="https://shkspr.mobi/blog/2024/12/a-few-thoughts-on-domain-verification-for-social-media/#fnref:secret" class="footnote-backref" role="doc-backlink">↩︎</a></p>
</li>

<li id="fn:alice">
<p>Let's assume she's naughty and doesn't remove the validation herself from her profile.&nbsp;<a href="https://shkspr.mobi/blog/2024/12/a-few-thoughts-on-domain-verification-for-social-media/#fnref:alice" class="footnote-backref" role="doc-backlink">↩︎</a></p>
</li>

<li id="fn:rev">
<p>It appears that <a href="https://bsky.app/profile/edent.tel/post/3lbcbpad5m42p">it takes BlueSky around 2 hour to detect and revoke verification</a>.&nbsp;<a href="https://shkspr.mobi/blog/2024/12/a-few-thoughts-on-domain-verification-for-social-media/#fnref:rev" class="footnote-backref" role="doc-backlink">↩︎</a></p>
</li>

<li id="fn:wrong">
<p>Prove me wrong. Seriously. <a href="https://bsky.app/profile/edent.tel/post/3lb6glt5d7k2m">So many journalists seem utterly credulous</a>.&nbsp;<a href="https://shkspr.mobi/blog/2024/12/a-few-thoughts-on-domain-verification-for-social-media/#fnref:wrong" class="footnote-backref" role="doc-backlink">↩︎</a></p>
</li>

</ol>
</div>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=54056&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2024/12/a-few-thoughts-on-domain-verification-for-social-media/feed/</wfw:commentRss>
			<slash:comments>9</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[An Easy Guide To BlueSky Verification]]></title>
		<link>https://shkspr.mobi/blog/2024/11/an-easy-guide-to-bluesky-verification/</link>
					<comments>https://shkspr.mobi/blog/2024/11/an-easy-guide-to-bluesky-verification/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Tue, 19 Nov 2024 12:34:21 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[BlueSky]]></category>
		<category><![CDATA[BSky]]></category>
		<category><![CDATA[HowTo]]></category>
		<category><![CDATA[tutorial]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=54022</guid>

					<description><![CDATA[The new Twitter-Wannabe BlueSky has an interesting approach to verifying accounts. Rather than you sending in your passport, or paying a 3rd party, or bribing an employee - you can self-verify for free!  This opens up verification to small organisations, individuals, and anyone who wants to prove who they are. Brilliant!  Verification means that your @username will change to @Your.Website.com -…]]></description>
										<content:encoded><![CDATA[<p>The new Twitter-Wannabe <a href="https://bsky.app/">BlueSky</a> has an interesting approach to verifying accounts. Rather than you sending in your passport, or paying a 3rd party, or bribing an employee - you can self-verify <em>for free</em>!</p>

<p>This opens up verification to small organisations, individuals, and anyone who wants to prove who they are. Brilliant!</p>

<p>Verification means that your <code>@username</code> will change to <code>@Your.Website.com</code> - this means that everyone can see your BlueSky account is owned by that specific website. When you change your name, you keep all your followers and posts.</p>

<p>Here are some organisations and people at risk of impersonation who have already done this:</p>

<ul>
<li>UK Newspaper <a href="https://bsky.app/profile/theguardian.com">https://bsky.app/profile/theguardian.com</a></li>
<li>Trade Union <a href="https://bsky.app/profile/utaw.tech">https://bsky.app/profile/utaw.tech</a></li>
<li>Labour MPs <a href="https://bsky.app/profile/sarahowen.org.uk">https://bsky.app/profile/sarahowen.org.uk</a></li>
<li>Small Publisher <a href="https://bsky.app/profile/canongate.co.uk">https://bsky.app/profile/canongate.co.uk</a></li>
<li>Fun Website <a href="https://bsky.app/profile/openbenches.org">https://bsky.app/profile/openbenches.org</a></li>
</ul>

<p>There is an easy way to get verified and <a href="https://bsky.social/about/blog/4-28-2023-domain-handle-tutorial">a hard way</a>.  Let's do the easy way!</p>

<h2 id="1-sign-up-for-bluesky"><a href="https://shkspr.mobi/blog/2024/11/an-easy-guide-to-bluesky-verification/#1-sign-up-for-bluesky">1) Sign Up For BlueSky</a></h2>

<p>Sign up and register a username. This can be anything you want. For example, I registered <code>edent.bsky.social</code></p>

<h2 id="2-change-your-user-id"><a href="https://shkspr.mobi/blog/2024/11/an-easy-guide-to-bluesky-verification/#2-change-your-user-id">2) Change Your User ID</a></h2>

<p>Follow these steps:</p>

<ol>
<li>Visit <a href="https://bsky.app/settings">https://bsky.app/settings</a></li>
<li>Scroll down and select "Change Handle"</li>
<li>Click "I have my own domain"</li>
<li>Select "No DNS Panel". The screen should look like this:

<ul>
<li><img src="https://shkspr.mobi/blog/wp-content/uploads/2024/11/Change-Handle-fs8.png" alt="Change Handle screen." width="1440" height="1408" class="aligncenter size-full wp-image-54026"></li>
</ul></li>
<li>Type in the domain name you want to verify</li>
<li>Click "Copy File Contents"</li>
</ol>

<p>Keep this web page open.</p>

<h2 id="3-copy-and-save-your-did"><a href="https://shkspr.mobi/blog/2024/11/an-easy-guide-to-bluesky-verification/#3-copy-and-save-your-did">3) Copy and Save Your DID</a></h2>

<p>On your clipboard, you will have a bit of text which looks like this <code>did:plc:dip7ueksh627fxacagfrdyz2</code></p>

<p>Save it in a text file called <code>atproto-did</code></p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2024/11/atproto-fs8.png" alt="Screenshot of a text editor." width="623" height="183" class="aligncenter size-full wp-image-54024">

<p>It is very important that the file doesn't end with <code>.txt</code> - it must be called <code>atproto-did</code> and nothing else.</p>

<p>The file should only contain the text you copied. Nothing else.</p>

<h2 id="4-upload-the-file-to-your-website"><a href="https://shkspr.mobi/blog/2024/11/an-easy-guide-to-bluesky-verification/#4-upload-the-file-to-your-website">4) Upload The File To Your Website</a></h2>

<p>This is the only technical bit of the process.  You need the ability to upload a file to your website.  I don't know whether you use FTP, a control panel, or email things to the person who manages your site.</p>

<p>You need to save the <code>atproto-did</code> file in a folder called <code>/.well-known/</code></p>

<p>If that folder doesn't exist, create it. The folder name <em>must</em> be typed exactly like that, with the dot at the start.</p>

<p>You can check it has worked by visiting <code>YourWebsite.com/.well-known/atproto-did</code></p>

<p>If you can see your DID, it worked!</p>

<h2 id="5-change-your-username"><a href="https://shkspr.mobi/blog/2024/11/an-easy-guide-to-bluesky-verification/#5-change-your-username">5) Change Your Username</a></h2>

<p>Go back to the "Change Handle" web page you opened in Step 2.</p>

<p>Click "Verify Text File" and then "Update".</p>

<h2 id="6-thats-it"><a href="https://shkspr.mobi/blog/2024/11/an-easy-guide-to-bluesky-verification/#6-thats-it">6) That's It!</a></h2>

<p>Feel free to share this guide with people and organisations who want to get verified on BSky.</p>

<p>Leave a comment if you found it useful or want me to clarify something.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=54022&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2024/11/an-easy-guide-to-bluesky-verification/feed/</wfw:commentRss>
			<slash:comments>14</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[Set your domain name as your handle for a BlueSky bot which is bridged from the Fediverse]]></title>
		<link>https://shkspr.mobi/blog/2024/11/set-your-domain-name-as-your-handle-for-a-bluesky-bot-which-is-bridged-from-the-fediverse/</link>
					<comments>https://shkspr.mobi/blog/2024/11/set-your-domain-name-as-your-handle-for-a-bluesky-bot-which-is-bridged-from-the-fediverse/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Thu, 14 Nov 2024 12:34:32 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[BlueSky]]></category>
		<category><![CDATA[bot]]></category>
		<category><![CDATA[fediverse]]></category>
		<category><![CDATA[mastodon]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=53849</guid>

					<description><![CDATA[If you&#039;ve found this page, it&#039;s because you are me in the future and want to remember these instructions!   Create an account on the Fediverse using a domain you control   For example @user@bots.example.com  Follow the Fediverse-ATProto bridge @bsky.brid.gy@bsky.brid.gy   Your account will need to be over 2 weeks old and have a name, profile picture, etc.  You now have an account on BSky! Its…]]></description>
										<content:encoded><![CDATA[<p>If you've found this page, it's because you are me in the future and want to remember these instructions!</p>

<ol start="0">
<li>Create an account on the Fediverse using a domain you control

<ul>
<li>For example <code>@user@bots.example.com</code></li>
</ul></li>
<li><a href="https://fed.brid.gy/docs#fediverse-get-started">Follow the Fediverse-ATProto bridge</a> <code>@bsky.brid.gy@bsky.brid.gy</code>

<ul>
<li><a href="https://fed.brid.gy/docs#troubleshooting">Your account will need to be over 2 weeks old and have a name, profile picture, etc</a>.</li>
</ul></li>
<li>You now have an account on BSky! Its name will be something like <code>user.bots.example.com.ap.brid.gy</code></li>
<li>Get the DID of your account

<ul>
<li><code>https://public.api.bsky.app/xrpc/app.bsky.actor.getProfile?actor=user.bots.example.com.ap.brid.gy</code></li>
<li>Or <code>https://fed.brid.gy/ap/@user@bots.example.com</code></li>
</ul></li>
<li><a href="https://atproto.com/specs/handle#handle-resolution">Add the DID to your domain</a>

<ul>
<li>I think the easiest way is sticking it in a plain text file at <code>bots.example.com/.well-known/atproto-did</code></li>
</ul></li>
<li>Use the <a href="https://bsky-debug.app/handle?handle=user.bots.example.com.ap.brid.gy">BSky Debugger</a> to make sure it was successful.</li>
<li>Send a Direct Message from the Fediverse to <code>@bsky.brid.gy@bsky.brid.gy</code>. The message must only contain <code>username bots.example.com</code>.

<ul>
<li>That's <em>literally</em> the word <code>username</code>. It isn't your account's username.</li>
</ul></li>
<li>Wait a few moments.</li>
<li>Your bot will now be on BSky as <code>https://bsky.app/profile/bots.example.com</code>!</li>
</ol>

<p>You can see that <a href="https://bot.viii.fi/bot">https://bot.viii.fi/bot</a> is also available at <a href="https://bsky.app/profile/bot.viii.fi">https://bsky.app/profile/bot.viii.fi</a></p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=53849&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2024/11/set-your-domain-name-as-your-handle-for-a-bluesky-bot-which-is-bridged-from-the-fediverse/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[Social Media Blocking Has Always Been A Lie]]></title>
		<link>https://shkspr.mobi/blog/2024/09/social-media-blocking-has-always-been-a-lie/</link>
					<comments>https://shkspr.mobi/blog/2024/09/social-media-blocking-has-always-been-a-lie/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Tue, 24 Sep 2024 11:34:48 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[ActivityPub]]></category>
		<category><![CDATA[BlueSky]]></category>
		<category><![CDATA[mastodon]]></category>
		<category><![CDATA[Social Media]]></category>
		<category><![CDATA[twitter]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=53274</guid>

					<description><![CDATA[What does it mean to block someone on a social media site?  Way back in the mists of time, we dealt with trolls on Usenet with the almighty PLONK - PLaced On Newsgroup Killfile.  It meant your newsreader never downloaded their posts. They could rant at you all day long, and you&#039;d never hear from them.  It&#039;s what we would nowadays call &#34;Mute&#34;.  But, whether you&#039;re on Usenet or a modern social…]]></description>
										<content:encoded><![CDATA[<p>What does it mean to block someone on a social media site?</p>

<p>Way back in the mists of time, we dealt with trolls on Usenet with the almighty PLONK - <a href="https://members.newsdemon.com/what-is-plonk.php">PLaced On Newsgroup Killfile</a>.  It meant your newsreader never downloaded their posts. They could rant at you all day long, and you'd never hear from them.  It's what we would nowadays call "Mute".</p>

<p>But, whether you're on Usenet or a modern social network, muting someone doesn't actually stop them replying to you. The miscreant can still see your posts, interact with them, quote them. And everyone on that service can see their abuse. Perhaps they will also join in?</p>

<p>Most modern social networks now have the concept of "Block". When Alice blocks Bob, it means Bob cannot see Alice's posts.  The service doesn't deliver her content to him. If he goes looking, he can't find it. She is invisible to him.</p>

<p>Except, of course, that's a lie. If Bob logs out of his account, he can see Alice's public content. If he logs into an alternative account, he isn't blocked.</p>

<p>The block is a <em>social signal</em> backed up with mild technical restrictions.</p>

<p>What do I mean by that? Ordinarily, you will have no idea that you have been blocked by someone. They will simply vanish from your screens.  You do not receive an alert that you've been blocked. Technical restrictions mean you won't see their posts, nor replies to them.  The only way you might know is if you deliberately look for the person blocking you.</p>

<p>Seeing that you have been blocked is a "social signal". It lets you know that your behaviour was unwanted, or that your contributions weren't valued, or that someone just doesn't like you.  For most people, that sort of chastisement probably induces a little shame or grief.  For others, it is enraging.</p>

<p>Again, it isn't impossible for a blocked user to see content - but technical restrictions means it takes <em>effort</em>.  And, it turns out, for all but the most obsessive abusers - a mild bit of UI friction is all that it takes for them to stop.</p>

<p>On a centralised social media platform, like Twitter and Facebook, your blocks are private. The only people who know you have blocked Taylor Swift are you, the platform, and T-Swizzle herself.</p>

<p>On decentralised social media platforms, it is more complicated.</p>

<p>Mastodon / ActivityPub lets you block a user. In doing so, you have to tell that user's server that you don't want them seeing your messages. That means your server knows about the block, their server know, and the user knows. But, crucially, there's nothing to stop a malicious server ignoring your wishes.  While your server can mute all the interactions from them, there are only <a href="https://fedi.tips/authorized-fetch/">weak technological restrictions on their behaviour</a>.</p>

<p>BlueSky / AT Protocol takes a different (and more worrying) approach. BlueSky tells <em>everyone</em> about your blocks. If Alice blocks Bob - the system lets everyone know. This means that if Bob starts replying to your posts, other clients will know to ignore his interactions with you. I've written more <a href="https://bsky.app/profile/edent.tel/post/3l4rjxx32br2j">about the dangers of public blocklists over on BSky</a>.</p>

<p>But, crucially, <strong>none of these systems actually block users</strong>.  This isn't like that <a href="https://black-mirror.fandom.com/wiki/White_Christmas">Black Mirror episode</a> where people are literally blurred out from your eyeballs.</p>

<p>In <em>all</em> cases, a user can log out and see your public posts. They can sign in with an alternative account. And, in the case of decentralised social media, they can choose to ignore the technological restrictions you impose.</p>

<p>Social networks have a responsibility to keep their users safe. That means having enough friction to prevent casual abuse.</p>

<p>But blocking is <em>only</em> a social signal.  That's all it ever has been. It is a boop on the nose with a rolled up newspaper. It is a message to tell someone that they might want to adjust their attitude.</p>

<p>You should block - and block often. You should feel empowered to curate an environment that is safe for you. But you should also understand the limitations of the technical controls which underpin these social signals.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=53274&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2024/09/social-media-blocking-has-always-been-a-lie/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
	</channel>
</rss>
