Eric's Avatar

Eric

@esb.lol

Chicago • Bluesky team

20,860
Followers
1,092
Following
2,729
Posts
02.05.2023
Joined
Posts Following

Latest posts by Eric @esb.lol

shoutout to @thepope.dev for this update — we've been wanting to simplify this for a long time

custom feeds are part of what make Bluesky unique. lots more we can improve here, and we will!

05.03.2026 21:32 👍 83 🔁 11 💬 6 📌 4

making progress on pds.js tangled.org/chadtmiller...., there's something to be said about starting with the simplest possible implementation and working your way up from there. the core logic, at least, is zero dep, with a hexagonal architecture that allows different functionality via ports/adapters

14.01.2026 22:32 👍 27 🔁 2 💬 1 📌 1

we infrequent posters need to stay strong

05.03.2026 20:43 👍 1 🔁 0 💬 0 📌 0

welcome @doctorow.pluralistic.net!

on your own PDS host (bsky.pluralistic.net), using did:web (did:web:pluralistic.net), and self-controlled domain handle.

looks like things are working/interoperating; let us (the atmosphere ecosystem) know if you run in to any issues

05.03.2026 19:55 👍 144 🔁 20 💬 5 📌 1

made a quick pit stop in Dependency Hell today, was not a fan

05.03.2026 20:41 👍 42 🔁 3 💬 2 📌 0

tapping the sign

05.03.2026 18:10 👍 54 🔁 4 💬 1 📌 0

Hey devs! Heads up, we're planning on making some changes to our image CDN tomorrow.

- Images will be served as WebP by default
- The URL format you get from the Bluesky API will change a little

You can look forward to an announcement about image quality soon 👀

04.03.2026 18:32 👍 291 🔁 42 💬 28 📌 27

this is huge! it's a big lift just to do the backfill indexing, but even more to get it operational and chase down all the little product affordances.

blacksky ships.

02.03.2026 19:53 👍 207 🔁 33 💬 0 📌 1

Personal news update: I'm delighted to announce that as of today, I am an actual Bluesky employee! I'll be working to welcome indie media and local govt to Bsky—and supporting those already here.

I'll always want to hear your thoughts on how we can make Bsky the sort of social media we all want!

02.03.2026 22:10 👍 6839 🔁 584 💬 550 📌 84
Preview
announcing our €3,8M seed round and more on what's next

today, we're announcing our €3,8M ($4.5M) seed financing round, led by byFounders with participation from Bain Capital Crypto, Antler, Thomas Dohmke (former CEO of GitHub), Avery Pennarun (CEO of Tailscale) among other incredible angels.

read more on what's next: blog.tangled.org/seed

02.03.2026 09:51 👍 801 🔁 147 💬 53 📌 68
Screenshot from the linked page showing SDKs written in Python, Rust, Dart, and Swift

Screenshot from the linked page showing SDKs written in Python, Rust, Dart, and Swift

Screenshot from the linked page showing SDKs written in C# (.NET), Ruby, Zig, Elixir, and PHP

Screenshot from the linked page showing SDKs written in C# (.NET), Ruby, Zig, Elixir, and PHP

Look at all these community SDKs! (Nice work @alex.bsky.team compiling these)

atproto.com/sdks

27.02.2026 19:51 👍 74 🔁 9 💬 8 📌 1
Preview
Permissioned Data Diary 2: Buckets The second in a series of posts building up a solution to permissioned data on atproto. We introduce buckets: a new protocol primitive for creating a shared social context.

new blog post on permissioned data in atproto! this one introduces "buckets", the protocol-level primitive for shared access control. I walk through two approaches that don't quite work and land on something that I think does

let me know your thoughts!

26.02.2026 18:12 👍 284 🔁 58 💬 19 📌 22
Post image

I worked really hard for this meme

25.02.2026 10:49 👍 130 🔁 13 💬 3 📌 0
Preview
Tests Are The New Moat | Daniel Saewitz As AI becomes better at cloning people's open source work, what ends up becoming most valuable are software contracts, tests, and API surface area. This clashes the incentives of clearly defining your...

New post! Tests Are The New Moat

saewitz.com/tests-are-th...

24.02.2026 22:34 👍 63 🔁 8 💬 5 📌 3
// ============================================================================
// inlay render — specification tests
// ============================================================================
//
// inlay is a UI component system on the AT Protocol.
//
// Elements reference components by NSID — <com.example.PostCard uri="...">
// is an element whose type is the NSID com.example.PostCard. An NSID is
// just a name; it says nothing about where the implementation lives.
//
// A pack (at.inlay.pack) maps NSIDs to concrete implementations. Each
// entry points an NSID at a component record URI (at://did/at.inlay.component/rkey),
// so the same NSID can resolve to different implementations depending on context.
//
// A component record (at.inlay.component) defines what happens when the
// element is rendered. It has one of three body kinds:
//
//   - no body         → a primitive; the host knows how to render this
//   - bodyTemplate    → a stored element tree with Binding placeholders
//   - bodyExternal    → an XRPC endpoint that returns an element tree
//
// Resolution algorithm:
//
//   1. Start with an element like <com.example.PostCard uri="at://...">.
//   2. Scan imported packs for a component that implements com.example.PostCard.
//   3. Resolve the component record and switch based on body kind:
//      a. no body       → done, it's a primitive.
//      b. bodyTemplate  → substitute Binding placeholders with the
//         element's props (and optionally a fetched record when the
//         component declares that it's a "view" for some records).
//      c. bodyExternal  → call the XRPC service, passing props.
//         Children can be passed too, but they're opaque to the callee.
//   4. Recurse into the expanded tree until everything resolves to
//      primitives. This can be done to completion or (better) streamingly.

