ATProto London
I made. a musical visualiser of the bsky feed https://fi.reho.se based on bsky.network - I smoothed the frquency transitions, made the Falling Down in CSS
I had to work to make the emoji's green rather than coloured
I made a space filling animationhttp://oyin.bo/maviy-graph to show the firehose
I have a canvas which has an inlaid window on the page showing my profile
you can see my friend circles and my recent plays - you can explore otehr people's profiles too - I have a schema in the lexicon to represent this layout. - it's kinda hypercardy
each of the separate pieces in my view can be pulled out and rendered individually - underneath it has Stack, Link, Post elements that use at URLs to render atproto data
because the Skircle component is flexible I can drag a person url into it and it shows them, making it browsable; and profile renderes can be written by other people too
so I can switch between a bluesky-ish profile to an instagram-ish profile
I am using atproto to map the content types to the package that renders that content, with multiple possible viewers for a given type
Post, PostFeed aren't endpoints; they're lexicons so they are the source to render which is seperate from the packages, so we can compose UI components from differen sources easily
this shows what is great about the lexicon as it is structure and data and permisssions all bundled up
This thing is called Inlay and will be at that when I make it more public
I'm Alex, I'm devrel at bluesky - I'm newer than a lot of you, and I want to give an overview
we have a new docs site that I am building out for bsky and cove the atmosphere as well as the bsky docs with nice structures
Bluesky is big world social, and has a modle of the social network that people recognise - atproto is the most important thign we make rather than bsky
bsky is one appview, one set of lexicons and one collection of PDS's but there is more to ti thna thet
we are trying to make it easier to undestand AT reads and writes, and which are bsky specific and which re generic
PDS's are how we store user date in atproto - you have. PDS inside SQLite. You can migrate your data to your own PDS, or to a different PDs host- which is smaller than ActivityPub
the thing people's want to self-host is the PDS - we have arepository of multiple ways to deploy the PDS or even relay we'll link to it too
we don't have a web admin interface for PDS hosters yet - we have a new commandline tool called goat go AT goat CLI tool [goatse li tool oh boy]
Firehose is how you get data from the network - I worked for a twitter firehose API company in 2012 I had to write Hadoop queries to get data out. We just have a website you cna get the data from
you might get rate liimited if you hit us really hard; it' a relay flow. You can host your own relay, and some people do, but they have the same API.
you may not want to hit the full firehose - we also have jetstream if you want. a simpler view
websocat will pull the firehose to the commandline
Backfilling means syncing the history of the firehose, or part of it. It's not fun to write this code, but we have done it. All of Bsky lexicons is 25 TB, so have some storage ready
if you just want some users or to filter the data on the way in you can have less storage.
we have a new tool called tap that will backfill some data and then cutover to the firehose and give you each entry you want exactly once
Custom feeds are a list of bsky posts that match some criteria or algorithm. tap makes doing this a lot easier as you can just get the bits of the feed you want to filter
I rewrote the basic feed generator with tap and it went down to 200 lines of code from a huge repo managing fetching
graze.social is a site that enables the building of custom feeds
the atmosphere conference is going to be in vancouver in march and will have a media day before the web one.
what if you want to use this billion-edge social network without doign your own backfill? this is where microcosm comes in - they have an index of record backlinks that you can explore to see things
PDSls https://pdsls.dev visualises everything in your PDS - any atmosphere app that has written any kind of record
Lexicon is schema system that provide interoperability by definiing data models, endpoints and permission sets all in one
The data you are posting is exactly the same format in your PDS, as Dan said earlier
if you npm-install -g @atproto/lex you can lex install app.bsky.feed.post etc and get the lexicons you need in typescript. Go isn't there yet, but we're working on it
goat has more tools for publishing new lexicons
we now have a Lexicon Style Guide to help you write lexicons
we'r hoping to improve the Claude experience with this new docs site
lexicon garden is a 3rd party browser for lexicons
leaflet is a blogging platform built on atproto that's worth a look
anisota.net is a gamified bsky client that reads the bsky lexicon and adds it's own metadata to track the interactions
Social Graphs - we only maintin Go and typescript, but ther ea re go, python and rust ones too
you can easliy get the social graph with the getfollows call to get the users' social grpah
i just wanted to include https://bridgy.fed which connects bluesky and mastodon and indieweb
bridgy is a way for apps to work on both atproto and mastodon at once and we sites doing that
the non-bsky PDS postng is a bit more than 1% - mostly via bridgy
why build on ATProto? no need to architect data models, SDK codegen for all lexicons; existing social graph
is there a way to gradually move away from X etc into bsky ?
there are some 3rd party chrome extensions that will let you find followers etc - Twitter is making this harder by making the API more expensive
if you're designing a new app shoudl you make it more app shaped or more interoperable?
always remeber that you cna pick and mix - you shouldn't reinvent followers for example, but you cna mke your own lexicons - you don't need to force interop with another
thank you for doing tap which was somethign that was very painful for us
how much interop depends on IETF?
the ietf is now adopting at (as in at: urls) as a standard that can transcend us
join the at mailing list at IETF to take part
active users is ~3M posting weekly of ~40M users
how do publish a lexicon, and can I update or change one?
lexicon garden is the best place to look until our docs ship https://lexicon.garden/
if you have to ship a breaking change make a new lexicon
one thing I wish we talked about more is how we do our own infra. It's been a lot more economical for us to use our own racks rather than running on other people's clouds
could bsky help with mirroring slef-hosted PDS's ?
that's a way to make an open source company fall over and die with support requests
there are going to be other PDS offerings, and we expect people to build that out. One example would be a PDS for atmosphere app allowing their users to have a clearer login
the bsky PDS implementation means each user has a separate SQLite instance so it scales horizontally very easily
everything scales well apart from the firehose
if you're relying on the jetsteam firehose now it will saturate a cheap VPS now, so that will get worse. But the For You feed is run by one guy on his gaming desktop
Should we be encouraging civil society orgs to host parallel relay eg Wikimedia, Archive.org, British Library, the BBC?
yes, that would be great