PageSourceSearch

https://mackuba.eu/2025/11/18/atproto-blog-posts/

html mackuba.eu collected 2026-10-02 04:19:06 UTC 38,105 bytes, 715 lines download raw bytes

1<!DOCTYPE html>
2<html lang="en">
3
4<head>
5  <title>
6    ATProto blog posts collection –  mackuba.eu
7  </title>
8
9  <meta charset="UTF-8">
10  <meta name="viewport" content="width=device-width">
11  <meta name="author" content="Kuba Suder">
12
13  <meta property="og:url" content="https://mackuba.eu/2025/11/18/atproto-blog-posts/">
14  <meta property="og:title" content="ATProto blog posts collection">
15  <meta property="og:type" content="article">
16  <meta property="og:description" content="(Last update: 16 Aug 2026.)">
17
18  <meta name="fediverse:creator" content="@[email protected]">
19
20  <!--
21      icons thx to:
22        Paul Robert Lloyd http://paulrobertlloyd.com
23        Mark James http://www.famfamfam.com
24        Smashing Magazine http://www.smashingmagazine.com
25        Ahmad Galal http://3nc.deviantart.com/
26        Artua Design Studios http://www.artua.com/
27        W3C http://www.w3.org/html/logo/
28        Open Clip Art Library http://www.openclipart.org/
29        Ömer ÇETİN http://omercetin.deviantart.com/
30        HiClipart https://www.hiclipart.com (note)
31  -->
32
33  <link rel="alternate" href="https://mackuba.eu/feed.xml" type="application/atom+xml" title="Posts feed (Atom)">
34  <link rel="alternate" href="https://mackuba.eu/feed-notes.xml" type="application/atom+xml" title="Notes feed (Atom)">
35  <link rel="alternate" href="https://mackuba.eu/feed-all.xml" type="application/atom+xml" title="Feed with everything (Atom)">
36
37  <link rel="icon" href="/favicon.ico?1790026422">
38  <link rel="shortcut icon" href="/favicon.ico?1790026422">
39  <link rel="apple-touch-icon" href="/apple-touch-icon.png?1790026422">
40
41  <link rel="me" href="https://101010.pl/@mackuba">
42
43    <link rel="site.standard.publication" href="at://did:plc:oio4hkxaop4ao4wz2pp3f4cr/site.standard.publication/3mn5mackuba26">
44
45    <link rel="site.standard.document" href="at://did:plc:oio4hkxaop4ao4wz2pp3f4cr/site.standard.document/3m5ugyehya2ex">
46
47    
47<script type="text/javascript" nonce="PLctgT91rRH/QYjJyP4OAg==">
48      window.postData = {"blueskyURI":"at://did:plc:oio4hkxaop4ao4wz2pp3f4cr/app.bsky.feed.post/3m5wgr3eu422m","mastodonInstance":"martianbase.net","mastodonStatusId":"115572285477653239"};
49    </script>
49
50
51    
51<script defer src="/javascripts/dompurify/purify.min.js?1790026422" type="text/javascript" nonce="PLctgT91rRH/QYjJyP4OAg=="></script>
51
52    
52<script defer src="/javascripts/comments.js?1790026422" type="text/javascript" nonce="PLctgT91rRH/QYjJyP4OAg=="></script>
52
53
54  <link href="/javascripts/photoswipe/photoswipe.css?1790026422" rel="stylesheet" type="text/css" nonce="PLctgT91rRH/QYjJyP4OAg==">
55  <link href="/stylesheets/style.css?1790026422" rel="stylesheet" type="text/css" nonce="PLctgT91rRH/QYjJyP4OAg==">
56  <link href="/javascripts/highlighter/shSwift.css?1790026422" rel="stylesheet" type="text/css" nonce="PLctgT91rRH/QYjJyP4OAg==">
57
58  
58<script defer src="/javascripts/highlighter/shCore.js?1790026422" type="text/javascript" nonce="PLctgT91rRH/QYjJyP4OAg=="></script>
58
59  
59<script defer src="/javascripts/highlighter/shAutoloader.js?1790026422" type="text/javascript" nonce="PLctgT91rRH/QYjJyP4OAg=="></script>
59
60  
60<script defer src="/javascripts/blog.js?1790026422" type="text/javascript" nonce="PLctgT91rRH/QYjJyP4OAg=="></script>
60
61
62  
62<script type="module">
63    import PhotoSwipeLightbox from '/javascripts/photoswipe/photoswipe-lightbox.esm.min.js';
64    window.PhotoSwipeLightbox = PhotoSwipeLightbox;
65  </script>
65
66
67    
67<script>
68      let _paq = window._paq = window._paq || [];
69      _paq.push(['setExcludedQueryParams', ['fbclid', 'tdsourcetag']]);
70      _paq.push(['setTrackerUrl', 'https://mackuba.eu/m/ping']);
71      _paq.push(['setRequestMethod', 'POST']);
72      _paq.push(['setSiteId', '5']);
73      _paq.push(['disableAlwaysUseSendBeacon']);
74      _paq.push(['disableCookies']);
75      _paq.push(['trackPageView']);
76      _paq.push(['enableLinkTracking']);
77    </script>
77
78</head>
79
80<body class="show">
81  <header>
82    <div class="title">
83      <h1><a href="/">MacKuba</a></h1>
84      <h4><span class="japko">🍎</span> Kuba Suder&#39;s blog on Mac/iOS &amp; web dev</h4>
85    </div>
86
87    <nav>
88      <a href="https://blue.mackuba.eu">Bluesky</a>
89      <a href="/swiftui/">SwiftUI</a>
90      <a href="/notes/">Notes</a>
91
92        <a href="/projects">Projects</a>
93        <a href="/about">About me</a>
94
95      <span class="icons">
96        <a rel="me" title="Tangled" href="https://tangled.org/mackuba.eu"
97            target="_blank"><img class="tangled" alt="Tangled" src="/images/tangled_dolly.svg?1790026422" width="20" height="20"></a>
98
99        <a rel="me" title="Bluesky" href="https://bsky.app/profile/did:plc:oio4hkxaop4ao4wz2pp3f4cr"
100            target="_blank"><img class="bluesky" alt="Bluesky" src="/images/bsky-logo.svg?1790026422" width="20" height="20"></a>
101
102        <a rel="me" title="Mastodon" href="https://martianbase.net/@mackuba"
103            target="_blank"><img class="mastodon" alt="Mastodon" src="/images/masto-logo.svg?1790026422" width="20" height="20"></a>
104      </span>
105    </nav>
106  </header>
107
108  <div id="page">
109    <div id="page_body">
110      <article>
111  <header>
112  <h2>
113    <a href="/2025/11/18/atproto-blog-posts/">ATProto blog posts collection</a>
114  </h2>
115
116  <p class="info">
117    <time datetime="2025-11-18T18:59:04+01:00" title="2025-11-18T18:59:04+01:00">
118      Tuesday, 18 November 2025
119    </time>
120
121    <span class="tags">
122      <img alt="Categories:" src="/images/tag_blue.png?1790026422" width="16" height="16">
123      <a href="/category/social/">Social</a>
124    </span>
125
126  </p>
127</header>
128
129
130  <div class="body">
131    
132
133<div class="hide-in-intro">
134  <p><i>(Last update: 16 Aug 2026.)</i></p>
135</div>
136
137
138<p>I&nbsp;come across a lot of blog posts about the AT Protocol and Bluesky technicals – both on Bluesky official blogs and those of the team members, and by independent developers from the community. So many people are blogging now (especially now that <a href="https://leaflet.pub">Leaflet</a> got popular in these circles) that I&nbsp;<a href="https://lab.mackuba.eu/3m5tyjv3ssc2p">started using an RSS reader again</a> just to keep up with everything.</p>
139
140<p>These posts are usually shared widely for a day or two, and then kind of forgotten – but a lot of them contain some valuable knowledge that is still relevant much later. Even if someone remembers that something like this has been written, it&rsquo;s not always easy to dig it out from the archive.</p>
141
142<p>I&nbsp;thought it would be nice to have one place collecting those old and newer blog posts to make them easier to find. So I&nbsp;went through those RSS feeds, my <a href="https://lab.mackuba.eu/3m46zeyme3e6n">like archives</a> and other places, and collected everything I&nbsp;could find here in an organized list. I&nbsp;also included the documents from the <a href="https://github.com/bluesky-social/proposals">&ldquo;Proposals&rdquo; GitHub repo</a>, and various posts from the <a href="https://github.com/bluesky-social/atproto/discussions">&ldquo;Discussions&rdquo; section</a> in the ATProto repo.</p>
143
144<p>This is a subjective selection – from many blogs I&nbsp;skipped some less relevant posts or only included a couple out of many – so if you&rsquo;re interested, click through to the home page from any post and look for the other posts there.</p>
145<hr />
146
147<p class="noindent">Search posts by title: <input type="search" id="blog_post_search"></p>
148
149
150<h2>Bluesky official sources</h2>
151
152<h4>atproto.com articles</h4>
153
154<ul>
155<li><a href="https://atproto.com/articles/atproto-for-distsys-engineers">Atproto for distributed systems engineers</a> (Sep 2024)</li>
156<li><a href="https://atproto.com/articles/atproto-ethos">Atproto Ethos</a> (Apr 2025)</li>
157</ul>
158
159
160<h4>bsky.social/about/blog (non-technical blog)</h4>
161
162<ul>
163<li><a href="https://bsky.social/about/blog/4-13-2023-moderation">Composable Moderation</a> (Apr 2023)</li>
164<li><a href="https://bsky.social/about/blog/4-28-2023-domain-handle-tutorial">How to verify your Bluesky account</a> (Apr 2023)</li>
165<li><a href="https://bsky.social/about/blog/5-5-2023-federation-architecture">Federation Architecture Overview</a> (May 2023)</li>
166<li><a href="https://bsky.social/about/blog/02-22-2024-open-social-web">Bluesky: An Open Social Web</a> (Feb 2024)</li>
167<li><a href="https://bsky.social/about/blog/03-12-2024-stackable-moderation">Bluesky’s Stackable Approach to Moderation</a> (Mar 2024)</li>
168<li><a href="https://bsky.social/about/blog/05-31-2024-search">Tips and Tricks for Bluesky Search</a> (May 2024)</li>
169<li><a href="https://bsky.social/about/blog/08-06-2024-board">Bluesky Welcomes Mike Masnick to Board of Directors</a> (Aug 2024)</li>
170<li><a href="https://bsky.social/about/blog/10-24-2024-series-a">
170Bluesky Announces Series A to Grow Network of 13M+ Users</a> (Oct 2024)</li>
171<li><a href="https://bsky.social/about/blog/12-30-2024-year-in-review">2024 In Review</a> (Dec 2024)</li>
172<li><a href="https://bsky.social/about/blog/10-01-2025-patent-pledge">Bluesky&rsquo;s Patent Non-Aggression Pledge</a> (Oct 2025)</li>
173<li><a href="https://bsky.social/about/blog/01-26-2026-whats-next-at-bluesky">What&rsquo;s Next at Bluesky</a> (Jan 2026)</li>
174<li><a href="https://bsky.social/about/blog/03-09-2026-a-new-chapter-for-bluesky">A New Chapter for Bluesky</a> (Mar 2026)</li>
175<li><a href="https://bsky.social/about/blog/03-19-2026-series-b">Bluesky&rsquo;s 2025 $100M Series B Lays Foundation for Open Social Web</a> (Mar 2026)</li>
176<li><a href="https://bsky.social/about/blog/07-10-2026-toni-schneider-ceo">Bluesky names Toni Schneider CEO</a> (Jul 2026)</li>
177</ul>
178
179
180<h4>atproto.com/blog (dev blog)</h4>
181
182<p><details>
183  <summary>Click to expand</summary></p>
184
185<h4>2023</h4>
186
187<ul>
188<li><a href="https://atproto.com/blog/block-implementation">Why are blocks on Bluesky public?</a> (Jun 2023)</li>
189<li><a href="https://docs.bsky.app/blog/feature-skyfeed">Featured Community Project: Skyfeed</a> (Aug 2023)</li>
190<li><a href="https://atproto.com/blog/create-post">Posting via the Bluesky API</a> (Aug 2023)</li>
191<li><a href="https://atproto.com/blog/repo-sync-update">Updates to Repository Sync Semantics</a> (Aug 2023)</li>
192<li><a href="https://docs.bsky.app/blog/rate-limits-pds-v3">Rate Limits, PDS Distribution v3, and More</a> (Sep 2023)</li>
193<li><a href="https://atproto.com/blog/bgs-and-did-doc">Bluesky BGS and DID Document Formatting Changes</a> (Oct 2023)</li>
194<li><a href="https://atproto.com/blog/protocol-roadmap">2023 Protocol Roadmap</a> (Oct 2023)</li>
195<li><a href="https://atproto.com/blog/repo-export">Download and Parse Repository Exports</a> (Nov 2023)</li>
196<li><a href="https://docs.bsky.app/blog/feature-bridgyfed">Featured Community Project: Bridgy Fed</a> (Dec 2023)</li>
197</ul>
198
199
200<h4>2024</h4>
201
202<ul>
203<li><a href="https://atproto.com/blog/self-host-federation">Early Access Federation for Self-Hosters</a> (Feb 2024)</li>
204<li><a href="https://atproto.com/blog/atproto-grants">Announcing AT Protocol Grants</a> (Mar 2024)</li>
205<li><a href="https://docs.bsky.app/blog/blueskys-moderation-architecture">Bluesky’s Moderation Architecture</a> (Mar 2024)</li>
206<li><a href="https://atproto.com/blog/atproto-grants-recipients">Meet the second batch of AT Protocol Grant Recipients</a> (Apr 2024)</li>
207<li><a href="https://atproto.com/blog/2024-protocol-roadmap">2024 Protocol Roadmap</a> (May 2024)</li>
208<li><a href="https://atproto.com/blog/label-grants">Labeling Services Microgrants</a> (May 2024)</li>
209<li><a href="https://docs.bsky.app/blog/ts-api-refactor">Typescript API&nbsp;Package Auth Refactor</a> (Aug 2024)</li>
210<li><a href="https://atproto.com/blog/oauth-atproto">OAuth for AT Protocol</a> (Sep 2024)</li>
211<li><a href="https://atproto.com/blog/pinned-posts">Lexicons, Pinned Posts, and Interoperability</a> (Oct 2024)</li>
212<li><a href="https://atproto.com/blog/jetstream">Introducing Jetstream</a> (Oct 2024)</li>
213<li><a href="https://atproto.com/blog/relay-ops">Relay Operational Updates</a> (Nov 2024)</li>
214</ul>
215
216
217<h4>2025</h4>
218
219<ul>
220<li><a href="https://atproto.com/blog/looking-back-2024">Looking Back At 2024 AT Protocol Development</a> (Jan 2025)</li>
221<li><a href="https://atproto.com/blog/2025-protocol-roadmap-spring">2025 Protocol Roadmap (Spring and Summer)</a> (Mar 2025)</li>
222<li><a href="https://atproto.com/blog/relay-updates-sync-v1-1">Relay Updates for Sync v1.1</a> (May 2025)</li>
223<li><a href="https://atproto.com/blog/network-account-management">Network Account Management</a> (May 2025)</li>
224<li><a href="https://atproto.com/blog/oauth-improvements">OAuth Improvements</a> (Jun 2025)</li>
225<li><a href="https://atproto.com/blog/plc-directory-org">Creating an Independent Public Ledger of Credentials (PLC) Directory Organization</a> (Sep 2025)</li>
226<li><a href="https://atproto.com/blog/taking-at-to-the-ietf">Taking AT to the IETF</a> (Sep 2025)</li>
227<li><a href="https://docs.bsky.app/blog/incoming-migration">Enabling Account Migration Back to Bluesky’s PDS</a> (Sep 2025)</li>
228<li><a href="https://atproto.com/blog/protocol-check-in-fall-2025">Protocol Check-in (Fall 2025)</a> (Oct 2025)</li>
229<li><a href="https://docs.bsky.app/blog/contact-import-rfc">Request For Comments: A secure contact import scheme for social networks</a> (Nov 2025)</li>
230<li><a href="https://atproto.com/blog/introducing-tap">Introducing Tap: Repository Synchronization Made Simple</a> (Dec 2025)</li>
231</ul>
232
233
234<h4>2026</h4>
235
236<ul>
237<li><a href="https://atproto.com/blog/relay-rollout">Upcoming Relay Transition</a>
237 (Jan 2026)</li>
238<li><a href="https://atproto.com/blog/new-site-2026">Welcome to the New atproto.com</a> (Feb 2026)</li>
239<li><a href="https://atproto.com/blog/plc-replicas">PLC Read Replicas</a> (Feb 2026)</li>
240<li><a href="https://atproto.com/blog/npmx-alpha-launch">Supporting the npmx Alpha Launch</a> (Mar 2026)</li>
241<li><a href="https://atproto.com/blog/working-to-decentralize-fedcm">Working to Decentralize FedCM</a> (Mar 2026)</li>
242<li><a href="https://atproto.com/blog/introducing-hubble-a-public-mirror-for-the-whole-atmosphere">Introducing Hubble: A Public Mirror for the Whole Atmosphere</a> (Mar 2026)</li>
243<li><a href="https://atproto.com/blog/2026-spring-roadmap">AT Protocol Roadmap (Spring 2026)</a> (Mar 2026)</li>
244<li><a href="https://atproto.com/blog/kicking-off-the-atp-working-group">Kicking off the ATP Working Group at the IETF</a> (Apr 2026)</li>
245<li><a href="https://atproto.com/blog/indexing-standard-site">Indexing Standard Site</a> (Apr 2026)</li>
246<li><a href="https://atproto.com/blog/serving-the-for-you-feed">Serving the For You Feed</a> (Apr 2026)</li>
247<li><a href="https://atproto.com/blog/report-based-moderation">Report-Based Moderation in Ozone</a> (May 2026)</li>
248<li><a href="https://atproto.com/blog/ts-sdk-upgrades">TypeScript SDK Upgrades</a> (May 2026)</li>
249<li><a href="https://atproto.com/blog/standard-site-bluesky-timeline">Now in your timeline: Standard.site</a> (May 2026)</li>
250<li><a href="https://atproto.com/blog/going-off-protocol">Going Off Protocol</a> (Jun 2026)</li>
251<li><a href="https://atproto.com/blog/at-protocol-trademark">AT Protocol Trademark</a> (Jul 2026)</li>
252<li><a href="https://atproto.com/blog/introducing-bluesky-protocol-services">Introducing Bluesky Protocol Services</a> (Aug 2026)</li>
253</ul>
254
255
256<p></details></p>
257
258<h4>github.com/bluesky-social/atproto/discussions</h4>
259
260<p><details>
261  <summary>Click to expand</summary></p>
262
263<h4>2023</h4>
264
265<ul>
266<li><a href="https://github.com/bluesky-social/atproto/discussions/1156">brainstorm ideas for Cool Developer Tools</a> (Feb 2023)</li>
267<li><a href="https://github.com/bluesky-social/atproto/discussions/1410">Intention to remove repository history</a> (Jul 2023)</li>
268<li><a href="https://github.com/bluesky-social/atproto/discussions/1510">Planned Changes to DID Documents (August 2023)</a> (Aug 2023)</li>
269<li><a href="https://github.com/bluesky-social/atproto/discussions/1632">DID PLC Rate Limits and Validation</a> (Sep 2023)</li>
270<li><a href="https://github.com/bluesky-social/atproto/discussions/1711">Upcoming Disruptive Protocol and Infra Changes</a> (Oct 2023)</li>
271<li><a href="https://github.com/bluesky-social/atproto/discussions/1832">Migrating bsky.social to Multiple PDS Instances</a> (Nov 2023)</li>
272<li><a href="https://github.com/bluesky-social/atproto/discussions/1847">That which we call a “BGS”, By any other name would smell as sweet</a> (Nov 2023)</li>
273<li><a href="https://github.com/bluesky-social/atproto/discussions/1910">Tightening Datetime, Record Key, and TID validation</a> (Dec 2023)</li>
274</ul>
275
276
277<h4>2024</h4>
278
279<ul>
280<li><a href="https://github.com/bluesky-social/atproto/discussions/2128">Protocol Tech Debt</a> (Feb 2024)</li>
281<li><a href="https://github.com/bluesky-social/atproto/discussions/2220">Summary of Recent Changes</a> (Feb 2024)</li>
282<li><a href="https://github.com/bluesky-social/atproto/discussions/2224">Decision to allow colon character (:) in Record Keys</a> (Feb 2024)</li>
283<li><a href="https://github.com/bluesky-social/atproto/discussions/2293">March 2024 Protocol Updates</a> (Mar 2024)</li>
284<li><a href="https://github.com/bluesky-social/atproto/discussions/2350">What does a PDS implementation entail?</a> (Mar 2024)</li>
285<li><a href="https://github.com/bluesky-social/atproto/discussions/2415">What goes in to a Bluesky or atproto SDK?</a> (Apr 2024)</li>
286<li><a href="https://github.com/bluesky-social/atproto/discussions/2656">OAuth Roadmap</a> (Jul 2024)</li>
287<li><a href="https://github.com/bluesky-social/atproto/discussions/2687">Service auth token iteration – method binding &amp; nonces</a> (Aug 2024)</li>
288<li><a href="https://github.com/bluesky-social/atproto/discussions/2754">Brainstorming: atproto Dev Tooling and Experience</a> (Aug 2024)</li>
289<li><a href="https://github.com/bluesky-social/atproto/discussions/2961">What does an AppView implementation entail?</a> (Nov 2024)</li>
290<li><a href="https://github.com/bluesky-social/atproto/discussions/3036">Relay Operational Updates</a> (Nov 2024)</li>
291<li><a href="https://github.com/bluesky-social/atproto/discussions/3049">Call for Developer Projects</a> (Nov 2024)</li>
292<li><a href="https://github.com/bluesky-social/atproto/discussions/3074">RFC: Lexicon Resolution</a> (Nov 2024)</li>
293<li><a href="https://github.com/bluesky-social/atproto/discussions/3175">Account Lifecycle Best Practices</a> (Dec 2024)</li>
294<li><a href="https://github.com/bluesky-social/atproto/discussions/3176">Account Migration Details</a> (Dec 2024)</li>
295</ul>
296
297
298<h4>2025</h4>
299
300<ul>
301<li><a href="https://github.com/bluesky-social/atproto/discussions/3655">Proposal: OAuth Scopes</a> (Mar 2025)</li>
302<li><a href="https://github.com/bluesky-social/atproto/discussions/3928">Relaxing DID PLC Verification Method Constraints</a> (Jul 2025)</li>
303<li><a href="https://github.com/bluesky-social/atproto/discussions/3950">OAuth Client Security in the Atmosphere</a> (Jul 2025)</li>
304<li><a href="https://github.com/bluesky-social/atproto/discussions/4068">Adding internal repositories to Bluesky’s workflows</a> (Jul 2025)</li>
305<li><a href="https://github.com/bluesky-social/atproto/discussions/4118">Progress on Auth Scopes Implementation (August 2025)</a> (Aug 2025)</li>
306<li><a href="https://github.com/bluesky-social/atproto/discussions/4245">Draft Lexicon Style Guide (Lexinomicon)</a> (Oct 2025)</li>
307<li><a href="https://github.com/bluesky-social/atproto/discussions/4316">PLC Operational Updates</a> (Oct 2025)</li>
308<li><a href="https://github.com/bluesky-social/atproto/discussions/4343">Lexicon Language Corner Cases</a> (Nov 2025)</li>
309<li><a href="https://github.com/bluesky-social/atproto/discussions/4437">Early Permission Sets</a> (Dec 2025)</li>
310</ul>
311
312
313<h4>2026</h4>
314
315<ul>
316<li><a href="https://github.com/bluesky-social/atproto/discussions/4508">PLC Export API&nbsp;
316Update</a> (Jan 2026)</li>
317<li><a href="https://github.com/bluesky-social/atproto/discussions/4618">Adding content-disposition on getBlob HTTP responses</a> (Feb 2026)</li>
318<li><a href="https://github.com/bluesky-social/atproto/discussions/4832">Increasing Bluesky Post Image Size Limit</a> (Apr 2026)</li>
319<li><a href="https://github.com/bluesky-social/atproto/discussions/4978">Integrating Standard Site Into Bluesky</a> (May 2026)</li>
320<li><a href="https://github.com/bluesky-social/atproto/discussions/5032">New Post Embed: Gallery</a> (Jun 2026)</li>
321<li><a href="https://github.com/bluesky-social/atproto/discussions/5255">Proposal: allow localhost redirect URIs in the localhost dev exception in the OAuth spec</a> (Jul 2026)</li>
322</ul>
323
324
325<p></details></p>
326
327<h4>github.com/bluesky-social/proposals</h4>
328
329<ul>
330<li><a href="https://github.com/bluesky-social/proposals/tree/main/0001-user-lists-replygating-and-thread-moderation">0001: User Lists, Reply-Gating, and Thread Moderation</a> (Jun 2023)</li>
331<li><a href="https://github.com/bluesky-social/proposals/tree/main/0002-labeling-and-moderation-controls">0002: Labeling and Moderation Controls</a> (Jun 2023)</li>
332<li><a href="https://github.com/bluesky-social/proposals/tree/main/0003-hashtags">0003: Hashtags</a> (Jun 2023)</li>
333<li><a href="https://github.com/bluesky-social/proposals/tree/main/0004-oauth">0004: OAuth 2.0 for the AT Protocol</a> (Feb 2024)</li>
334<li><a href="https://github.com/bluesky-social/proposals/tree/main/0005-mod-history">0005: Ozone Moderation History</a> (Oct 2024)</li>
335<li><a href="https://github.com/bluesky-social/proposals/tree/main/0006-sync-iteration">0006: AT Protocol Sync v1.1</a> (Feb 2025)</li>
336<li><a href="https://github.com/bluesky-social/proposals/tree/main/0007-mod-report-routing">0007: Moderation Report Routing</a> (Feb 2025)</li>
337<li><a href="https://github.com/bluesky-social/proposals/tree/main/0008-user-intents">0008: User Intents for Data Reuse</a> (Mar 2025)</li>
338<li><a href="https://github.com/bluesky-social/proposals/tree/main/0009-mod-report-granularity">0009: Moderation Report Granularity</a> (May 2025)</li>
339<li><a href="https://github.com/bluesky-social/proposals/tree/main/0010-client-assertion-backend">0010: Client assertion backend for browser-based applications</a> (Jun 2025)</li>
340<li><a href="https://github.com/bluesky-social/proposals/tree/main/0011-auth-scopes">0011: Auth Scopes for ATProto</a> (Jun 2025)</li>
341<li><a href="https://github.com/bluesky-social/proposals/tree/main/0012-infra-abuse-notices">0012: Infrastructure Abuse Notices</a> (Nov 2025)</li>
342<li><a href="https://github.com/bluesky-social/proposals/tree/main/0013-service-auth-refs">0013: Consistent References to DID Services</a> (Mar 2026)</li>
343<li><a href="https://github.com/bluesky-social/proposals/tree/main/0014-service-auth-revised">0014: Service Auth Audience Revised</a> (Apr 2026)</li>
344<li><a href="https://github.com/bluesky-social/proposals/tree/main/0015-json-subscriptions">0015: JSON Event Stream Encoding</a> (Jun 2026)</li>
345<li><a href="https://github.com/bluesky-social/proposals/tree/main/0016-permissioned-data">0016: Permissioned Data</a> (Jul 2026)</li>
346</ul>
347
348
349<hr />
350
351<h2>Bluesky team</h2>
352
353<h4>jaygraber.medium.com (Jay Graber, CEO)</h4>
354
355<ul>
356<li><a href="https://jaygraber.medium.com/web3-is-self-certifying-9dad77fd8d81">Web3 is Self-Certifying</a> (Dec 2021)</li>
357</ul>
358
359
360<h4>pfrazee.com (Paul Frazee, CTO)</h4>
361
362<ul>
363<li><a href="https://www.pfrazee.com/blog/why-facets">Why RichText facets in Bluesky</a> (Jan 2024)</li>
364<li><a href="https://www.pfrazee.com/blog/why-not-rdf">Why not RDF in the AT Protocol?</a> (Jan 2024)</li>
365<li><a href="https://www.pfrazee.com/blog/why-not-p2p">Why isn&rsquo;t Bluesky a peer-to-peer network?</a> (Jan 2024)</li>
366<li><a href="https://www.pfrazee.com/blog/lexicon-guidance">Guidance on Authoring Lexicons</a> (Mar 2025)</li>
367<li><a href="https://www.pfrazee.com/blog/atmospheric-computing">Atmospheric Computing</a> (Dec 2025)</li>
368<li><a href="https://www.pfrazee.com/blog/practical-decentralization">Practical Decentralization</a> (Feb 2026)</li>
369</ul>
370
371
372<h4>
372pfrazee.leaflet.pub (Paul Frazee, CTO)</h4>
373
374<ul>
375<li><a href="https://pfrazee.leaflet.pub/3lyucxaykg22w">We probably need to rename the AppView</a> (Sep 2025)</li>
376<li><a href="https://pfrazee.leaflet.pub/3lz4sgu7iec2k">Update on Protocol Moderation</a> (Sep 2025)</li>
377<li><a href="https://pfrazee.leaflet.pub/3lzhmtognls2q">Private data: developing a rubric for success</a> (Sep 2025)</li>
378<li><a href="https://pfrazee.leaflet.pub/3lzhui2zbxk2b">Three schemes for shared-private storage</a> (Sep 2025)</li>
379<li><a href="https://pfrazee.leaflet.pub/3m3dogbx2es2g">Social platforms are not neutral</a> (Oct 2025)</li>
380<li><a href="https://pfrazee.leaflet.pub/3m5hwua4sh22v">The politics of purely client-side apps</a> (Nov 2025)</li>
381</ul>
382
383
384<h4>bnewbold.net (Bryan Newbold)</h4>
385
386<ul>
387<li><a href="https://bnewbold.net/2024/atproto_progress/">Progress on atproto Values and Value Proposition</a> (Aug 2024)</li>
388</ul>
389
390
391<h4>whtwnd.com/bnewbold.net (Bryan Newbold)</h4>
392
393<ul>
394<li><a href="https://whtwnd.com/bnewbold.net/3kwzl7tye6u2y">Notes on Running a Full-Network atproto Relay</a> (Jul 2024)</li>
395<li><a href="https://whtwnd.com/bnewbold.net/3l5ii332pf32u">Migrating PDS Account with &lsquo;goat&rsquo;</a> (Oct 2024)</li>
396<li><a href="https://whtwnd.com/bnewbold.net/3lbvbtqrg5t2t">Reply on Bluesky and Decentralization</a> (Nov 2024)</li>
397<li><a href="https://whtwnd.com/bnewbold.net/3lj7jmt2ct72r">Registering Identity Recovery Keys via PDS, using goat</a> (Feb 2025)</li>
398<li><a href="https://whtwnd.com/bnewbold.net/3lo7a2a4qxg2l">A Full-Network Relay for $34 a Month</a> (May 2025)</li>
399<li><a href="https://whtwnd.com/bnewbold.net/3m2j6ccx2bs2t">AT Moderation Architecture</a> (Oct 2025)</li>
400<li><a href="https://whtwnd.com/bnewbold.net/3mdc7fpbxhk26">Creating a did:web atproto account using goat</a> (Jan 2026)</li>
401</ul>
402
403
404<h4>bnewbold.leaflet.pub (Bryan Newbold)</h4>
405
406<ul>
407<li><a href="https://bnewbold.leaflet.pub/3m2x7bilyrc23">AT Namespaces for Community Spaces</a> (Oct 2025)</li>
408<li><a href="https://bnewbold.leaflet.pub/3m5jsx7qrws2n">Record Versioning</a> (Nov 2025)</li>
409<li><a href="https://bnewbold.leaflet.pub/3m7e3hk57rs2u">Big Indexing</a> (Dec 2025)</li>
410<li><a href="https://bnewbold.leaflet.pub/3me3ea64bhk26">Community Spaces on AT Protocol</a> (Feb 2026)</li>
411<li><a href="https://bnewbold.leaflet.pub/3mg25i5na5c2a">Blob AT-URIs</a> (Mar 2026)</li>
412<li><a href="https://bnewbold.leaflet.pub/3mimokt4o5c2f">Expanding the Lexicon Language</a> (Apr 2026)</li>
413<li><a href="https://bnewbold.leaflet.pub/3mishgmvjes2i">Lexicon Service Docs</a> (Apr 2026)</li>
414</ul>
415
416
417<h4>dholms.leaflet.pub (Daniel Holms)</h4>
418
419<ul>
420<li><a href="https://dholms.leaflet.pub/3m6zswymcqk2p">PLC Threat-modeling &amp; Auditability</a> (Dec 2025)</li>
421<li><a href="https://dholms.leaflet.pub/3meluqcwky22a">Permissioned Data Diary 1: To Encrypt or Not to Encrypt</a> (Feb 2026)</li>
422<li><a href="https://dholms.leaflet.pub/3mfrsbcn2gk2a">Permissioned Data Diary 2: Buckets</a> (Feb 2026)</li>
423<li><a href="https://dholms.leaflet.pub/3mguviy6iks2a">Permissioned Data Diary 3: Your Bucket, My Data</a> (Mar 2026)</li>
424<li><a href="https://dholms.leaflet.pub/3mhbuoc64xk2a">Permissioned Data Interlude: Spaces</a> (Mar 2026)</li>
425<li><a href="https://dholms.leaflet.pub/3mhj6bcqats2o">Permissioned Data Diary 4: The Big Picture</a> (Mar 2026)</li>
426<li><a href="https://dholms.leaflet.pub/3mlegohgtps2k">Permissioned Data Diary 5: What’s in a Name?</a> (May 2026)</li>
427<li><a href="https://dholms.leaflet.pub/3mndhk7ihsc2g">Modeling communities on permissioned data</a> (Jun 2026)</li>
428<li><a href="https://dholms.leaflet.pub/3mnkrxp7rt22i">Permissioned Data Diary 6: Boring Auth</a> (Jun 2026)</li>
429<li><a href="https://dholms.leaflet.pub/3mqtqvjidqs2p">Permissioned Data Diary 7: Off the Record</a> (Jul 2026)</li>
430</ul>
431
432
433<h4>divyzone.pckt.blog (Devin Ivy)</h4>
434
435<ul>
436<li><a href="https://divyzone.pckt.blog/atmospheric-login-diary-1-on-the-button-ysue174">Atmospheric Login Diary 1: On the Button</a> (Jun 2026)</li>
437</ul>
438
439
440<h4>jimray-bsky.leaflet.pub (Jim Ray)</h4>
441
442<ul>
443<li><a href="https://jimray-bsky.leaflet.pub/3maenxn7kqc2a">The Importance of Backfillability</a> (Dec 2025)</li>
444</ul>
445
446
447<h4>mozzius.dev (Samuel)</h4>
448
449<ul>
450<li><a href="https://mozzius.dev/post/3l777nhz4h32w">React Native, and &ldquo;the native feel&rdquo;</a> (Oct 2024)</li>
451<li><a href="https://mozzius.dev/post/3ljlqmchv2b2a">ATProto by example part 1: Records and Views</a> (Mar 2025)</li>
452</ul>
453
454
455<h4>jazco.dev (Jaz, ex-Bluesky)</h4>
456
457<ul>
458<li><a href="https://jazco.dev/2023/09/28/request-coalescing/">Solving Thundering Herds with Request Coalescing in Go</a> (Sep 2023)</li>
459<li><a href="https://jazco.dev/2024/01/10/golang-and-epoll/">Scaling Go to 192 Cores with Heavy I/O</a> (Jan 2024)</li>
460<li><a href="https://jazco.dev/2024/04/15/in-memory-graphs/">Your Data Fits in Memory (GraphD Part 1)</a> (Apr 2024)</li>
461<li><a href="https://jazco.dev/2024/04/20/roaring-bitmaps/">An entire Social Network in 1.6GB (GraphD Part 2)</a> (Apr 2024)</li>
462<li><a href="https://jazco.dev/2024/07/05/hls/">How HLS Works</a> (Jul 2024)</li>
463<li><a href="https://jazco.dev/2024/09/24/jetstream/">Jetstream: Shrinking the AT Proto Firehose by >99%</a> (Sep 2024)</li>
464<li><a href="https://jazco.dev/2025/02/19/imperfection/">When Imperfect Systems are Good, Actually: Bluesky&rsquo;s Lossy Timelines</a> (Feb 2025)</li>
465<li><a href="https://jazco.dev/2025/09/26/interning/">Turning Billions of Strings into Integers Every Second Without Collisions</a> (Sep 2025)</li>
466</ul>
467
468
469<h4>hailey.at (Hailey, ex-Bluesky)</h4>
470
471<ul>
472<li><a href="https://hailey.at/posts/3mcy5b5gfi222">Topics on Bluesky</a>
472 (Jan 2026)</li>
473</ul>
474
475
476<h4>emilyliu.me (Emily Liu, ex-Bluesky)</h4>
477
478<ul>
479<li><a href="https://emilyliu.me/blog/comments">Using Bluesky posts as blog comments</a> (Nov 2024)</li>
480</ul>
481
482
483<hr />
484
485<h2>ATProto community</h2>
486
487<h4>whtwnd.com/futur.blue (Futur)</h4>
488
489<ul>
490<li><a href="https://whtwnd.com/futur.blue/3lkubavdilf2m">atproto relay any% speedrun</a> (Mar 2025)</li>
491<li><a href="https://whtwnd.com/futur.blue/3ls7sbvpsqc2w">in and out, quick appview adventure</a> (Jun 2025)</li>
492</ul>
493
494
495<h4>overreacted.io (Dan Abramov, ex-Bluesky)</h4>
496
497<ul>
498<li><a href="https://overreacted.io/open-social/">Open Social</a> (Sep 2025)</li>
499<li><a href="https://overreacted.io/where-its-at/">Where It&rsquo;s at://</a> (Oct 2025)</li>
500<li><a href="https://overreacted.io/a-social-filesystem/">A Social Filesystem</a> (Jan 2026)</li>
501<li><a href="https://overreacted.io/there-are-no-instances-in-atproto/">There Are No Instances in atproto</a> (Jun 2026)</li>
502</ul>
503
504
505<h4>underreacted.leaflet.pub (Dan Abramov, ex-Bluesky)</h4>
506
507<ul>
508<li><a href="https://underreacted.leaflet.pub/3m23gqakbqs2j">we can just do things</a> (Oct 2025)</li>
509</ul>
510
511
512<h4>bsky.bad-example.com (Phil)</h4>
513
514<ul>
515<li><a href="https://bsky.bad-example.com/consuming-the-firehose-correctly/">consuming the jetstream firehose correctly</a> (Feb 2025)</li>
516<li><a href="https://bsky.bad-example.com/can-atproto-scale-down/">Can atproto scale down?</a> (Feb 2025)</li>
517</ul>
518
519
520<h4>mackuba.eu 🙃</h4>
521
522<ul>
523<li><a href="https://mackuba.eu/2024/02/21/bluesky-guide/">A complete guide to Bluesky</a> (Feb 2024)</li>
524<li><a href="https://mackuba.eu/2025/08/20/introduction-to-atproto/">Introduction to AT Protocol</a> (Aug 2025)</li>
525<li><a href="https://mackuba.eu/2026/02/04/pds-undockered/">Running Bluesky PDS undockered</a> (Feb 2026)</li>
526<li><a href="https://mackuba.eu/2026/07/20/atproto-in-practice-identity/">ATProto in Practice #1: Identity</a> (Jul 2026)</li>
527</ul>
528
529
530<h4>shreyanjain.net (Shreyan)</h4>
531
532<ul>
533<li><a href="https://shreyanjain.net/2024/07/05/nostr-and-atproto.html">Nostr and ATProto</a> (Jul 2024)</li>
534</ul>
535
536
537<h4>jcsalterego.leaflet.pub (Jerry Chen)</h4>
538
539<ul>
540<li><a href="https://jcsalterego.leaflet.pub/3m3x2oftqbs2v">We live in a space station</a> (Oct 2025)</li>
541</ul>
542
543
544<h4>da.vidbuchanan.co.uk (David Buchanan, @retr0.id)</h4>
545
546<ul>
547<li><a href="https://www.da.vidbuchanan.co.uk/blog/hacking-bluesky.html">Hijacking Bluesky Identities with a Malleable Deputy</a> (Sep 2023)</li>
548<li><a href="https://www.da.vidbuchanan.co.uk/blog/adversarial-pds-migration.html">Adversarial ATProto PDS Migration</a> (Jul 2025)</li>
549</ul>
550
551
552<h4>marvins-guide.leaflet.pub (Bailey Townsend)</h4>
553
554<ul>
555<li><a href="https://marvins-guide.leaflet.pub/3m5fjxkcans2i">Host a PDS via a Cloudflare Tunnel</a> (Jul 2025)</li>
556<li><a href="https://marvins-guide.leaflet.pub/3m5fknwepe22y">A blob in the bucket</a> (Aug 2025)</li>
557<li><a href="https://marvins-guide.leaflet.pub/3lyqxqbbqkc2p">What the hell is the atmosphere anyway</a> (Sep 2025)</li>
558<li><a href="https://marvins-guide.leaflet.pub/3m4qzoj6ubc2h">What the hell is a rotation key? </a> (Nov 2025)</li>
559</ul>
560
561
562<h4>updates.microcosm.blue (@bad-example.com)</h4>
563
564<ul>
565<li><a href="https://updates.microcosm.blue/3mik73ajygk2m">Atmosphere sync: Tap, Hydrant, roll-your-own?</a> (Apr 2026)</li>
566</ul>
567
568
569<h4>dame.is (Dame)</h4>
570
571<ul>
572<li><a href="https://dame.is/writing/blogs/how-i-made-an-automated-dynamic-avatar-for-my-bluesky-profile/">How I&nbsp;made an automated dynamic avatar for my Bluesky profile</a> (Feb 2025)</li>
573<li><a href="https://dame.is/writing/blogs/creating-a-decentralized-bathroom-at-protocol/">Creating a decentralized bathroom (powered by the AT Protocol)</a> (Mar 2025)</li>
574<li><a href="https://dame.is/writing/blogs/a-guestbook-and-welcome-message-for-my-pds/">A guestbook and welcome message for my atproto PDS</a> (May 2025)</li>
575</ul>
576
577
578<h4>steveklabnik.com (Steve Klabnik)</h4>
579
580<ul>
581<li><a href="https://steveklabnik.com/writing/how-does-bluesky-work/">How Does BlueSky Work?</a> (Feb 2024)</li>
582</ul>
583
584
585<h4>knotbin.leaflet.pub (Roscoe Rubin-Rottenberg)</h4>
586
587<ul>
588<li><a href="https://knotbin.leaflet.pub/3lx3uqveyj22f">Wherever you get your Podcasts</a> (Aug 2025)</li>
589</ul>
590
591
592<h4>blog.smokesignal.events</h4>
593
594<ul>
595<li><a href="https://blog.smokesignal.events/posts/3lwopvsmtx22a-creating-a-did-method-web-identity-for-atprotocol">Creating a did-method-web Identity for ATProtocol</a> (Aug 2025)</li>
596</ul>
597
598
599<h4>graysky.app</h4>
600
601<ul>
602<li><a href="https://graysky.app/blog/2024-02-05-adding-blog-comments">Adding comments to this blog</a> (Feb 2024)</li>
603</ul>
604
605
606<hr />
607
608<h2>Other recommended blogs</h2>
609
610<ul>
611<li><a href="https://connectedplaces.online">Connected Places newsletter</a> (Laurens Hof)</li>
612<li><a href="https://connectedplaces.leaflet.pub">Connected Places Leaflet</a> (Laurens Hof)</li>
613<li><a href="https://blog.stream.place">How Streamplace Works</a> (Eli Mallon)</li>
614<li><a href="https://blog.tangled.org">Tangled engineering</a> (@tangled.org)</li>
615<li><a href="https://ngerakines.leaflet.pub">Nick&rsquo;s Blog</a> (Nick Gerakines)</li>
616<li><a href="https://retrobailey.leaflet.pub">Bailey&rsquo;s Weekly Retrospective</a> (Bailey Townsend)</li>
617<li><a href="https://dame.leaflet.pub">dame&rsquo;s leaflets</a> (Dame)</li>
618<li><a href="https://icy.leaflet.pub">icy takes</a> (Anirudh Oppiliappan)</li>
619<li><a href="https://juliet.leaflet.pub">Juliet&rsquo;s rambles</a> (Juliet)</li>
620<li><a href="https://samuel.leaflet.pub">mildly at-musing</a> (Samuel)</li>
621<li><a href="https://smokesignal.leaflet.pub">The Smoke Signal blog</a> (@smokesignal.events)</li>
622<li><a href="https://matthieu.leaflet.pub">Matthieu&rsquo;s Leaflet</a> (Matthieu Sieben)</li>
623<li><a href="https://augment.leaflet.pub">augment</a> (Anuj Ahooja)</li>
624<li><a href="https://blog.anew.social">A New Social</a> (Bridgy Fed)</li>
625<li><a href="https://lab.mackuba.eu">Kuba&rsquo;s Lab Notes</a> 😉</li>
626</ul>
627
628
629<script type="text/javascript">
630  document.getElementById('blog_post_search').addEventListener('input', (e) => {
631    let query = e.target.value.trim().toLowerCase();
632    let entries = Array.from(document.querySelectorAll('article ul li'));
633    let details = Array.from(document.querySelectorAll('article details'));
634    let headers = Array.from(document.querySelectorAll('article h4'));
635
636    function ulHasVisibleEntries(h) {
637      return Array.from(h.nextElementSibling.querySelectorAll('li')).some(x => x.style.display === '');
638    }
639
640    if (query.length > 0) {
641      entries.forEach(li => { li.style.display = (li.innerText.toLowerCase().includes(query) ? '' : 'none') });
642      headers.forEach(h => { h.style.display = (ulHasVisibleEntries(h) ? '' : 'none') })
643      details.forEach(d => { d.open = true });
644    } else {
645      entries.forEach(li => { li.style.display = '' });
646      headers.forEach(h => { h.style.display = '' })
647      details.forEach(d => { d.open = false });
648    }
649  });
650</script>
650
651
652
653  </div>
654
655    <section id="comments">
656      <div class="comments-group">
657    <h2></h2>
658
659
660    <p class="comment-here">💬 You can add a comment here by replying to the post on <a href="https://bsky.app/profile/did:plc:oio4hkxaop4ao4wz2pp3f4cr/post/3m5wgr3eu422m">Bluesky</a> or <a href="https://martianbase.net/statuses/115572285477653239">Mastodon</a>.</p>
661
662</div>
663
664    </section>
665
666    <template id="comment-template">
667      <article class="social-comment">
668  <div class="comment-main">
669    <div class="avatar">
670      <img data-field="avatar" alt="">
671    </div>
672
673    <header>
674      <p class="name">
675        <span data-field="author" class="author-name"></span>
676        <a data-field="handle" class="handle" rel="nofollow noopener noreferrer"></a>
677      </p>
678
679      <p class="date">
680        <a data-field="timestamp" rel="nofollow noopener noreferrer">
681          <time data-field="created-at"></time>
682        </a>
683      </p>
684    </header>
685
686    <div class="comment-body" data-field="body"></div>
687  </div>
688
689  <div class="comment-replies" data-field="replies"></div>
690</article>
691
692    </template>
693</article>
694
695    </div>
696
697    <footer>
698      <p>
699        <a href="/sitemap">Sitemap</a> •
700        <a href="/feeds">Feeds</a>
701      </p>
702      <p>Copyright &copy; 2008–2026 Kuba Suder</p>
703    </footer>
704  </div>
705
706  
706<script type="text/javascript" nonce="PLctgT91rRH/QYjJyP4OAg==">
707    document.addEventListener('DOMContentLoaded', () => {
708      Blog.init();
709      window.Comments?.init();
710    });
711  </script>
711
712
713    
713<script src="https://mackuba.eu/m/script.js"></script>
713
714</body>
715</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.