// ============================================================================ // inlay render — specification tests // ============================================================================ // // inlay is a UI component system on the AT Protocol. // // Elements reference components by NSID — <com.example.PostCard uri="..."> // is an element whose type is the NSID com.example.PostCard. An NSID is // just a name; it says nothing about where the implementation lives. // // A pack (at.inlay.pack) maps NSIDs to concrete implementations. Each // entry points an NSID at a component record URI (at://did/at.inlay.component/rkey), // so the same NSID can resolve to different implementations depending on context. // // A component record (at.inlay.component) defines what happens when the // element is rendered. It has one of three body kinds: // // - no body → a primitive; the host knows how to render this // - bodyTemplate → a stored element tree with Binding placeholders // - bodyExternal → an XRPC endpoint that returns an element tree // // Resolution algorithm: // // 1. Start with an element like <com.example.PostCard uri="at://...">. // 2. Scan imported packs for a component that implements com.example.PostCard. // 3. Resolve the component record and switch based on body kind: // a. no body → done, it's a primitive. // b. bodyTemplate → substitute Binding placeholders with the // element's props (and optionally a fetched record when the // component declares that it's a "view" for some records). // c. bodyExternal → call the XRPC service, passing props. // Children can be passed too, but they're opaque to the callee. // 4. Recurse into the expanded tree until everything resolves to // primitives. This can be done to completion or (better) streamingly.

first pieces of @inlay.at are now open source at tangled.org/danabra.mov/...

🔮 Inlay "browser" prototype (hono+htmx): inlay-proto.up.railway.app

📝 Inlay ProfilePage component from the above demo: pdsls.dev/at://did:plc...

📜 Tests describing the Inlay rendering model: tangled.org/danabra.mov/...

25.02.2026 05:30 👍 118 🔁 20 💬 8 📌 3
Preview
Go Feed Generator Template by jcalabro · Pull Request #154 · bluesky-social/feed-generator Does pretty much the same thing as the typescript code in this repo, except for Go Example: $ cd go $ cp .env.example .env $ go run . time=2026-02-24T10:18:44.431-05:00 level=INFO msg=&quot;runni...

Attention Gophers! There is now a feedgen starter repo in Go! Very minimal and tiny

Go build something cool!

github.com/bluesky-soci...

24.02.2026 20:56 👍 47 🔁 11 💬 3 📌 0

Built on top of @vite.dev 8 and @rolldown.rs.
RSC support via Vite's RSC plugin.
Linting via Oxlint.

24.02.2026 22:38 👍 41 🔁 3 💬 1 📌 0

Thanks man!

25.02.2026 00:23 👍 0 🔁 0 💬 0 📌 0

it’s been 20 years since we last skied together

24.02.2026 22:55 👍 9 🔁 0 💬 2 📌 0
Person on skis on a ski slope, framed by pine trees, mountains in background. Snowy weather leaves a haze in the sky. Persons arms are outstretched like Rocky

Person on skis on a ski slope, framed by pine trees, mountains in background. Snowy weather leaves a haze in the sky. Persons arms are outstretched like Rocky

saw a photo opp and took it — pic of my brother

24.02.2026 22:55 👍 87 🔁 2 💬 3 📌 0

correct

24.02.2026 19:05 👍 1 🔁 0 💬 0 📌 0

Yeah I was def real tense for the first run or so until I got my sea legs back. It’s been almost 10 years for me

24.02.2026 00:18 👍 3 🔁 0 💬 0 📌 0

I need to get away from my desk more often, my knees need some work lol

24.02.2026 00:07 👍 3 🔁 0 💬 1 📌 0

see how @iwsmith.bsky.social's improving the Discover feed

23.02.2026 23:20 👍 40 🔁 4 💬 0 📌 0
Pic of me on top of a mountain, about to (poorly) ski down

Pic of me on top of a mountain, about to (poorly) ski down

semi-off grid for a few days ✌️

23.02.2026 22:37 👍 87 🔁 2 💬 7 📌 0
Video thumbnail

let’s make a profile page

18.02.2026 23:41 👍 54 🔁 5 💬 1 📌 3

seriously can't wait to meet everyone IRL, this'll be one for the books

20.02.2026 00:09 👍 42 🔁 3 💬 0 📌 0
Preview
PLC Read Replicas - AT Protocol Introducing a self-hostable did:plc read-replica service

We've released a self-hostable reference implementation of a PLC read-replica service to make the Atmosphere ever more decentralized. @retr0.id has details on what this all means.

atproto.com/blog/plc-rep...

18.02.2026 18:28 👍 358 🔁 81 💬 10 📌 13

AT Protocol is complicated beast. There are a lot of complicated moving parts that depend on each other in direct and indirect ways. Huge props to everyone who contributed to atproto.com. This is good.

17.02.2026 17:02 👍 46 🔁 8 💬 2 📌 0

New website! Shout out to the @internetstudio.bsky.social for the solid design and coding work

Hannah (design) Elijah (globe code) and all the others

17.02.2026 16:39 👍 224 🔁 32 💬 10 📌 0