pfraze 4 days ago

Appreciated Daniel reaching out to the team about this! Hosting blobs is one of those things that will inevitably go through iterations as we understand the abuse vectors more and more, but for now it's really fun to see this kind of usage in action. The PDS is meant to be a database host in the same sense that a webserver is a website host.

4
sebmellen 4 days ago

Are you ever going to bring back Beaker Browser? Used to love playing around with that! Didn't realize you'd gone on to Bluesky, very neat.

pfraze 3 days ago

Thanks! Probably won’t revive it, but it was a great experience. Wrote some notes on it here: https://github.com/beakerbrowser/beaker/blob/master/archive-...

nileshtrivedi 3 days ago

Doesn't the potential for abuse reduce when content is linked through user's own domain rather than a particular appview like bsky? Bsky already supports a user's domain ALIASed to redirect.bsky.com: https://bsky.app/profile/jacob.gold/post/3kh6rnpdzmp2v

philipwhiuk 3 days ago

If people use BlueSky as a magnet link for illegal content it will quickly become a problem.

moritonal 4 days ago

Congrats on finding a role at Bluesky. Beaker was such an amazing project to follow, that experience must be so useful.

philipwhiuk 3 days ago

You're walking headfirst into the copyright, CSAM, pornography hole of content moderation here.

thesuitonym 3 days ago

How is this any different than the regular hole of content moderation they're already in?

chefandy 3 days ago

I don’t have a well-considered answer, but a) I imagine being able to host a phishing site on an official domain from them using their SSL cert is problematic, and b) my gut says that as soon as you start hosting arbitrary files— e.g. zip files— and browser executable JavaScript with your domain in there, that’s a different level of possible content. I guess the question is whether or not the disposition of a social media network makes that more problematic than it does with, say, Google drive.

preciousoo 3 days ago

It’s not possible for me, a non Google employee to create a file that’s hosted on Google.com, or any Google domain and have it read in the browser as text/html, bypassing many a firewall, for example

edm0nd 3 days ago

Yes it is. Via sites.google.com or Google Docs.

These are abused all the time for phishing and malicious threat actors.

nutanc 3 days ago

Agreed. I assume this will open up Bluesky to a lot of potential legal problems. But will it be any different from accesing the content using the app as the content is anyway hosted.

That said, just the other day I was thinking, is the reverse possible. I have a web site/blog. Use RSS and then the RSS updates are posted to a handle on Bluesky. I would assume that's a lot more useful?

diggan 3 days ago

> That said, just the other day I was thinking, is the reverse possible. I have a web site/blog. Use RSS and then the RSS updates are posted to a handle on Bluesky. I would assume that's a lot more useful?

This is trivial, I'm currently doing this for https://bsky.app/profile/aemet-bot.bsky.social which reads a bunch of RSS feeds from AEMET (Spain's national weather service basically) and posts warnings to the feed if there is any warning above Yellow.

The code for managing this is about ~200 lines of Rust code.

skiman10 3 days ago

Do you have that code posted somewhere by chance? I would be interested in browsing through it!

diggan 3 days ago

Not right now, no. It's fairly simple (login to Bluesky, read RSS, save item IDs to a text file, post if there are any new feed items, close program then systemd timers run this every N minutes) + pretty specific to AEMET and their formats.

If there is interest I guess I could spend some hours to make it a bit more generic and publish the source.

skiman10 3 days ago

Cool yeah. I think the thing I was most interested in was interacting with Bluesky through rust. Is there a decent sdk for that?

diggan 3 days ago

The meat is this, using bsky-sdk + atrium-api from crates:

    let agent = BskyAgent::builder().build().await?;
    agent
        .login("username.bsky.social", "X")
        .await?;
    let rt = RichText::new_with_detect_facets(msg).await?;
    let record = RecordData {
        text: rt.text,
        created_at: atrium_api::types::string::Datetime::now(),
        facets: rt.facets,
    };
    agent.create_record(record).await?;
Works well enough. It's a bit on the lower end of the "abstraction ladder", there might be more user-friendly libraries for doing this even easier now.

nutanc 3 days ago

This is cool. Actually if bluesky can do this automatically where it can fetch RSS and show as handle updates it will be really useful. Will help a bunch of people who wouldn't need to maintain the services.

Or maybe there is a potential for a SaaS service?

pfraze 3 days ago

As opposed to running a social network? What else is new