Someone asked how it works, so here's the writeup π
As mentioned, if you want to help us get tools like these in fandom's hands, you should support @fujocoded.bsky.social on Patreon www.patreon.com/c/fujocoded
Full post: www.tumblr.com/essential-ra...
10.10.2025 05:03 β π 23 π 10 π¬ 0 π 0
"Only bluesky friends (or followers, or mutuals) can access pages on my personal blog" has been achieved internally
(in the example here: github.com/FujoWebDev/f...)
10.10.2025 03:48 β π 33 π 6 π¬ 0 π 1
EssentialRandomness - Twitch
A (staff) Software Engineer with a passion for fandom, introducing more people to the magic of web development and Astro. Both beginners and advanced viewers welcome!
Today we're extending the Authproto library to allow folks to create pages that are only shared with their Bluesky friends (or whoever else they wish!).
Come on in:
www.twitch.tv/essentialran...
stream.place/essentialran...
09.10.2025 23:12 β π 6 π 3 π¬ 0 π 0
a screenshot of a user's slice on slices.network. there is a dropdown that has two items: one item says "fan.fics.work (4)", and the other says "fan.fics.work.chapter (2)". the page itself displays "fan.fics.work" records that were successfully posted through slices.
I'VE CONQUERED SLICES !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
09.10.2025 21:52 β π 14 π 2 π¬ 0 π 0
const guestbookTitleSchema = z.string().min(1).max(1000).meta({
maxGraphemes: 500,
});
lexicon({
id: "com.fujocoded.guestbook.book",
defs: {
main: record(
"record-key",
z.object({
title: guestbookTitleSchema,
})
),
},
});
const submissionTextSchema = z.string().min(1).max(3000).meta({
maxGraphemes: 1500,
});
lexicon({
id: "com.fujocoded.guestbook.submission",
defs: {
main: record(
"tid",
z.object({
text: submissionTextSchema.optional(),
createdAt: z.string().datetime(),
postedTo: z.string().meta({ type: "at-uri" }),
})
),
},
const submissionView = def(
z.object({
atUri: z.string().meta({ type: "at-uri" }),
author: z.string().meta({ type: "did" }),
createdAt: z.string().datetime(),
text: submissionTextSchema.optional(),
hidden: z.boolean().optional(),
})
);
lexicon({
id: "com.fujocoded.guestbook.getGuestbook",
defs: {
main: query({
params: z.object({
guestbookAtUri: z.string().meta({type: "at-uri"}),
showHidden: z.boolean().optional(),
}),
output: {
encoding: "application/json",
schema: z.object({
title: guestbookTitleSchema,
submissions: z.array(submissionView).default([]),
}),
},
}),
},
});
Since everyone has been posting their own takes on different ways to define lexicons in code (and generate JSON from), here's mine based on Zod.
Just a quick thought dump for a discussion we were having. Should be fairly easy to implement and make typesafe too. It's all things Zod supports now.
09.10.2025 21:52 β π 8 π 1 π¬ 0 π 0
an interesting note re: scaling image moderation. in the past 24 hours:
at least 500 thousand images in posts (not considering # of images, just if an image was in the post)
86 thousand avatars
500 thousand url thumbnails
58 thousand videos.
that's a lot to moderate!
08.10.2025 03:26 β π 309 π 46 π¬ 8 π 16
build tooling for an SDK for an infra piece that may or may not continue being worth it in the long term, or end up relying on tools that won't integrate with other tools in the future.
09.10.2025 04:51 β π 0 π 0 π¬ 0 π 0
I haven't gotten to try it yet (I will soon, I swear, especially if it is all open source), but that's also what made me hesitant about Auth being tied to IAP(?) OAuth rather than the ATproto version. There's no telling how the ecosystem and tools will evolve in the future, and I wouldn't want to
09.10.2025 04:51 β π 0 π 0 π¬ 1 π 0
There's also a question of whether I'd need to do modifications. At this point, it's hard to know what I'll need in the future. I wouldn't want to want to end up with divergent needs or timelines, and have to "eject" then. I'd want to know I could run it myself first, so I understand it enough.
09.10.2025 04:47 β π 0 π 0 π¬ 1 π 0
For a community project that something I build relies on, I would need to prove to myself that I could switch to a self-hosted version if I ever needed...so I'd start with running one. If I get that confidence and it's a pain to self-host, I might then decide to switch to a hosted version.
09.10.2025 04:47 β π 1 π 0 π¬ 1 π 0
I was trying to find the code for the backend (rather than SDK) yesterday and couldn't at a quick glance, so that's definitely good to know. But regardless it's a bit more of a broad point: I trust Bluesky to be around longer because of its shape, but not anything by any of us.
09.10.2025 04:47 β π 0 π 0 π¬ 1 π 0
This is exactly it, plus I don't want to be unable to extend it, contribute to it, or even just see what's happening in the code. Especially for this ecosystem, at this stage, I really don't want to be bound to anything that isn't easily replaceable.
09.10.2025 04:03 β π 2 π 0 π¬ 1 π 0
Why? Because people only report their enemies, and they report a lot of things that aren't actionable in the hopes of getting their enemies in trouble. The standard industry assumption is that between 90-95% of user reports are reports of non-actionable content.
07.10.2025 19:16 β π 270 π 28 π¬ 2 π 0
People once again need to internalize that "generative AI" is a small subset of machine learning, that machine learning is a critical tool that you cannot run a site without past a certain volume Bluesky has long since exceeded, and that it is FAR more reliable than user reporting.
07.10.2025 19:16 β π 579 π 126 π¬ 2 π 10
Also, you can't be simultaneously upset that the ML classifier gets things wrong and be upset at the thought of training on user data, because the two are mutually exclusive. The only way to get more accurate ML models is to retrain with real-world examples.
07.10.2025 19:16 β π 311 π 21 π¬ 3 π 3
This is going around again and it is not true. Like every site on the internet, Bluesky uses machine learning to do a first-pass approximation of image classification to detect and label content. They have repeatedly confirmed outside services do not use Bluesky user data to train their models.
07.10.2025 19:16 β π 983 π 310 π¬ 8 π 42
it's not like people aren't here trying to fix some of those problems by making moderation easier to do at scale in a decentralized ecosystem
07.10.2025 19:50 β π 4 π 0 π¬ 1 π 0
Friends, we a cow to cute-ify
bsky.app/profile/bail...
07.10.2025 01:56 β π 11 π 4 π¬ 1 π 0
a man is laying on a bed with the words life moves pretty fast on the bottom
Alt: a man is laying on a bed with the words life moves pretty fast on the bottom
well we were in @essentialrandom.bsky.social stream.place stream chatting about it and pretty sure that post is your community call now....
07.10.2025 01:54 β π 4 π 1 π¬ 1 π 0
And finally, nothing stops a client application from going directly to a user's PDS to get data from them if needed.
There's obviously challenges, but it's far from impossible.
07.10.2025 01:51 β π 2 π 0 π¬ 0 π 0
According to where the ban is:
- If the Bsky relay stops serving a records from a PDS, another relay service could replay the Bluesky relay exactly, but add more records in
- If an AppView stops serving records from a user, you could build an AppView that leverages Bsky's and puts those record in
07.10.2025 01:51 β π 3 π 0 π¬ 1 π 0
06.10.2025 23:56 β π 4981 π 1615 π¬ 31 π 18
What's this I hear about OpenID but actually good?
07.10.2025 01:39 β π 1 π 0 π¬ 1 π 0
Yes! Totally feasible, and at multiple levels according to where the moderation was applied. It doesn't even have to be an alternative "full-stack" solution. Any single part of the protocol stack can do some version of this.
07.10.2025 01:38 β π 2 π 0 π¬ 1 π 0
lmao no worries! Graze Social PBC officially releases the name Moolissa for any cow based brand to use, this is an official statement
07.10.2025 01:00 β π 6 π 2 π¬ 0 π 0
"Are we going to talk about the drama?" (chants) I'm a strong woman who cannot be baited into commenting on discourse... I'm a strong woman who cannot be baited into commenting on discourse... I'm a strong woman who cannot be baited into commenting on discourse...
06.10.2025 23:08 β π 9 π 0 π¬ 0 π 0
EssentialRandomness - Twitch
A (staff) Software Engineer with a passion for fandom, introducing more people to the magic of web development and Astro. Both beginners and advanced viewers welcome!
Today, we're cleansing the ~bad vibes~ by helping folks with some of the ATproto work they're doing, from writing articles about how it all works for fans (bluedreaming.dreamwidth.org/75226.html) to fanfiction Lexicons π
www.twitch.tv/essentialran...
stream.place/essentialran...
06.10.2025 23:08 β π 12 π 5 π¬ 1 π 0
people are disconnected from how tech works... they're disconnected from how capital works.... they're disconnected from how community works.... it be rough out there, man
06.10.2025 22:51 β π 81 π 13 π¬ 1 π 0
a web dev
tylur.dev
πla
Creator of the 3rd party Bluesky iOS / iPadOS / macOS app "Skeets for Bluesky" @skeetsapp.com
Twitter/Threads/Mastodon: @seboslaw
I'm on Germ DM π
https://ger.mx/A6I-vUhA1CVOq_3Pk0H1AO0welSp_i-si5R93_WNOoc-#did:plc:ituoear7k6qx3smjfoxhufm4
iOS developer, making indie apps like @kilowattcharging.com @flexiblemovement.com @dropanchor.app, what i'm reading https://bookhive.buzz/profile/tijs.org, Based in The Hague, NL. Support my open-source work https://ko-fi.com/tijsteulings
unifiedjs Β· he/him Β· https://wooorm.com
Β· Economist @univlorraine.bsky.social, en franΓ§ais and in English
Β· I use computers, network theory, and data to study how humans behave at work, in organizations and communities #Rstats
Β· He/Him π³οΈβπ
π https://o.simardcasanova.net
π Nancy, Lorraine, France πͺπΊ
Hostinger KVM-1 VPS in Germany https://bmannconsulting.com/notes/bringyourown-computer/
This an alt. If you see stuff here no you didnβt.
Signal: borismann.58
tdd evangelist. mindfulness enthusiast. remember: one day, we'll all be dead. live accordingly.
she/her
pdx metro
i block no-post, marketing/brand, bot, and spam accounts
katexcellence.io/about
Good in a crisis and at no other time
First initial last name at gmail dot com
Signal:@KathrynTewson.06
Mid-20s, CS grad, unemployed. The world is a trashfire. π³οΈβπ
I've had this username for ages and I still don't know much of anything.
It/Its
Main fronter of a plural system
Its name is doll, it is also a doll. The system is an adult.
Interested in creating ethical and safe AI systems
Third party appview: https://github.com/dollspace-gay/PublicAppView
co-founder of @tangled.org β code collaboration platform built on AT
helsinki, finland Β· https://anirudh.fi Β· (somewhat) effective altruist
that guy from the internet β’ waging a victorious 2-front war against cars and xmas β’ big fan of being a big fan of things β’ see https://anildash.com
This is an automated account to show trending git repositories on https://tangled.org (not affiliated with tangled, but I am a big fan)
This account is not monitored please contact @baileytownsend.dev about any issues
A decentralized package registry for JavaScript and TypeScript, built on
@atproto.com
Jazz is an open-source toolkit that gives you data without needing a database β plus auth, permissions, files and multiplayer without needing a backend. jazz.tools
Working on @leaflet.pub in specific and tools for learners and education in general
Iβm gonna yell into the void about whatever is on my mind.
We support moderators on federated social media. Learn more at https://about.iftas.org
AT Protocol App network and SDKs coming soon.
slices.network
https://tangled.org/@slices.network/slices
join the discord: https://discord.gg/NqSd3eW8S8
By @chadtmiller.com
They/them. Disabled queers. Puns, opinions, memes. LVL 35+. Anti-harassment. Minors, be gone. Icon: shebalso @ flickr. Banner: Suzy Hazelwood @ pexels. https://throne.com/combatwombats
System account: thelunastusco
Fandom account, NSFW: gqueercatboy
π