running the reference PDS with @atproto/pds pointing to the permissioned-data branch... spaces spotted 👀
[reading the jacobian conjecture counter-example but not realizing I'm holding it upside down] this is amazing
I'm starting a new blog post series, with some more practical tutorials about ATProto things, using Ruby and my Ruby gems :] Episode 1 - resolving handles & DIDs and plc.directory:
ATProto in Practice #1: Identity
I’m starting a new blog post series that I’ve named “ATProto in Practice”. I want to go through some practical tasks that you’re likely to need when working with the protocol, using Ruby and my Ruby gems for the examples. These will (hopefully) be a bit shorter than my standard book-length blog posts here 🫠 If you’re new to the AT Protocol and you haven’t read my long Introduction to AT Protocol post that goes through the whole architecture and defines the various pieces of it, I recommend you read that one first, because I won’t be explaining everything from scratch again here. Let’s start with something pretty fundamental: user identity. DIDs & handles Every account has an immutable identifier called a DID (Decentralized Identifier), e.g. did:plc:z72i7hdynmk6r22z27h6tvur. This ID serves a similar role as an UUID might in an SQL database – it’s used everywhere behind the scenes in the protocol for any references between accounts and records, in URIs and so on. But generally every account also has a human-readable handle assigned to it, which can be changed at any time, and this handle is normally what you see in the UI, often in user-facing URLs, what you use to log in with, etc. The handle is a domain name, e.g. @python.org, and any existing domain name you own and use for your website can be used as your handle. As you start building on ATProto, one of the first things you might need to do is convert between these two identifiers. For example, a user logs in to your app using a handle and you need to first “resolve” it to a DID, or a URI or other reference in a record points to a DID, but you want to show the corresponding user’s handle in the UI, and the handle is not included in the data you got. A useful UI tool for quickly looking this up is internect.info. If you look up e.g. “firefox.com” there, you will get a page showing details of Firefox’s ATProto account: the DID (did:plc:m424cqoxwhxgjutbta7jmrur), when it was created, assigned PDS hostname, and so on. Now, how to do the same thing in code? Every DID has a so called DID Document, a JSON file storing some basic info about that identity, and among other things, that document includes the alsoKnownAs field, which lists the assigned handles, in the form of at:// URIs with only the first segment. Almost every account will have exactly one handle assigned, but it might happen that one will have zero or more than one. It might also happen that the array will contain some invalid strings which aren’t proper handles – e.g. don’t include the at:// prefix, or only contain one word and no periods. You need to filter only the valid ones. The assignment is bi-directional – a DID has one (usually) handle assigned in its document, and a handle resolves to a DID. You should ideally check the assignment in both directions, because it could happen that the other sign of the assignment is no longer valid, or worse – has never been real. That is, when you resolve a handle to a DID, check if th…
mackuba.eu
you can build a PDS docker image against whatever branch you want, there's no law against that
does the permissioned data proposal exist in any non-reference PDS implementation yet?
@recordcollector.edavis.dev crashed at some point and hasn't been adding labels recently, sorry about that back up and running now
Billy, this is the Bluesky user base. They're natural posters. They are some of the sharpest voices on the internet. Their only defect is they can't stop making figurative death threats.
My six year old is obsessed with tornadoes. He watches old news footage and this is the art he makes that we put on our fridge.
as foretold by prophecy
Putting the WordPress block editor on the AT Protocol
What if your ATProto content was a WordPress block tree? I built a long-form editor where the standard.site "content" field is just Gutenberg blocks, no PHP anywhere. I'm playing with ATProto, even though I'm still not fully sold on it as a web old-timer. 🙂
herve.bzh
tired: wordpress blog as PDS wired: wordpress blog as appview #atdev
my favorite DNS root servers, ranked: H.ROOT-SERVERS.NET. G.ROOT-SERVERS.NET. C.ROOT-SERVERS.NET. D.ROOT-SERVERS.NET. A.ROOT-SERVERS.NET. F.ROOT-SERVERS.NET. K.ROOT-SERVERS.NET. B.ROOT-SERVERS.NET. L.ROOT-SERVERS.NET. E.ROOT-SERVERS.NET. J.ROOT-SERVERS.NET. M.ROOT-SERVERS.NET. I.ROOT-SERVERS.NET.
introducing Popular.site, a feed of the most popular @standard.site documents across the network
“Not simply to be open, but to make openness feel inevitable.” Last Year, I Wrote About Podcasts. This Year, I Went In Search of Them. A blog post based on my talk from AtmosphereConf.
In Search of Podcasts
"Wherever you get your podcasts" represents the interoperable utopia of the podcast world. How do we bring that magic to the atmosphere?
knotbin.leaflet.pub
Sort Your Friends 🧠 74/100 Good friend 🙂 🟩🟨🟩🟩🟩 how well do you know your mutuals? 👀 👉 sort.cee.wtf
Sort Your Friends
How well do you know your Bluesky mutuals? Drag to sort them by the numbers.
sort.cee.wtf
this better be for a planet other than Earth
▓▓▓▓▓▓▓▓░░░░░░░░░░░░ 40.55%
warning: a rat who has been following you detected in a costco that goes on forever. it is built different. do not approach. do not make eye contact. jerry, NO
my server that runs a lot of my atproto projects (bskycharts, recordcollector, feeds, probably more I'm forgetting) is down right now with a bad disk doing what I can but it may be awhile before everything is back up
@nonbinary.computer it's always a pleasure seeing you pop up on my timeline because it gives me a reason to think about Raised by Wolves again
me, after coming up with a revolutionary idea and then immediately forgetting it for ever