Eric

@edavis.dev

running the reference PDS with @atproto/pds pointing to the permissioned-data branch... spaces spotted 👀

screenshot of `.tables` output from a store.sqlite including tables prefixed "space"

[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

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 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.

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