···11+<!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>The Bluesky ecosystem has the juice (ATProto for normies) — natespilman.com</title><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,400;0,700;1,400&family=Inter:wght@300;400;500&display=swap" rel="stylesheet"><style>:root{--lavender: #b8a9c9;--soft-blue: #89a4c7;--warm-peach: #e8c4a0;--sage: #a8b89c;--rose: #d4a0a0;--cream: #faf5ef;--warm-white: #fdfbf7;--text: #3d3535;--text-light: #6b5e5e;--text-muted: #9a8c8c;--stroke: rgba(61, 53, 53, .08)}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Inter,sans-serif;font-weight:300;color:var(--text);background:var(--warm-white);line-height:1.7;min-height:100vh}body:before{content:"";position:fixed;inset:0;background:radial-gradient(ellipse at 20% 50%,rgba(184,169,201,.15) 0%,transparent 50%),radial-gradient(ellipse at 80% 20%,rgba(137,164,199,.12) 0%,transparent 50%),radial-gradient(ellipse at 60% 80%,rgba(232,196,160,.1) 0%,transparent 50%),radial-gradient(ellipse at 10% 90%,rgba(168,184,156,.08) 0%,transparent 40%);pointer-events:none;z-index:0}a{color:var(--soft-blue);text-decoration:none}a:hover{border-color:var(--soft-blue)}.page{position:relative;z-index:1}.banner{width:100%;height:280px;position:relative;overflow:hidden}.banner img{width:100%;height:100%;object-fit:cover;filter:saturate(.8) contrast(.9) brightness(1.05)}.banner:after{content:"";position:absolute;inset:0;background:linear-gradient(to bottom,transparent 40%,rgba(253,251,247,.3) 70%,var(--warm-white) 100%)}.section-content{max-width:720px;margin:0 auto;padding:0 24px}.card{padding:20px;border:1px solid var(--stroke);border-radius:12px;margin-bottom:12px;animation:fadeIn .4s ease;transition:box-shadow .3s,transform .2s}.card:hover{box-shadow:0 4px 16px #3d35350f;transform:translateY(-1px)}.card-title{font-family:Playfair Display,serif;font-size:1.1rem;color:var(--text);margin-bottom:4px}.card-meta{font-size:.78rem;color:var(--text-muted);margin-bottom:8px}.card-desc{font-size:.85rem;color:var(--text-light);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.tag{display:inline-block;font-size:.7rem;color:var(--soft-blue);background:#89a4c71a;padding:2px 8px;border-radius:10px;margin-right:4px;margin-bottom:4px}.loading{text-align:center;padding:40px 0;color:var(--text-muted);font-size:.9rem}.loading-dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--lavender);margin:0 3px;animation:pulse 1.4s infinite ease-in-out}.loading-dot:nth-child(2){animation-delay:.2s}.loading-dot:nth-child(3){animation-delay:.4s}.empty-state{text-align:center;padding:60px 20px;color:var(--text-muted);font-style:italic}.error-state{text-align:center;padding:40px 20px;color:var(--rose)}.load-more{display:block;margin:24px auto;padding:10px 32px;border:1px solid var(--stroke);border-radius:24px;background:transparent;font-family:Inter,sans-serif;font-size:.85rem;color:var(--text-muted);cursor:pointer;transition:all .3s}.load-more:hover{border-color:var(--lavender);color:var(--text);box-shadow:0 2px 8px #b8a9c926}.load-more:disabled{opacity:.4;cursor:default}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,80%,to{transform:scale(.6);opacity:.4}40%{transform:scale(1);opacity:1}}.lightbox{position:fixed;inset:0;background:#000000d9;z-index:1000;display:none;align-items:center;justify-content:center;cursor:pointer}.lightbox.open{display:flex}.lightbox img{max-width:90vw;max-height:90vh;object-fit:contain;border-radius:4px}@media(max-width:600px){.banner{height:180px}}
22+.article-content[data-astro-cid-zzqtqdyh]{font-size:.95rem;line-height:1.8}.article-content[data-astro-cid-zzqtqdyh] p{margin-bottom:1em}.article-content[data-astro-cid-zzqtqdyh] h2{font-family:Playfair Display,serif;font-size:1.4rem;margin:1.5em 0 .5em;color:var(--text)}.article-content[data-astro-cid-zzqtqdyh] h3{font-family:Playfair Display,serif;font-size:1.15rem;margin:1.2em 0 .4em;color:var(--text)}.article-content[data-astro-cid-zzqtqdyh] pre{background:#1e1e2e;color:#cdd6f4;padding:16px;border-radius:8px;overflow-x:auto;margin:1em 0;font-size:.82rem;line-height:1.5}.article-content[data-astro-cid-zzqtqdyh] code{font-family:SF Mono,Fira Code,monospace;font-size:.85em}.article-content[data-astro-cid-zzqtqdyh] p code{background:#89a4c71f;padding:2px 5px;border-radius:3px;color:var(--text)}.article-content[data-astro-cid-zzqtqdyh] ul{margin:.5em 0 1em 1.5em}.article-content[data-astro-cid-zzqtqdyh] li{margin-bottom:.3em}.article-content[data-astro-cid-zzqtqdyh] a{color:var(--soft-blue);border-bottom:1px solid rgba(137,164,199,.3)}.image-placeholder[data-astro-cid-zzqtqdyh]{color:var(--text-muted);font-style:italic}.article-page[data-astro-cid-zgcwdgoy]{max-width:680px;margin:0 auto;padding:48px 24px 80px}.back-link[data-astro-cid-zgcwdgoy]{display:inline-block;font-size:.85rem;color:var(--soft-blue);text-decoration:none;margin-bottom:32px;border-bottom:1px solid transparent;transition:border-color .2s}.back-link[data-astro-cid-zgcwdgoy]:hover{border-bottom-color:var(--soft-blue)}.article-title[data-astro-cid-zgcwdgoy]{font-family:Playfair Display,serif;font-size:2.2rem;font-weight:700;letter-spacing:-.02em;color:var(--text);margin-bottom:12px;line-height:1.2}.article-meta[data-astro-cid-zgcwdgoy]{font-size:.85rem;color:var(--text-muted);margin-bottom:16px}.pub-name[data-astro-cid-zgcwdgoy]{color:var(--soft-blue)}.article-tags[data-astro-cid-zgcwdgoy]{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:20px}.article-desc[data-astro-cid-zgcwdgoy]{font-size:1.05rem;color:var(--text-light);margin-bottom:32px;line-height:1.6;border-left:3px solid var(--lavender);padding-left:16px}.external-link[data-astro-cid-zgcwdgoy]{display:inline-block;margin-top:40px;padding:12px 24px;font-size:.9rem;color:var(--soft-blue);border:1px solid var(--soft-blue);border-radius:24px;text-decoration:none;transition:all .25s}.external-link[data-astro-cid-zgcwdgoy]:hover{background:var(--soft-blue);color:#fff}@media(max-width:600px){.article-page[data-astro-cid-zgcwdgoy]{padding:32px 16px 60px}.article-title[data-astro-cid-zgcwdgoy]{font-size:1.7rem}}
33+</style></head> <body> <div class="page"> <article class="article-page" data-astro-cid-zgcwdgoy> <a class="back-link" href="/" data-astro-cid-zgcwdgoy>← Back</a> <h1 class="article-title" data-astro-cid-zgcwdgoy>The Bluesky ecosystem has the juice (ATProto for normies)</h1> <div class="article-meta" data-astro-cid-zgcwdgoy> <time data-astro-cid-zgcwdgoy>March 13, 2026</time> <span class="pub-name" data-astro-cid-zgcwdgoy> · Nate Spilman</span> </div> <p class="article-desc" data-astro-cid-zgcwdgoy>An explanation for people who don't care about software protocols Bluesky is built on top of a new software protocol - https://atproto.com/ - for building distributed networks. If you're coming to Bluesky from X with zero care about the underlying tech, that's chill. Right now, your experience is basically the same. Under the hood, Bluesky is hosting your account information and everything. Just like X would. So, so far, same same. But here's where it starts getting cool.</p> <div class="article-content" data-astro-cid-zzqtqdyh> <p><em>An explanation for people who don't care about software protocols</em></p><p>Bluesky is built on top of a new software protocol - <a href="https://atproto.com/" target="_blank" rel="noopener">https://atproto.com/</a> - for building distributed networks. If you're coming to Bluesky from X with zero care about the underlying tech, that's chill. Right now, your experience is basically the same. Under the hood, Bluesky is hosting your account information and everything. Just like X would.</p><p>So, so far, same same. But here's where it starts getting cool.</p><p>You see a photo sharing app that's competing with Instagram. You take a look, and look - you can log directly into it using your Bluesky account. No new password. No new account creation. Then you find a blogging site. Your blog is already reserved at your Bluesky handle. When you want to add an image to your first post, your photo sharing app uploads show up as options. A podcast app, a Goodreads alternative, a neighborhood forum - each one recognizes you instantly. And none of these are made by Bluesky.</p><p>Think of it like email. You can have a Gmail account and send a message to someone on Outlook. Nobody owns "email." The AT Protocol is trying to do that for social media. <strong>Your identity is yours, and every app knows it.</strong></p><p>It's already happening. AT Proto stuff that I actually use. And to be clear - these are all built by separate individuals of groups of people. It's the protocol that links it all together. </p><ul></ul><p>All of these apps recognize your single Bluesky identity. No new accounts. No new passwords. Your data moves with you.</p><p>If you want to try it, <a href="https://bsky.app/" target="_blank" rel="noopener">join Bluesky</a> - it's free and open. And if you want to nerd out about the protocol stuff, hit me up.</p> </div> <a class="external-link" href="https://pioneer.pckt.blog/the-bluesky-ecosystem-has-the-juice-atproto-for-normies-1w4f8wv" target="_blank" rel="noopener" data-astro-cid-zgcwdgoy>
44+Read on Nate Spilman →
55+</a> </article> </div> <div class="lightbox" id="lightbox" onclick="this.classList.remove('open')"> <img id="lightboxImg" src="" alt=""> </div> <script>
66+ document.addEventListener('keydown', (e) => {
77+ if (e.key === 'Escape') document.getElementById('lightbox')?.classList.remove('open');
88+ });
99+ function openLightbox(src) {
1010+ document.getElementById('lightboxImg').src = src;
1111+ document.getElementById('lightbox').classList.add('open');
1212+ }
1313+ </script> </body> </html>
···11+<!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>This is lovely — natespilman.com</title><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,400;0,700;1,400&family=Inter:wght@300;400;500&display=swap" rel="stylesheet"><style>:root{--lavender: #b8a9c9;--soft-blue: #89a4c7;--warm-peach: #e8c4a0;--sage: #a8b89c;--rose: #d4a0a0;--cream: #faf5ef;--warm-white: #fdfbf7;--text: #3d3535;--text-light: #6b5e5e;--text-muted: #9a8c8c;--stroke: rgba(61, 53, 53, .08)}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Inter,sans-serif;font-weight:300;color:var(--text);background:var(--warm-white);line-height:1.7;min-height:100vh}body:before{content:"";position:fixed;inset:0;background:radial-gradient(ellipse at 20% 50%,rgba(184,169,201,.15) 0%,transparent 50%),radial-gradient(ellipse at 80% 20%,rgba(137,164,199,.12) 0%,transparent 50%),radial-gradient(ellipse at 60% 80%,rgba(232,196,160,.1) 0%,transparent 50%),radial-gradient(ellipse at 10% 90%,rgba(168,184,156,.08) 0%,transparent 40%);pointer-events:none;z-index:0}a{color:var(--soft-blue);text-decoration:none}a:hover{border-color:var(--soft-blue)}.page{position:relative;z-index:1}.banner{width:100%;height:280px;position:relative;overflow:hidden}.banner img{width:100%;height:100%;object-fit:cover;filter:saturate(.8) contrast(.9) brightness(1.05)}.banner:after{content:"";position:absolute;inset:0;background:linear-gradient(to bottom,transparent 40%,rgba(253,251,247,.3) 70%,var(--warm-white) 100%)}.section-content{max-width:720px;margin:0 auto;padding:0 24px}.card{padding:20px;border:1px solid var(--stroke);border-radius:12px;margin-bottom:12px;animation:fadeIn .4s ease;transition:box-shadow .3s,transform .2s}.card:hover{box-shadow:0 4px 16px #3d35350f;transform:translateY(-1px)}.card-title{font-family:Playfair Display,serif;font-size:1.1rem;color:var(--text);margin-bottom:4px}.card-meta{font-size:.78rem;color:var(--text-muted);margin-bottom:8px}.card-desc{font-size:.85rem;color:var(--text-light);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.tag{display:inline-block;font-size:.7rem;color:var(--soft-blue);background:#89a4c71a;padding:2px 8px;border-radius:10px;margin-right:4px;margin-bottom:4px}.loading{text-align:center;padding:40px 0;color:var(--text-muted);font-size:.9rem}.loading-dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--lavender);margin:0 3px;animation:pulse 1.4s infinite ease-in-out}.loading-dot:nth-child(2){animation-delay:.2s}.loading-dot:nth-child(3){animation-delay:.4s}.empty-state{text-align:center;padding:60px 20px;color:var(--text-muted);font-style:italic}.error-state{text-align:center;padding:40px 20px;color:var(--rose)}.load-more{display:block;margin:24px auto;padding:10px 32px;border:1px solid var(--stroke);border-radius:24px;background:transparent;font-family:Inter,sans-serif;font-size:.85rem;color:var(--text-muted);cursor:pointer;transition:all .3s}.load-more:hover{border-color:var(--lavender);color:var(--text);box-shadow:0 2px 8px #b8a9c926}.load-more:disabled{opacity:.4;cursor:default}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,80%,to{transform:scale(.6);opacity:.4}40%{transform:scale(1);opacity:1}}.lightbox{position:fixed;inset:0;background:#000000d9;z-index:1000;display:none;align-items:center;justify-content:center;cursor:pointer}.lightbox.open{display:flex}.lightbox img{max-width:90vw;max-height:90vh;object-fit:contain;border-radius:4px}@media(max-width:600px){.banner{height:180px}}
22+.article-content[data-astro-cid-zzqtqdyh]{font-size:.95rem;line-height:1.8}.article-content[data-astro-cid-zzqtqdyh] p{margin-bottom:1em}.article-content[data-astro-cid-zzqtqdyh] h2{font-family:Playfair Display,serif;font-size:1.4rem;margin:1.5em 0 .5em;color:var(--text)}.article-content[data-astro-cid-zzqtqdyh] h3{font-family:Playfair Display,serif;font-size:1.15rem;margin:1.2em 0 .4em;color:var(--text)}.article-content[data-astro-cid-zzqtqdyh] pre{background:#1e1e2e;color:#cdd6f4;padding:16px;border-radius:8px;overflow-x:auto;margin:1em 0;font-size:.82rem;line-height:1.5}.article-content[data-astro-cid-zzqtqdyh] code{font-family:SF Mono,Fira Code,monospace;font-size:.85em}.article-content[data-astro-cid-zzqtqdyh] p code{background:#89a4c71f;padding:2px 5px;border-radius:3px;color:var(--text)}.article-content[data-astro-cid-zzqtqdyh] ul{margin:.5em 0 1em 1.5em}.article-content[data-astro-cid-zzqtqdyh] li{margin-bottom:.3em}.article-content[data-astro-cid-zzqtqdyh] a{color:var(--soft-blue);border-bottom:1px solid rgba(137,164,199,.3)}.image-placeholder[data-astro-cid-zzqtqdyh]{color:var(--text-muted);font-style:italic}.article-page[data-astro-cid-zgcwdgoy]{max-width:680px;margin:0 auto;padding:48px 24px 80px}.back-link[data-astro-cid-zgcwdgoy]{display:inline-block;font-size:.85rem;color:var(--soft-blue);text-decoration:none;margin-bottom:32px;border-bottom:1px solid transparent;transition:border-color .2s}.back-link[data-astro-cid-zgcwdgoy]:hover{border-bottom-color:var(--soft-blue)}.article-title[data-astro-cid-zgcwdgoy]{font-family:Playfair Display,serif;font-size:2.2rem;font-weight:700;letter-spacing:-.02em;color:var(--text);margin-bottom:12px;line-height:1.2}.article-meta[data-astro-cid-zgcwdgoy]{font-size:.85rem;color:var(--text-muted);margin-bottom:16px}.pub-name[data-astro-cid-zgcwdgoy]{color:var(--soft-blue)}.article-tags[data-astro-cid-zgcwdgoy]{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:20px}.article-desc[data-astro-cid-zgcwdgoy]{font-size:1.05rem;color:var(--text-light);margin-bottom:32px;line-height:1.6;border-left:3px solid var(--lavender);padding-left:16px}.external-link[data-astro-cid-zgcwdgoy]{display:inline-block;margin-top:40px;padding:12px 24px;font-size:.9rem;color:var(--soft-blue);border:1px solid var(--soft-blue);border-radius:24px;text-decoration:none;transition:all .25s}.external-link[data-astro-cid-zgcwdgoy]:hover{background:var(--soft-blue);color:#fff}@media(max-width:600px){.article-page[data-astro-cid-zgcwdgoy]{padding:32px 16px 60px}.article-title[data-astro-cid-zgcwdgoy]{font-size:1.7rem}}
33+</style></head> <body> <div class="page"> <article class="article-page" data-astro-cid-zgcwdgoy> <a class="back-link" href="/" data-astro-cid-zgcwdgoy>← Back</a> <h1 class="article-title" data-astro-cid-zgcwdgoy>This is lovely</h1> <div class="article-meta" data-astro-cid-zgcwdgoy> <time data-astro-cid-zgcwdgoy>March 13, 2026</time> <span class="pub-name" data-astro-cid-zgcwdgoy> · Nate Spilman</span> </div> <div class="article-tags" data-astro-cid-zgcwdgoy> <span class="tag" data-astro-cid-zgcwdgoy>first-post</span> </div> <p class="article-desc" data-astro-cid-zgcwdgoy>This is my first post on pckt.blog. My first impressions are positive. Things look nice. Everything seems to be put in an obvious place. Like, i click a dropdown and see my options and think "Right - that makes sense to be there." Here's an image. It's only here to demonstrate image add. It IS missing alt text adding, though, which feels like an oddly large accessibility miss.</p> <div class="article-content" data-astro-cid-zzqtqdyh> <p>This is my first post on pckt.blog. My first impressions are positive. Things look nice. Everything seems to be put in an obvious place. Like, i click a dropdown and see my options and think "Right - that makes sense to be there." </p><p>Here's an image. It's only here to demonstrate image add. </p><p>It IS missing alt text adding, though, which feels like an oddly large accessibility miss. </p><p><strong>This is bold.</strong></p><h2>Nice. I can use markdown syntax to make section headers and etc.</h2><p>Nice to see the out of the box support for markdown. I intentionally set a different thumbnail from the image I added above. I can't see the thumbnail I uploaded anywhere though, so that also feels like a missing nice to have. </p><h2>update - customization</h2><p>They also give you full freedom to make a bunch of bad design decisions while something keeping it looking good. </p> </div> <a class="external-link" href="https://pioneer.pckt.blog/this-is-lovely-h9wvt4e" target="_blank" rel="noopener" data-astro-cid-zgcwdgoy>
44+Read on Nate Spilman →
55+</a> </article> </div> <div class="lightbox" id="lightbox" onclick="this.classList.remove('open')"> <img id="lightboxImg" src="" alt=""> </div> <script>
66+ document.addEventListener('keydown', (e) => {
77+ if (e.key === 'Escape') document.getElementById('lightbox')?.classList.remove('open');
88+ });
99+ function openLightbox(src) {
1010+ document.getElementById('lightboxImg').src = src;
1111+ document.getElementById('lightbox').classList.add('open');
1212+ }
1313+ </script> </body> </html>