···2525- [modules](./modules.md) - file + directory pattern (foo.zig + foo/)
2626- [structs](./structs.md) - copy semantics, internal storage for strings
2727- [testing](./testing.md) - zig test vs build test, arena for leaky apis
2828+- [hashmap](./hashmap.md) - StringHashMap, O(1) block index, managed vs unmanaged
2929+- [format](./format.md) - {f} required for format methods, {t} for tag names, signature change
+42
languages/ziglang/0.15/binary.md
···4343try encode(alloc, list.writer(alloc), value);
4444```
45454646+**note**: `std.io.fixedBufferStream` is deprecated in 0.15 — the stdlib says to use `std.Io.Writer.fixed` / `std.Io.Reader.fixed` instead. the old API still compiles (zat uses it in 3 files) but new code should prefer the non-deprecated form. the `anytype` writer pattern itself is fine either way — the encoder doesn't care which writer type backs it.
4747+4648see: [zat/cbor.zig](https://tangled.sh/@zzstoatzz.io/zat/tree/main/src/internal/cbor.zig)
47494850## encodeAlloc convenience
···133135this means the handler's `onEvent` must not hold references to event data past the call. if it needs to, it must copy into its own allocator.
134136135137see: [zat/firehose.zig](https://tangled.sh/@zzstoatzz.io/zat/tree/main/src/internal/firehose.zig), [zat/jetstream.zig](https://tangled.sh/@zzstoatzz.io/zat/tree/main/src/internal/jetstream.zig)
138138+139139+## specialized decoders
140140+141141+when generic decoding is too expensive, write a purpose-built parser for a known schema. the generic path builds `Value` unions, `MapEntry` arrays, and handles every CBOR type. if you know the exact shape, skip all that.
142142+143143+example: MST nodes are always `map(2) { "e": array[entries...], "l": CID|null }`. instead of `cbor.decodeAll()` → extract fields from Value unions, parse the CBOR bytes directly:
144144+145145+```zig
146146+pub fn decodeMstNode(allocator: Allocator, data: []const u8) MstDecodeError!MstNodeData {
147147+ // expect map(2), key "e", array(n) — known byte sequence
148148+ // parse entries inline, zero-copy slicing into input buffer
149149+ // only allocation: the entries array itself
150150+}
151151+152152+pub const MstNodeData = struct {
153153+ left: ?[]const u8, // raw CID bytes (borrowed from input)
154154+ entries: []MstEntryData, // heap-allocated array
155155+};
156156+157157+pub const MstEntryData = struct {
158158+ prefix_len: usize,
159159+ key_suffix: []const u8, // borrowed from input
160160+ value_cid: []const u8, // borrowed from input
161161+ tree: ?[]const u8, // borrowed from input
162162+};
163163+```
164164+165165+the result: MST walk went from 45.5ms (generic decode per node) to 39.3ms (specialized decode) on 243k blocks. the bigger win was avoiding the full tree rebuild (218ms → 39ms total) by verifying structure during the walk.
166166+167167+when to use this pattern:
168168+- you decode the same schema thousands of times (MST nodes, CBOR blocks)
169169+- the schema is stable and well-known
170170+- profiling shows decode time dominates
171171+172172+when NOT to use it:
173173+- the schema varies or is user-defined
174174+- you only decode a handful of times
175175+- generic decode is fast enough
176176+177177+see: [zat/mst.zig decodeMstNode](https://tangled.sh/@zzstoatzz.io/zat/tree/main/src/internal/repo/mst.zig)
136178137179## deterministic encoding
138180
+23
languages/ziglang/0.15/build.md
···4141```
42424343without this line, `zig build` runs successfully but produces no output. easy to miss.
4444+4545+## x86 backend (default in 0.15)
4646+4747+the self-hosted x86 backend is now the **default** for debug builds. roughly 5x faster compilation than LLVM for most code. threaded codegen adds up to 50% more on top of that.
4848+4949+if you hit codegen bugs, fall back to LLVM:
5050+5151+```bash
5252+zig build -fllvm # use LLVM backend
5353+zig build -Doptimize=ReleaseFast # release modes always use LLVM
5454+```
5555+5656+the x86 backend passes more behavior tests than LLVM (1984 vs 1977) but generates slower machine code. debug builds prioritize compilation speed; release builds prioritize runtime performance.
5757+5858+## test-obj
5959+6060+0.15 added `zig test-obj` for compiling tests to object files instead of running them. useful when linking test code into external harnesses:
6161+6262+```bash
6363+zig test-obj src/foo.zig # produces .o file
6464+```
6565+6666+in build.zig: `addTest(.{ ... }).emit_object = true;`
+23
languages/ziglang/0.15/crypto.md
···43434444see: [zat/jwt.zig](https://tangled.sh/@zzstoatzz.io/zat/tree/main/src/internal/jwt.zig)
45454646+## signing
4747+4848+```zig
4949+const Scheme = std.crypto.sign.ecdsa.EcdsaSecp256k1Sha256;
5050+5151+// secret key from raw 32 bytes
5252+const secret_key = try Scheme.SecretKey.fromBytes(key_bytes[0..32].*);
5353+5454+// sign with RFC 6979 deterministic nonce (null = no additional randomness)
5555+const sig = secret_key.sign(message, null);
5656+5757+// low-S normalization (required by AT Protocol / Bitcoin)
5858+const Curve = std.crypto.ecc.Secp256k1;
5959+const s_order = Curve.scalar.neg(sig.s, .big);
6060+// if s > half_order, replace with order - s
6161+```
6262+6363+the `null` second arg means RFC 6979 deterministic nonce — no randomness source needed, signature is reproducible from the same key+message.
6464+6565+low-S normalization ensures `s <= half_order`. some protocols (AT Protocol, Bitcoin) reject high-S signatures. check by comparing the s component against the curve half-order.
6666+6767+see: [zat/jwt.zig](https://tangled.sh/@zzstoatzz.io/zat/tree/main/src/internal/crypto/jwt.zig), [k256 tests](https://tangled.sh/@zzstoatzz.io/k256)
6868+4669## sha-256 hashing
47704871for content addressing (CIDs, integrity checks). hash data into a fixed-size digest:
···11+# format strings
22+33+0.15 changed how `std.fmt` works. the big ones: `{f}` is now required for types with format methods, and format method signatures changed.
44+55+## {f} required for format methods
66+77+in 0.14, `{}` would implicitly call a type's `format` method if it had one. in 0.15, you must use `{f}` explicitly:
88+99+```zig
1010+const MyType = struct {
1111+ value: u32,
1212+1313+ pub fn format(self: @This(), writer: *std.Io.Writer) std.Io.Writer.Error!void {
1414+ try writer.print("MyType({d})", .{self.value});
1515+ }
1616+};
1717+1818+const x = MyType{ .value = 42 };
1919+2020+// 0.14: std.debug.print("{}", .{x}); // called format implicitly
2121+// 0.15: std.debug.print("{f}", .{x}); // must use {f}
2222+// std.debug.print("{any}", .{x}); // skips format method
2323+```
2424+2525+why: prevents silent behavior changes when format methods are added or removed from types.
2626+2727+## format method signature change
2828+2929+```zig
3030+// 0.14 signature
3131+pub fn format(
3232+ self: @This(),
3333+ comptime fmt_string: []const u8,
3434+ options: std.fmt.FormatOptions,
3535+ writer: anytype,
3636+) !void
3737+3838+// 0.15 signature
3939+pub fn format(
4040+ self: @This(),
4141+ writer: *std.Io.Writer,
4242+) std.Io.Writer.Error!void
4343+```
4444+4545+no more format string or options parameters. if you need different formatting modes, use separate named methods or return a wrapper struct.
4646+4747+## new specifiers
4848+4949+| specifier | meaning | example |
5050+|-----------|---------|---------|
5151+| `{f}` | call type's format method | `std.debug.print("{f}", .{my_obj})` |
5252+| `{t}` | `@tagName()` / `@errorName()` | `std.debug.print("{t}", .{my_enum})` |
5353+| `{b64}` | base64 encoding | `std.debug.print("{b64}", .{bytes})` |
5454+5555+`{t}` is particularly useful — replaces `@tagName(enum_val)` in format strings.
5656+5757+## what still works
5858+5959+`{s}`, `{d}`, `{x}`, `{any}`, `{?}`, `{}` for basic types are unchanged. our zat code uses these exclusively and doesn't need migration.
6060+6161+sources: [0.15 release notes](https://ziglang.org/download/0.15.1/release-notes.html)
+79
languages/ziglang/0.15/hashmap.md
···11+# hashmap
22+33+zig's hash maps for key-value lookup. two flavors parallel the arraylist split: `StringHashMap` stores the allocator, `StringHashMapUnmanaged` passes it to each method.
44+55+## managed vs unmanaged
66+77+```zig
88+// managed — stores allocator, slightly more convenient
99+var map = std.StringHashMap([]const u8).init(allocator);
1010+defer map.deinit();
1111+1212+try map.put("key", "value");
1313+1414+// unmanaged — pass allocator to each method (like ArrayList)
1515+var map: std.StringHashMapUnmanaged([]const u8) = .empty;
1616+defer map.deinit(allocator);
1717+1818+try map.put(allocator, "key", "value");
1919+```
2020+2121+unmanaged is the better default for the same reasons as ArrayList — no stored allocator, statically initializable. use managed when passing as function parameter (avoids threading the allocator alongside it).
2222+2323+## O(1) block index
2424+2525+the pattern that fixed zat's 79-second MST walk: build a lookup table during CAR parse, query it during tree traversal.
2626+2727+```zig
2828+pub const Car = struct {
2929+ blocks: []const Block,
3030+ block_index: std.StringHashMapUnmanaged([]const u8) = .empty,
3131+};
3232+3333+// during parse: populate index alongside the block array
3434+var block_index: std.StringHashMapUnmanaged([]const u8) = .empty;
3535+while (pos < data.len) {
3636+ // ... parse CID and content ...
3737+ try blocks.append(allocator, .{ .cid_raw = cid_bytes, .data = content });
3838+ try block_index.put(allocator, cid_bytes, content);
3939+}
4040+4141+// during walk: O(1) lookup by CID
4242+const data = block_index.get(cid_bytes) orelse return error.BlockNotFound;
4343+```
4444+4545+the key insight: CID bytes are already unique identifiers and the block data they point to is owned by the CAR buffer (arena-allocated). no copies needed — both key and value are slices into existing memory.
4646+4747+before this: linear scan through 243k blocks, called once per MST node (~50k nodes). ~12 billion comparisons. after: hash lookup.
4848+4949+see: [zat/car.zig](https://tangled.sh/@zzstoatzz.io/zat/tree/main/src/internal/repo/car.zig)
5050+5151+## key ownership
5252+5353+from the stdlib: "key memory is managed by the caller. keys and values will not automatically be freed."
5454+5555+this means:
5656+- keys must outlive the map
5757+- if keys are heap-allocated, you free them — the map won't
5858+- for string keys pointing into a long-lived buffer (like parsed data), this is free — the buffer already owns the memory
5959+6060+## HashMap vs ArrayHashMap
6161+6262+`HashMap` (and `StringHashMap`): hash-table backed. O(1) lookup, unordered iteration.
6363+6464+`ArrayHashMap` (and `StringArrayHashMap`): array-backed with hash index. O(1) lookup, **insertion-order** iteration, slightly more memory.
6565+6666+use HashMap when you only care about lookup. use ArrayHashMap when iteration order matters (e.g., rendering parameters in a URL).
6767+6868+## generic keys with AutoHashMap
6969+7070+for non-string keys, `AutoHashMap` generates hash/eql from the key type:
7171+7272+```zig
7373+var map = std.AutoHashMap(u64, MyStruct).init(allocator);
7474+defer map.deinit();
7575+7676+try map.put(42, my_value);
7777+```
7878+7979+works for integers, enums, and types with `hash` and `eql` methods.
···11+ATProtoDevChat part IV (02/22/2026)
22+33+i am human and i err! this was rendered from memory and discord chat, pls comment/DM me if you see mistakes or misrepresentations
44+55+## Topics Covered
66+77+### Labelers: Skyware, Ozone & Osprey
88+99+@byarielm opened with "what's the difference between Skyware and Ozone?" — a question many newcomers hit when approaching the moderation stack.
1010+1111+The short answer: Skyware is a minimal labeler implementation — it issues labels and sends them all to the client (no incremental backfill). Ozone is a full multi-user moderation interface for human review. And Osprey is the newest piece: an automation and data analysis engine for pattern detection at scale.
1212+1313+@thisismissem.social explained that Osprey "receives the events from a source, e.g., the firehose, and then based on the rules you've stored (a DSL) it can then apply those to data as it comes in — it's very similar in that way to SQRL. Osprey also stores all the events in a big database, which then allows you to write new rules and investigate patterns."
1414+1515+@byarielm summarized: "Skyware is kinda the base code you need for a labeler, Ozone provides UI and some extra db/moderation stuff, and Osprey is more pattern/rule formatting for labellers?"
1616+1717+Key resources:
1818+- [Osprey for ATProto](https://github.com/haileyok/osprey-for-atproto)
1919+2020+### Signup UX & prompt=create
2121+2222+@flo.bit raised the signup UX question: should apps let users enter email and password on the app's own page (easier to understand, but worse for password managers — this is what Bluesky does), or redirect them to a PDS with `prompt=create`?
2323+2424+The problem is that `prompt=create` isn't standard and not all PDSs support it — single-user PDSs and those with registration disabled can't handle it. Updates to both the PDS and the OAuth flow itself are needed. There is reportedly energy on the Bluesky team around this.
2525+2626+@thisismissem.social shared her OAuth working group proposal, which addresses some of these authorization management concerns.
2727+2828+Key resources:
2929+- [OAuth Authorization Management URI (draft)](https://github.com/ThisIsMissEm/draft-oauth-authorization-management-uri)
3030+- [Bluesky Cookbook](https://github.com/bluesky-social/cookbook/)
3131+3232+### Device Code Grant Flow
3333+3434+Brief discussion of the device code grant flow pattern: start the flow on one device, poll for completion, and get the token back. The open question is how DPoP works with device code grant flow (still in draft), and what happens for devices without a display.
3535+3636+@same.supply shared an example implementation from the atcute project.
3737+3838+Key resources:
3939+- [atcute node-client-public-example](https://github.com/mary-ext/atcute/tree/trunk/packages/oauth/node-client-public-example)
4040+4141+### Explaining Credible Exit to Non-Technical Users
4242+4343+This thread explored the perennial challenge: how do you explain PLC, rotation keys, and credible exit to people who aren't developers?
4444+4545+@sharpie offered a framing that landed well: "PLC is a cloud thing. It stores the public part of your rotation key, allowing you to move your data home if your house burns down." The group riffed on analogies — @sorryforpartyrock.ing compared rotation keys to 2FA backup keys, @byarielm suggested "it's like lock-and-key matching but more like fingerprints that are actually unique," and @psingletary.com offered the image of BFF heart necklaces — one half yours, one half somewhere else.
4646+4747+@thisismissem.social took a pragmatic stance: "I'd just say you have a credential that you can use to manage your identity in the cloud, and when you create that credential, you register it with your identity in the cloud."
4848+4949+The challenge, as @sharpie put it: "getting people to tune in long enough to even understand what the PLC is — is very hard. I can hear people's eyes glazing over." @geesawra noted simply: "asymmetric crypto is hard."
5050+5151+Discussion also touched on whether rotation keys should be surfaced in Bluesky's settings under an "Advanced" menu. @geesawra argued for it ("otherwise I feel they'll always be reserved for nerds like me"), while @same.supply felt they should live on your PDS host's website, not in any particular app. @dane agreed it shouldn't be a separate thing from the PDS. The secure enclave approach — storing keys in device hardware — was mentioned as the ideal end state.
5252+5353+@phil shared a post on adversarial PLC directory migration, rounding out the conversation with the question of what happens if the centralized PLC directory itself becomes hostile.
5454+5555+Key resources:
5656+- [Adversarial PLC directory migration](https://updates.microcosm.blue/3lz7nwvh4zc2u)
5757+- [Sharpie's PDS migration vlog](https://bsky.app/profile/sharpiepls.com/post/3lw3hcuojck2u)
5858+5959+### Everything Account
6060+6161+Brief but fun thread: @geesawra floated the idea of putting dotfiles on your PDS — "ultimate nerd snipe." @quillmatiq.com named the vision: "everything account." @evan.jarrett.net pointed out the real draw would be if the data could be encrypted/private, and @same.supply noted that dotfiles are usually already public on git anyway. The encrypted/private data angle keeps pulling every conversation toward it.
6262+6363+### Relays & collectiondir
6464+6565+Quick pointers to relay infrastructure resources. @thisismissem.social shared the AT Stack guide. @dane linked collectiondir from the Indigo repo — a tool for browsing collections on the relay. @verdverm.com mentioned their atmunge project, which "produces a table with every account and collections — it's very easy to build that index, one request per account."
6666+6767+Key resources:
6868+- [The AT Stack (guide)](https://atproto.com/guides/the-at-stack)
6969+- [collectiondir (Indigo)](https://github.com/bluesky-social/indigo/tree/main/cmd/collectiondir)
7070+7171+### Lexicons
7272+7373+A pragmatic conversation about when you need a lexicon and when you don't. @flo.bit acknowledged that Blento "still doesn't have a lexicon" and @psingletary.com formalized the vibe: "Not Everything Needs A Lexicon." @quillmatiq.com agreed — "we can also start sans lexicon and move when we're ready, doesn't need to be a blocker."
7474+7575+That said, when you do use lexicons, the tooling needs work. @geesawra called the deprecated field support "vital." @taurean.bryant.land pointed to Lexicon Garden as the best current resource for browsing existing schemas.
7676+7777+Key resources:
7878+- [Lexicon Garden](https://lexicon.garden/)
7979+8080+### Documentation & Contributions
8181+8282+The "circle of life" problem: @evan.jarrett.net "tried to write documentation and then it got outdated like 3 commits later." This resonated broadly.
8383+8484+The aspirational model: @thoth pushed for rustdoc-style generation from source annotations — "I didn't think it was possible for docs generated from source annotations to be good (I mean, have you seen doxygen?) until I saw rustdoc." @geesawra added godoc to the list.
8585+8686+@byarielm and @chaosgreml.in (Bryan Guffey) found each other over wanting "for babies" / ELI5 docs and volunteered to collaborate. @n8 framed the need as three tiers: "examples/concepts/api-ref, I think we need all 3, some will be app level." @same.supply's pattern from JS libraries: "Getting Started/Quick Start + Important Concepts + API Type specification." @geesawra pointed to Go's docs as a model: "examples/docs/howtos plus reference in a single page."
8787+8888+On the contribution side, @thisismissem.social pointed to the atproto-website GitHub issues and @n8 noted the team "were pretty responsive on GH, got a little typo thing merged in a couple hours." @byarielm's workflow challenge: "it's hard to read and then pause to write an issue." @thisismissem.social suggested annotating docs with margin.at as a lower-friction way to leave notes while reading.
8989+9090+Key resources:
9191+- [atproto-website issues](https://github.com/bluesky-social/atproto-website/issues)
9292+9393+### Following Feeds
9494+9595+The following feed is "a stupidly complex data problem at scale" — and according to a post from @why.bsky.team, it represents roughly half of Bluesky's production workload. The basic flow: a post lands, a background task injects it into every follower's feed (a sorted set). Straightforward in concept, crushing at scale.
9696+9797+@evan.jarrett.net clarified this is specifically about "the non-algorithmic one, because you have to show every post for every follower that everyone has." Mastodon's approach: generate the following feed on demand and suspend it after inactivity. Bluesky uses ScyllaDB and does not suspend feed generation for inactive users — which contributes to the workload. The Postgres-to-Scylla migration reportedly went poorly and touched everything.
9898+9999+Large accounts may be lossy — if you follow enough people, you might not see everything. @byarielm linked Jaz's post on "imperfection" as relevant background.
100100+101101+For app developers wanting to build their own following feed without all this infrastructure, there's a cheat: take {bsky follows} minus {those without your app's *.xyz records} — essentially filtering your following list to only people who use your app.
102102+103103+Key resources:
104104+- [Why on following feed workload](https://witchsky.app/profile/did:plc:vpkhqolt662uhesyj6nxm7ys/post/3m2wsfeab322b)
105105+- [Jaz — Imperfection](https://jazco.dev/2025/02/19/imperfection/)
106106+107107+### Blocks Don't Remove Follow Records
108108+109109+An important gotcha surfaced in the following feed discussion: blocking someone on Bluesky does not delete the follow record from your repo. @geesawra noted that "the good old 'block, unblock to force unfollow' trick doesn't work around here."
110110+111111+@verdverm.com posed the deeper question: "why should block activity force some unfollow? Or generalized, why does writing a record in one repo force a write in another repo?" — highlighting a fundamental design tension in how repos interact.
112112+113113+@taurean.bryant.land offered a practical angle: using the followgraph as a follow recommendation system to build a new social graph, rather than trying to force cross-repo writes.
114114+115115+### Community Showcase
116116+117117+**arabica** — @pdewey.com demoed their coffee journaling app built on ATProto (alpha). @tynanpurdy.com couldn't help wondering if coffee tasting notes and fragrance review notes could share a lexicon.
118118+119119+**drydown** — @taurean.bryant.land shared their fragrance review app built on ATProto. @sharpie expressed interest in discussing creator use cases together.
120120+121121+**ATmosphereConf** — @psingletary.com ran a poll: 42% virtual, 33% IRL, 17% "what's that?", 8% nah. The conference is in Vancouver, March 26-29, 2026. Several attendees expressed they'd attend virtually due to not feeling comfortable leaving the US right now.
122122+123123+**atproto table at local events** — @sharpie mentioned hosting an ATProto table at their local event the following week.
124124+125125+**OG/link preview issues** — @michaelthatsit raised issues with Bluesky's handling of Open Graph previews for dynamically generated images. @sri.xyz pointed to the cardyb endpoint that Bluesky uses for link extraction. @sorryforpartyrock.ing shared gizo, their link card generator service.
126126+127127+**concord** — @alexwykoff shared that @dollspace-gay built an IRC client that uses ATProto auth.
128128+129129+Key resources:
130130+- [arabica (alpha)](https://alpha.arabica.social/)
131131+- [arabica on Tangled](https://tangled.org/did:plc:chqc2ockzmyvlrasfb66x64a/arabica)
132132+- [drydown](https://drydown.social/profile/taurean.bryant.land/house/3mcn34apccq2z)
133133+- [ATmosphereConf 2026](https://atmosphereconf.org/)
134134+- [cardyb](https://cardyb.bsky.app/v1/extract?url=https://atproto.com)
135135+- [gizo](https://github.com/espeon/gizo)
136136+- [concord](https://github.com/dollspace-gay/concord)
137137+138138+### Legal Obligations for PDS Operators
139139+140140+In the last stretch of the call, @chaosgreml.in (Bryan Guffey) brought up legal compliance for PDS operators — content licensing, record versioning, and the obligations that come with hosting user-generated content. @tynanpurdy.com asked if this would be the impetus for record versioning and content licensing support.
141141+142142+@jackvalinsky raised the question of how compliance records should be structured — whether to use site.standard or a dedicated lexicon, given the need for versioning and tombstoning. One approach discussed: using the CID of a record as the rkey when creating it, then linking back on updates, giving you a content-addressed history with a mutable pointer to the current version.
143143+144144+The motivating concern, as @jackvalinsky put it: "we need to make it simple and straightforward to be informed because we want some random student to host a project and not be scared because of regulations that they are doing it wrong."
145145+146146+## All links
147147+148148+[Osprey for ATProto](https://github.com/haileyok/osprey-for-atproto) ∙ [OAuth Authorization Management URI (draft)](https://github.com/ThisIsMissEm/draft-oauth-authorization-management-uri) ∙ [Bluesky Cookbook](https://github.com/bluesky-social/cookbook/) ∙ [atcute node-client-public-example](https://github.com/mary-ext/atcute/tree/trunk/packages/oauth/node-client-public-example) ∙ [Adversarial PLC directory migration](https://updates.microcosm.blue/3lz7nwvh4zc2u) ∙ [Sharpie's PDS migration vlog](https://bsky.app/profile/sharpiepls.com/post/3lw3hcuojck2u) ∙ [The AT Stack (guide)](https://atproto.com/guides/the-at-stack) ∙ [collectiondir (Indigo)](https://github.com/bluesky-social/indigo/tree/main/cmd/collectiondir) ∙ [Lexicon Garden](https://lexicon.garden/) ∙ [atproto-website issues](https://github.com/bluesky-social/atproto-website/issues) ∙ [Why on following feed workload](https://witchsky.app/profile/did:plc:vpkhqolt662uhesyj6nxm7ys/post/3m2wsfeab322b) ∙ [Jaz — Imperfection](https://jazco.dev/2025/02/19/imperfection/) ∙ [arabica (alpha)](https://alpha.arabica.social/) ∙ [arabica on Tangled](https://tangled.org/did:plc:chqc2ockzmyvlrasfb66x64a/arabica) ∙ [drydown](https://drydown.social/profile/taurean.bryant.land/house/3mcn34apccq2z) ∙ [ATmosphereConf 2026](https://atmosphereconf.org/) ∙ [cardyb](https://cardyb.bsky.app/v1/extract?url=https://atproto.com) ∙ [gizo](https://github.com/espeon/gizo) ∙ [concord](https://github.com/dollspace-gay/concord) ∙ [thisismissem on infra/apps/moderation](https://bsky.app/profile/thisismissem.social/post/3mfg3fc2jwc24)
+1777
protocols/atproto/dev-chats/02-22-26.md
···11+<notes>
22+# notes
33+44+asjdlfk
55+66+## labelers
77+88+aggregating
99+1010+skyware: SELECT \* labels -> sends out all labels to client (doesnt do incremental backfill)
1111+1212+"what's the difference between skyware and ozone?"
1313+1414+- ozone: whole multi-user interface for human moderation
1515+- skyware: minimal labeler thing
1616+1717+osprey: patterns at scale
1818+1919+coop:
2020+2121+***
2222+2323+## UX around prompt create
2424+2525+prompt=create not standard, not all PDSs support it (e.g. single user PDS, PDS has user-registration disabled)
2626+2727+> updates to the PDS and the oauth flow itself are needed
2828+2929+> there is energy on the bsky team around this
3030+3131+(oauth working group proposal repo on emelia's repo)
3232+3333+## device code grant flow
3434+3535+start flow from one device, poll, token back
3636+3737+DPoP with device code grant flow, draft:
3838+3939+> devices without a display??
4040+4141+[atcute/packages/oauth/node-client-public-example at trunk · mary-ext/atcute](https://github.com/mary-ext/atcute/tree/trunk/packages/oauth/node-client-public-example)
4242+4343+## relays
4444+4545+<https://atproto.com/guides/the-at-stack>
4646+4747+## everything account
4848+4949+## how to explain credible exit
5050+5151+why (plc rotation keys in secure enclave), hard to understand
5252+5353+sharpie language: "PLC is cloud thing. stores public part of rotation key, allowing you to move your data home if your house burns down"
5454+5555+"fingerprint for your account" like 2FA backup keys, which you store yourself
5656+5757+ms boba
5858+5959+sharpie: partnering with content creators
6060+6161+Doctor Popular??
6262+6363+## lexicons
6464+6565+not everything needs to be in lexicons
6666+6767+deprecated field
6868+6969+docs pointer
7070+7171+lexicon garden
7272+7373+- what's missing?
7474+7575+## docs contributions
7676+7777+circle of life
7878+7979+## following feeds
8080+8181+stupidly complex data problem at scale
8282+8383+[like half of bskys workload](https://witchsky.app/profile/did:plc:vpkhqolt662uhesyj6nxm7ys/post/3m2wsfeab322b)
8484+8585+post > bg task > inject into follower feeds (sorted set)
8686+8787+mastodon gens following feed on demand after inactivity
8888+8989+postgres -> scylla (went poorly, touched everything)
9090+9191+bsky: scylla db, don't suspend creating feeds for inactive users
9292+9393+lrg account -> lossy? might not get it?
9494+9595+<https://jazco.dev/2025/02/19/imperfection/>
9696+9797+> has popfeed done this?
9898+9999+cheat: {bsky follows} - {those w/o \*.xyz records}
100100+101101+gotcha: blocks DNE removal of follow record
102102+103103+</notes>
104104+105105+<discord chat>
106106+thisismissem.social — 2:00 PM
107107+hi ih
108108+n8 — 2:00 PM
109109+heya
110110+Bryan Guffey
111111+112112+ — 2:00 PM
113113+woo woo
114114+sri.xyz — 2:01 PM
115115+👋
116116+thisismissem.social
117117+ is now a speaker. — 2:01 PM
118118+pdewey.com — 2:01 PM
119119+👋
120120+flo.bit — 2:01 PM
121121+also have some topic suggestions:
122122+123123+long text format: markdown vs lexicon
124124+signup: sign up on page vs on pds with prompt=create
125125+hi everyone 🙂
126126+n8 — 2:02 PM
127127+hey flo bit!!!!
128128+taking notes: https://leaflet.pub/66b63f56-f335-4d41-8e4a-0eca566cfb22
129129+notes
130130+asjdlfk
131131+notes
132132+evan.jarrett.net
133133+134134+ — 2:07 PM
135135+what no gemini to record this conversation and transcribe it for us?
136136+byarielm — 2:07 PM
137137+What's the difference btwn skyware and ozone?
138138+verdverm.com — 2:07 PM
139139+fyi, the noise level between speakers is large, n8 quiet, em loud
140140+flo.bit — 2:08 PM
141141+i started a transcript
142142+thisismissem.social — 2:08 PM
143143+you can boost individual people's audio
144144+byarielm — 2:08 PM
145145+you can manually adjust audio for each user!
146146+verdverm.com — 2:08 PM
147147+been looking, but not seeing
148148+byarielm — 2:08 PM
149149+click the little three dots after hovering over n8's video
150150+pdewey.com — 2:09 PM
151151+you can also just right click on a profile picture to see that menu
152152+evan.jarrett.net
153153+154154+ — 2:09 PM
155155+or right click
156156+flo.bit — 2:09 PM
157157+also another topic suggestion:
158158+easiest way to build an appview with a following feed
159159+verdverm.com — 2:10 PM
160160+i s permissioned data on the agenda?
161161+n8 — 2:10 PM
162162+yea somewhat, i have an item about "private data use cases" inspired by bryan's post
163163+verdverm.com — 2:10 PM
164164+Bsky is moving over to Osprey?
165165+flo.bit — 2:10 PM
166166+yeah lets see for what we have the time, all only suggestions if we have nothing else to talk about 😉
167167+n8 — 2:11 PM
168168+i like to follow whatever comes up instead of being prescriptive about the topics so im game for it 🙂
169169+flo.bit — 2:12 PM
170170+the signup thing is more a UX flow question: allow users to enter email password on the page (easier to understand maybe, but e.g. bad for password managers) (this is basically what bsky does) or redirect them to a pds and do the signup there with prompt=create
171171+byarielm — 2:13 PM
172172+Thanks! So to summarize and check my knowledge: Skyware is kinda the base code you need for a labeler, Ozone provides UI and some extra db/moderation stuff, and Osprey is more pattern/rule formatting for labellers? Could you use Osprey without Ozone?
173173+verdverm.com — 2:13 PM
174174+If you want to talk perm'd data, I'd be happy to join, I'm deeply involved
175175+176176+also, best pronunciation of verdverm yet!
177177+flo.bit
178178+ is now a speaker. — 2:13 PM
179179+n8 — 2:13 PM
180180+yes i'd love to learn what you're up to!
181181+verdverm.com — 2:14 PM
182182+I can more likely answer other's questions, the ones I have myself are open and as yet unanswered
183183+sorryforpartyrock.ing
184184+185185+ — 2:18 PM
186186+Hi all !
187187+n8 — 2:18 PM
188188+👋
189189+byarielm — 2:18 PM
190190+And it's only showing recently active sessions lol 🥲 so not really useful
191191+evan.jarrett.net
192192+193193+ — 2:19 PM
194194+yeah for client confidential long standing oauth, they don't show up all the time
195195+sorryforpartyrock.ing
196196+197197+ — 2:20 PM
198198+oh that's weird
199199+i thought theyd only show valid sessions and those would be valid
200200+byarielm — 2:20 PM
201201+the only one showing in mine rn is smoke signal (just went to the site a few min ago) + a list of device logins
202202+psingletary.com
203203+204204+ — 2:20 PM
205205+hi, i am a patrick
206206+pdewey.com — 2:21 PM
207207+hi i am also a patrick
208208+evan.jarrett.net
209209+210210+ — 2:21 PM
211211+i'm thinking about it instead of app-passwords
212212+thisismissem.social — 2:21 PM
213213+osprey is a automation and data analysis tool — it receives the events from the a source, e.g., the firehose, and then based on the rules your stored (a DSL) it can then apply those to data as it comes in, it's very similar in that way to SQRL. Osprey also stores all the events in a big database, which then allows you to write a new rules and investigate patterns
214214+verdverm.com — 2:21 PM
215215+apikey like thing?
216216+geesawra — 2:21 PM
217217+I am not Patrick sadly
218218+psingletary.com
219219+220220+ — 2:22 PM
221221+with patrick powers combined we are patrick²
222222+verdverm.com — 2:22 PM
223223+My Permissioned PDS POC has most of an APIKey implementation, which is not that much overall
224224+psingletary.com
225225+226226+ — 2:22 PM
227227+you can be an honorary one for this hangout
228228+evan.jarrett.net
229229+230230+ — 2:22 PM
231231+my thought is basically implementing a custom apikey that is just linked to your web logged in oauth session. rather than using app-passwords. its a pain because its basically just app-password but now tied to our oauth.
232232+@quillmatiq.com — 2:23 PM
233233+👋🏼
234234+verdverm.com — 2:25 PM
235235+apikeys need a table in the db and all the other CRUD/LEX to go with them, but mechanically in the PDS stores (actor notably) logic, the auth method is largely abstracted at that point
236236+same.supply — 2:25 PM
237237+https://github.com/mary-ext/atcute/tree/trunk/packages/oauth/node-client-public-example
238238+thisismissem.social — 2:26 PM
239239+there's examples in bsky cookbook
240240+https://github.com/bluesky-social/cookbook/
241241+evan.jarrett.net
242242+243243+ — 2:26 PM
244244+@n8 how about your adventures in relays
245245+thisismissem.social — 2:26 PM
246246+the IETF account management draft: https://github.com/ThisIsMissEm/draft-oauth-authorization-management-uri
247247+sharpie — 2:26 PM
248248+hi chat
249249+thisismissem.social — 2:27 PM
250250+yeah, your application could certainly do that for your API
251251+pdewey.com — 2:27 PM
252252+"the nostr guy" is a great way to describe that
253253+psingletary.com
254254+255255+ — 2:28 PM
256256+i thought they were also a svelte person
257257+flo.bit — 2:28 PM
258258+lets not give svelte people a bad rep 😛
259259+same.supply — 2:28 PM
260260+as a svelte person, the nostr guys can claim him
261261+@quillmatiq.com — 2:29 PM
262262+oops
263263+psingletary.com
264264+265265+ — 2:29 PM
266266+he they proclaiied it heavily in their bio... cowshrug
267267+Image
268268+verdverm.com — 2:29 PM
269269+I was in the trenches on HN for "the nostr guy" post, good place to see non-atproto perspectives
270270+@quillmatiq.com — 2:30 PM
271271+always nervous to hit HN -- worth going thru those comments?
272272+thisismissem.social — 2:30 PM
273273+https://atproto.com/guides/the-at-stack
274274+dane
275275+276276+ — 2:30 PM
277277+here's collectiondir for anyone wondering https://github.com/bluesky-social/indigo/tree/main/cmd/collectiondir
278278+evan.jarrett.net
279279+280280+ — 2:30 PM
281281+https://atcr.io/r/zzstoatzz.io/collectiondir
282282+ATCR
283283+zzstoatzz.io/collectiondir - ATCR
284284+collectiondir
285285+zzstoatzz.io/collectiondir - ATCR
286286+verdverm.com — 2:31 PM
287287+yeah, I hang out in the comments, my spicer atproto takes happen over there too (not so much this post)
288288+sorryforpartyrock.ing
289289+290290+ — 2:31 PM
291291+that's so much data
292292+n8 — 2:31 PM
293293+@Bryan Guffey idk if that didn't go thru, i tried to approve your request to speak!
294294+295295+pls try again maybe?
296296+@quillmatiq.com — 2:32 PM
297297+Image
298298+sharpie — 2:32 PM
299299+i left twitter, you couldn't pay me to read nostr comments
300300+that's where all the crypto apologists went :(
301301+geesawra — 2:32 PM
302302+no we're also on bsky
303303+but we have less extreme views and are cool all around
304304+@quillmatiq.com — 2:32 PM
305305+not yet 🙂
306306+sorryforpartyrock.ing
307307+308308+ — 2:32 PM
309309+i used to look at using farcaster
310310+same.supply — 2:32 PM
311311+dozens!
312312+@quillmatiq.com — 2:32 PM
313313+but i see where you're going with it
314314+verdverm.com — 2:33 PM
315315+I'm probably one of the reasons this meme exists 🙈 🙊 🙉
316316+Bryan Guffey
317317+ is now a speaker. — 2:33 PM
318318+sharpie — 2:33 PM
319319+crypto infrastructure isn't bad; the people using it unethically are tho
320320+geesawra — 2:33 PM
321321+agreed
322322+infra also sucks tho
323323+most of the times
324324+sharpie — 2:33 PM
325325+i like the concept
326326+but the implimentation is like everything else in tech
327327+good in an ideal world and not the real one
328328+sorryforpartyrock.ing
329329+330330+ — 2:34 PM
331331+big infrastructure is fun
332332+has real effects tho 🥲
333333+verdverm.com — 2:34 PM
334334+my atmunge project produces a table with every account and collections, it's very easy to build that index, one request per account
335335+geesawra — 2:34 PM
336336+you either end up being slow or centralized, no middle ground
337337+n8 — 2:34 PM
338338+hell yea!
339339+sorryforpartyrock.ing
340340+341341+ — 2:34 PM
342342+centralised 👀
343343+byarielm — 2:35 PM
344344+i'll be there! 🙂 (at the con lol)
345345+dane
346346+347347+ — 2:35 PM
348348+hooray for meetups
349349+sorryforpartyrock.ing
350350+351351+ — 2:35 PM
352352+i wish i was in the eu rn
353353+i'd go
354354+geesawra — 2:35 PM
355355+as a non-native speaker it's so confusing haha
356356+byarielm — 2:35 PM
357357+nobody come to buffalo u might get trapped
358358+psingletary.com
359359+360360+ — 2:35 PM
361361+Attending ATmosphereConf?
362362+IRL
363363+364364+4 votes
365365+33%
366366+Virtual
367367+368368+5 votes
369369+42%
370370+What's that?
371371+372372+2 votes
373373+17%
374374+Nah
375375+376376+1 vote
377377+8%
378378+379379+12 votes
380380+Poll closed
381381+sharpie — 2:36 PM
382382+i'm hosting an atproto table at my local event next week
383383+sorryforpartyrock.ing
384384+385385+ — 2:36 PM
386386+what's atmosphereconf?
387387+sharpie — 2:36 PM
388388+i don't think that's news worthy tho lmao
389389+sorryforpartyrock.ing
390390+391391+ — 2:36 PM
392392+for those of us who don't know
393393+geesawra — 2:36 PM
394394+needs a "nah but i wish"
395395+evan.jarrett.net
396396+397397+ — 2:36 PM
398398+https://atmosphereconf.org/
399399+ATmosphereConf 2026
400400+ATmosphereConf is the global atproto community conference. Join us in Vancouver, Canada, March 26th - 29th, 2026.
401401+Image
402402+psingletary.com
403403+404404+ — 2:36 PM
405405+2nd
406406+thisismissem.social — 2:36 PM
407407+There's an interesting thread in here about infra, apps, and moderation: https://bsky.app/profile/thisismissem.social/post/3mfg3fc2jwc24
408408+sharpie — 2:36 PM
409409+i'll be attending atmosphere virtually; don't feel comfortable leaving the US rn
410410+have fun tho !!
411411+geesawra — 2:37 PM
412412+atmosphereconf EU when
413413+psingletary.com
414414+415415+ — 2:37 PM
416416+same, if i leave i have to prepare that I can't come back
417417+dane
418418+419419+ — 2:37 PM
420420+next one should be eu
421421+i hope
422422+sorryforpartyrock.ing
423423+424424+ — 2:37 PM
425425+i'll be going up with eli i guess
426426+psingletary.com
427427+428428+ — 2:37 PM
429429+aren't you riding the train?
430430+sharpie — 2:37 PM
431431+yeah, unfortunately i can't take that risk rn. important things i'm working on locally
432432+Bryan Guffey
433433+434434+ — 2:38 PM
435435+run your own hahah
436436+dane
437437+438438+ — 2:38 PM
439439+logical next step i guess, we've had us then canada
440440+sorryforpartyrock.ing
441441+442442+ — 2:38 PM
443443+the train leaves at 6pm
444444+geesawra — 2:38 PM
445445+i want to put dotfiles on pdses
446446+ultimate nerd snipe
447447+@quillmatiq.com — 2:38 PM
448448+✨ e v e r y t h i n g a c c o u n t ✨
449449+geesawra — 2:38 PM
450450+counterpoint: do put them in your pds, make security engineers happy
451451+verdverm.com — 2:38 PM
452452+Why atproto over git for dotfiles?
453453+psingletary.com
454454+455455+ — 2:38 PM
456456+<-bitwarden stan
457457+geesawra — 2:38 PM
458458+fun!
459459+sharpie — 2:39 PM
460460+ohhhh i saw that
461461+evan.jarrett.net
462462+463463+ — 2:39 PM
464464+they mean if the dotfiles themselves could be encrypted/private
465465+thisismissem.social — 2:39 PM
466466+https://bsky.app/profile/why.bsky.team/post/3mfhon6ss4k2g
467467+same.supply — 2:39 PM
468468+I mean they're probably public on git (dotfiles)
469469+sorryforpartyrock.ing
470470+471471+ — 2:39 PM
472472+what about people who dont have iphones?
473473+geesawra — 2:39 PM
474474+android could do something like that
475475+sharpie
476476+ is now a speaker. — 2:39 PM
477477+sorryforpartyrock.ing
478478+479479+ — 2:39 PM
480480+i have an galaxy s4 i use often
481481+psingletary.com
482482+483483+ — 2:40 PM
484484+S FOUR!
485485+geesawra — 2:40 PM
486486+should rotation keys be offered in bsky's settings? like under an "advance" use
487487+sorryforpartyrock.ing
488488+489489+ — 2:40 PM
490490+it's my main phone 🙉
491491+sorryforpartyrock.ing
492492+493493+ — 2:40 PM
494494+no
495495+well
496496+geesawra — 2:40 PM
497497+huh why?
498498+same.supply — 2:40 PM
499499+imo they should never be on an apps website
500500+dane
501501+502502+ — 2:40 PM
503503+i think so at least, i don't think it should be a separate thing
504504+sorryforpartyrock.ing
505505+506506+ — 2:41 PM
507507+i don't think it would end well, people would lose them quite often
508508+same.supply — 2:41 PM
509509+it should be on your pds host website
510510+sorryforpartyrock.ing
511511+512512+ — 2:41 PM
513513+i've made multiple and then immediately lost them
514514+@quillmatiq.com — 2:41 PM
515515+great explanation
516516+psingletary.com
517517+518518+ — 2:41 PM
519519+forwarding address
520520+sorryforpartyrock.ing
521521+522522+ — 2:41 PM
523523+bailey has mine so we good now
524524+@taurean.bryant.land — 2:41 PM
525525+really good, super useful thanks
526526+geesawra — 2:41 PM
527527+that's why i think it should be under an advanced menu, it's like, if you want to use them you can
528528+otherwise i feel they'll always be reserved for nerds like me
529529+sorryforpartyrock.ing
530530+531531+ — 2:42 PM
532532+i think they'd be too visible and associated with bsky
533533+i get what you mean tho
534534+if they get the secure enclave thing in-app i think that would be nice tho
535535+geesawra — 2:42 PM
536536+yeah exactly
537537+@taurean.bryant.land — 2:42 PM
538538+yeah, thats great too. like showing ID to fill out a change of address form with the post office
539539+sorryforpartyrock.ing
540540+541541+ — 2:42 PM
542542+theyre like 2fa backup keys
543543+geesawra — 2:42 PM
544544+who's building ledgers for plc
545545+sorryforpartyrock.ing
546546+547547+ — 2:42 PM
548548+ID is a little better i think
549549+you can't lose a fingerprint under normal circumstances but you can an ID
550550+psingletary.com
551551+552552+ — 2:43 PM
553553+lol let's not worry about semantics in favor of explaining a concept
554554+sharpie — 2:43 PM
555555+i tried explaining the public v private components and users usually get confused
556556+so i don't explain it
557557+geesawra — 2:44 PM
558558+asymmetric crypto is hard
559559+evan.jarrett.net
560560+561561+ — 2:44 PM
562562+i like the skeleton key concept even though thats also not quite accurate
563563+sorryforpartyrock.ing
564564+565565+ — 2:44 PM
566566+i think streamplace does it well enough
567567+@taurean.bryant.land — 2:44 PM
568568+100%. maybe the only thing that could be useful is the directory stores the ability to verify your passport or key or whatever.
569569+psingletary.com
570570+571571+ — 2:44 PM
572572+bff heart necklaces
573573+sorryforpartyrock.ing
574574+575575+ — 2:44 PM
576576+a public key is associated with a stream key which is like a password
577577+thisismissem.social — 2:44 PM
578578+yeah, it is a tricky one, I'd just say you have a credential that you can use to manage your identity in the cloud, and when you create that credential, you register it with your identity in the cloud
579579+byarielm — 2:44 PM
580580+it's like lock-and-key matching but...more like fingerprints that are actually unique lol. i like your explanation sharpie, good for non tech users.
581581+psingletary.com
582582+583583+ — 2:44 PM
584584+one person has half of the necklace, you have the other
585585+sharpie — 2:45 PM
586586+yeah honestly, getting people to tune in long enough to even understand what the PLC is; is very hard
587587+i can hear people's eyes glazing over lmao
588588+geesawra — 2:45 PM
589589+what if the necklace was split in n parts and you could reconstruct the full necklace with m parts 👀
590590+@taurean.bryant.land — 2:45 PM
591591+I appreciate you @sharpie! we need more people grounding this to focus on people instead of tech
592592+sorryforpartyrock.ing
593593+594594+ — 2:46 PM
595595+only thing i ever use AI for is to explain big systems i'm not familiar with already
596596+sharpie
597597+ is now a speaker. — 2:46 PM
598598+psingletary.com
599599+600600+ — 2:47 PM
601601+fig?
602602+sorryforpartyrock.ing
603603+604604+ — 2:47 PM
605605+code should be maintainable and that includes me either writing or reviewing code, ideally both
606606+@quillmatiq.com — 2:47 PM
607607+"if elon shows up..."
608608+@taurean.bryant.land — 2:47 PM
609609+I was just going to say "Eloned" lol
610610+@quillmatiq.com — 2:47 PM
611611+I ususally say "The Worst Person You Know" but they get the hint
612612+psingletary.com
613613+614614+ — 2:47 PM
615615+@phil fyi /nick fig (aka:[phil])
616616+phil — 2:47 PM
617617+❤️ https://updates.microcosm.blue/3lz7nwvh4zc2u
618618+Adversarial PLC directory migration - microcosm
619619+Contingency planning: what's our credible failover for the centralized underpinning of ATProto identities?
620620+Adversarial PLC directory migration - microcosm
621621+@taurean.bryant.land — 2:48 PM
622622+‼️‼️‼️
623623+animations would actually be amazing, the video that Sharpie did has already been so valuable, this would be great.
624624+@negritosuave.blacksky.app — 2:48 PM
625625+There’s a video?
626626+sorryforpartyrock.ing
627627+628628+ — 2:49 PM
629629+oh i'm awful with UI
630630+ui/ux i am absolute trash at
631631+geesawra — 2:49 PM
632632+UI is hard
633633+evan.jarrett.net
634634+635635+ — 2:49 PM
636636+I think we need a client facing name for the PDS. just like "atproto account". its not very consumer friendly
637637+@taurean.bryant.land — 2:49 PM
638638+let me try and find it
639639+psingletary.com
640640+641641+ — 2:50 PM
642642+yes let's abandon meta
643643+they can burn for all i care
644644+@quillmatiq.com — 2:50 PM
645645+docpop did a fantastic job
646646+they didn't promote it well enough on the fedi
647647+/ outside the fedi
648648+@quillmatiq.com — 2:51 PM
649649+^ it's not a hope, it's a goal
650650+@taurean.bryant.land — 2:51 PM
651651+https://bsky.app/profile/sharpiepls.com/post/3lw3hcuojck2u
652652+653653+dapurplesharpie (@sharpiepls.com)
654654+Entry 31 - Migrating from the Bluesky PDS to the #BlackSky PDS with PDS MOOver #SharpieVLOG
655655+Reposts
656656+147
657657+Likes
658658+463
659659+Quotes
660660+273
661661+662662+Bluesky•8/10/25, 6:39 PM
663663+thisismissem.social — 2:51 PM
664664+https://bsky.app/profile/heika.dog/post/3mbfpu24vac2t
665665+flo.bit — 2:51 PM
666666+we also need a internet-handle website that shows the popular apps you can sign in with your atproto account, etc
667667+sharpie — 2:52 PM
668668+a community needs EVERYBODY
669669+n8 — 2:52 PM
670670+(i have a WIP for this https://waow.tech/ , not even close to all)
671671+flo.bit — 2:52 PM
672672+kinda like https://internethandle.org/ + https://atproto.brussels/atproto-apps but with better ux
673673+psingletary.com
674674+675675+ — 2:52 PM
676676+we might need to figure out how to move away from discord to make this more open, maybe streamplace with vdo.ninja, but audio routing always ends up being the nightmare
677677+geesawra — 2:53 PM
678678+there's a severe lack of specs in atmosphere
679679+sharpie — 2:53 PM
680680+ventrillo or mumble?
681681+thisismissem.social — 2:53 PM
682682+what do you mean by this? at a lexicon level?
683683+geesawra — 2:53 PM
684684+even at lower levels, i feel like there's an adequate amount of documentation but not enough rigorous spec
685685+psingletary.com
686686+687687+ — 2:54 PM
688688+yeah we are up to 12 viewers on @sorryforpartyrock.ing stream
689689+sharpie — 2:54 PM
690690+where are the recordings for the calls stored?
691691+@quillmatiq.com — 2:54 PM
692692+we can also start sans lexicon and move when we're ready, doesn't need to be a blocker
693693+psingletary.com
694694+695695+ — 2:54 PM
696696+we're not unless @n8 is recording
697697+geesawra — 2:54 PM
698698+mind you i might not've looked hard enough! but stuff like a "pds spec" mostly lives in the reference implementation not in writing
699699+sorryforpartyrock.ing
700700+701701+ — 2:54 PM
702702+why would we store this haha
703703+psingletary.com
704704+705705+ — 2:54 PM
706706+having the conversation be ephemeral is probably better though
707707+sorryforpartyrock.ing
708708+709709+ — 2:55 PM
710710+yeah that's my thought
711711+n8 — 2:55 PM
712712+yea im taking notes but haven't explored recording yet (maybe streamplace vods down the road but only if ppl actually want that)
713713+psingletary.com
714714+715715+ — 2:55 PM
716716+we kind of wander all over and that fine for participation but terrible for watchability
717717+geesawra — 2:55 PM
718718+yes I agree
719719+evan.jarrett.net
720720+721721+ — 2:55 PM
722722+i was expecting to see the com.atproto lexicons/xrpc on the new atproto site....
723723+was kinda disappointed when they weren't there
724724+sorryforpartyrock.ing
725725+726726+ — 2:56 PM
727727+oh we do that
728728+yeah
729729+geesawra — 2:56 PM
730730+i guess my concept of spec is more tied to the conventional "this is a list of endpoints" rather than "here's xrpc and lexicons, go nuts"
731731+sorryforpartyrock.ing
732732+733733+ — 2:56 PM
734734+it's so funny
735735+thoth — 2:56 PM
736736+I'm still super concerned about the blocking repost suppression bug.
737737+geesawra — 2:56 PM
738738+yesss the deprecated tag is vital
739739+verdverm.com — 2:57 PM
740740+I already have a tool to do this, someone just needs to write the templates for markdown or whatever format you want
741741+@taurean.bryant.land — 2:57 PM
742742+Lexicon Garden is great: https://lexicon.garden/
743743+Lexicon Garden
744744+Lexicon Garden - ATProtocol Lexicon Browser
745745+Browse and discover ATProtocol lexicon schema definitions
746746+Image
747747+for lexicon documentation
748748+sorryforpartyrock.ing
749749+750750+ — 2:57 PM
751751+how do you generate good documentation though?
752752+that's impractical i think
753753+i'm a big fan of self documenting code
754754+psingletary.com
755755+756756+ — 2:58 PM
757757+lol @sorryforpartyrock.ing you should let people know who you are
758758+thoth — 2:58 PM
759759+I mean the process described is "generate a skeleton from the lexicon and fill it in"
760760+sorryforpartyrock.ing
761761+762762+ — 2:58 PM
763763+no why?
764764+thoth — 2:58 PM
765765+But it'd probably be better to have a synthesis thing that generates docs and compiled lexicons from an easier-to-write source code description.
766766+So the docs and code can't get out of sync so easily.
767767+(and you don't have to do a weird dance when the record context changes)
768768+sorryforpartyrock.ing
769769+770770+ — 2:59 PM
771771+https://bsky-docs.pages.dev/ isn't too bad
772772+My Docs
773773+Bluesky & AT Protocol Documentation
774774+Unofficial documentation for Bluesky and the AT Protocol, including auto-generated lexicon references.
775775+oh those are completely different
776776+i think separate doc pages that tell you how to use things/full flow
777777+that's fine
778778+verdverm.com — 3:00 PM
779779+I have a tool that generally, and at scale, allows one to data + templates -> lots of files / dirs. Also allows you to write the extra, and also regen the gen'd parts if they change, without breaking things
780780+sorryforpartyrock.ing
781781+782782+ — 3:00 PM
783783+i love docs.bsky.app
784784+its so bad
785785+n8 — 3:00 PM
786786+examples/concepts/api-ref, i think we need all 3, some will be app level
787787+psingletary.com
788788+789789+ — 3:01 PM
790790+halfway mark
791791+sorryforpartyrock.ing
792792+793793+ — 3:01 PM
794794+yeah this is kind of what i do already
795795+byarielm — 3:01 PM
796796+we also need the "for babies"/"for newbs" docs 🥲 with all the caveats so i can learn more
797797+n8 — 3:01 PM
798798+"Introduction"/"Getting Started"
799799+sorryforpartyrock.ing
800800+801801+ — 3:01 PM
802802+we need more of a concepts thing
803803+geesawra — 3:02 PM
804804+the go documentation does this well, you have examples/docs/howtos plus reference in a single page
805805+Jack Valinsky — 3:02 PM
806806+*taking notes for my own projects wrt. docs 😬
807807+thisismissem.social — 3:02 PM
808808+yeah, this is the same as lexicon.garden really: a html rendering of the lexicon, but it's not prose
809809+evan.jarrett.net
810810+811811+ — 3:02 PM
812812+i tried to write documentation and then it got outdated like 3 commits later.
813813+sorryforpartyrock.ing
814814+815815+ — 3:02 PM
816816+yeah that's fine, it's not trying to be anything more
817817+thoth — 3:02 PM
818818+RustDoc. Make it like RustDoc. This is the way.
819819+sorryforpartyrock.ing
820820+821821+ — 3:02 PM
822822+you get it
823823+Bryan Guffey
824824+825825+ — 3:02 PM
826826+OMG YES ARIEL WE SHOULD DO THIS TOGETHER
827827+sorryforpartyrock.ing
828828+829829+ — 3:02 PM
830830+rustdoc is so goated
831831+Bryan Guffey
832832+833833+ — 3:02 PM
834834+ELI5
835835+Bryan Guffey
836836+837837+ — 3:03 PM
838838+facts
839839+thoth — 3:03 PM
840840+I didn't think it was possible for docs generated from source annotations to be good (I mean, have you seen doxygen?) until I saw rustdoc
841841+sorryforpartyrock.ing
842842+843843+ — 3:03 PM
844844+i have a pretty shitty claude-written mini docs system i have locally
845845+geesawra — 3:03 PM
846846+rustdoc and godoc are the goats
847847+n8 — 3:03 PM
848848+yea they were pretty responsive on gh, got a lil typo thing merged in a couple hours
849849+byarielm — 3:03 PM
850850+thanks miss em! i do have some unanswered q's for what i've read so far, though it is MUCH better than what it was before.
851851+sorryforpartyrock.ing
852852+853853+ — 3:03 PM
854854+like it's pretty poorly written + llmisms but it works for understanding things
855855+thisismissem.social — 3:03 PM
856856+yeah, keep notes on what you're missing
857857+sorryforpartyrock.ing
858858+859859+ — 3:04 PM
860860+packed full of info is nice
861861+byarielm — 3:04 PM
862862+i started this lmao but haven't continued cuz (1) wanted to wait for the atproto example to move to tap, (2) busy. https://leaflet.pub/9ee7a6e8-d4bc-4a83-a794-165de5637222
863863+same.supply — 3:04 PM
864864+What I've seen work from good js libs is Getting Started/Quick Start + Important Concepts + API Type specification
865865+sorryforpartyrock.ing
866866+867867+ — 3:04 PM
868868+why would i? i'm not a docs writer
869869+claude isn't either, really
870870+Jack Valinsky — 3:05 PM
871871+an aside: mfw I realized that markdown files can have comments that are invisible to renderers but if feed to an LLM -> very easy prompt injection... maybe md format for LLMs was a mistake
872872+byarielm — 3:05 PM
873873+thinking i just need to sit down with the docs + margin annotations open. then do issues/PRs later.
874874+thisismissem.social — 3:05 PM
875875+https://github.com/bluesky-social/atproto-website/issues
876876+GitHub
877877+bluesky-social/atproto-website
878878+Contribute to bluesky-social/atproto-website development by creating an account on GitHub.
879879+Contribute to bluesky-social/atproto-website development by creating an account on GitHub.
880880+byarielm — 3:06 PM
881881+cuz it's hard to read and then pause to write an issue lol
882882+n8 — 3:06 PM
883883+can confirm, i find hard to step out my weeds and imagine how people interpret my docs
884884+sorryforpartyrock.ing
885885+886886+ — 3:07 PM
887887+i have to write user facing docs every so often and it's absolutely horrible
888888+Bryan Guffey
889889+890890+ — 3:07 PM
891891+why are you so mean to the user haha
892892+sorryforpartyrock.ing
893893+894894+ — 3:07 PM
895895+condolences to people who do
896896+Bryan Guffey
897897+898898+ — 3:07 PM
899899+we're the best
900900+thisismissem.social — 3:07 PM
901901+it's a certain skill!
902902+n8 — 3:08 PM
903903+https://leaflet.pub/66b63f56-f335-4d41-8e4a-0eca566cfb22
904904+notes
905905+asjdlfk
906906+notes
907907+thisismissem.social — 3:08 PM
908908+ooh! yes! annotate documentation with margin.at!!
909909+sorryforpartyrock.ing
910910+911911+ — 3:08 PM
912912+i'm hoping it's yjs
913913+ueberdosis has a quite nice yjs based sync server
914914+flo.bit
915915+ is now a speaker. — 3:09 PM
916916+sorryforpartyrock.ing
917917+918918+ — 3:10 PM
919919+i don't want to build this 🥲
920920+it's usually too slow to do it on demand
921921+so you just have to do it in the background
922922+psingletary.com
923923+924924+ — 3:11 PM
925925+there's a reason why Graze hasn't tackled this yet
926926+geesawra — 3:11 PM
927927+sheesh
928928+sorryforpartyrock.ing
929929+930930+ — 3:11 PM
931931+for everyone
932932+evan.jarrett.net
933933+934934+ — 3:11 PM
935935+the following feed specifically the non-algorithmic one. becuase you have to show every post for every follower that everyone has
936936+sorryforpartyrock.ing
937937+938938+ — 3:11 PM
939939+with nyt i don't think it'll be too bad bc nyt is designed to be closed
940940+verdverm.com — 3:12 PM
941941+I'm working towards a set of those expensive feeds just for me, don't have to do it at scale :]
942942+psingletary.com
943943+944944+ — 3:12 PM
945945+@flo.bit you should reach out to graze team and community to work out a middle ground feed
946946+dane
947947+948948+ — 3:12 PM
949949+https://witchsky.app/profile/did:plc:vpkhqolt662uhesyj6nxm7ys/post/3m2wsfeab322b 🥲
950950+Witchsky
951951+Why (@why.bsky.team)
952952+Running the following feed is like half of our production workload, its kinda silly how much work it is to do that
953953+954954+↘️ quoting bryan newbold (@bnewbold.net):
955955+956956+a great way to break up bsky appview implementation work would be implementing "Following" as a regular feedgen.
957957+958958+one of the harder pieces in general high-req-rate full-network scale, ...
959959+same.supply — 3:12 PM
960960+is it following feed for posts or events?
961961+geesawra — 3:12 PM
962962+this is a certified "designing data-intensive applications" moment
963963+psingletary.com
964964+965965+ — 3:12 PM
966966+I, for one, am not a fan of following feeds, i feel they re-enforce parasocial relationships and dehumanizes accounts
967967+sorryforpartyrock.ing
968968+969969+ — 3:13 PM
970970+haha that's funny
971971+geesawra — 3:13 PM
972972+oh yeah! i logged in the other day and it said "feed building, come back later"
973973+sorryforpartyrock.ing
974974+975975+ — 3:13 PM
976976+im going to do that
977977+i think they only take like 5k people in account when doing following?
978978+i forget exactly
979979+yeah
980980+byarielm — 3:16 PM
981981+i think it's a post from jaz and it's mind hurting but also funny
982982+geesawra — 3:16 PM
983983+i think there's a post by someone on the team explaining that?
984984+sorryforpartyrock.ing
985985+986986+ — 3:16 PM
987987+i don't want to think about this
988988+geesawra — 3:16 PM
989989+maybe bryan?
990990+sorryforpartyrock.ing
991991+992992+ — 3:16 PM
993993+i'll have to do this eventually
994994+following feed, recommendations
995995+byarielm — 3:16 PM
996996+https://jazco.dev/2025/02/19/imperfection/
997997+sorryforpartyrock.ing— 3:16 PM
998998+recommended topics
999999+10001000+geesawra — 3:17 PM
10011001+ahhh yes, jaz
10021002+same.supply — 3:17 PM
10031003+I don't think many of the lexicons other than app.bsky.feed.posts would have those problems yet
10041004+sorryforpartyrock.ing
10051005+10061006+ — 3:18 PM
10071007+backfilling all of that will be a pain
10081008+there's also the option of only taking in people you care about
10091009+yeah
10101010+evan.jarrett.net
10111011+10121012+ — 3:19 PM
10131013+listrecordbycollection entered the chat
10141014+psingletary.com
10151015+10161016+ — 3:19 PM
10171017+this is me erasure!
10181018+10191019+fortunately we have another patrick
10201020+sorryforpartyrock.ing
10211021+10221022+ — 3:19 PM
10231023+i just do it myself
10241024+it's not hard
10251025+you can just check all your lexicons on the relay to get most of them
10261026+won't get all of them just by the nature of the relay
10271027+geesawra — 3:20 PM
10281028+til
10291029+@taurean.bryant.land — 3:21 PM
10301030+really good point
10311031+Jack Valinsky — 3:21 PM
10321032+huh that's good to know...
10331033+@taurean.bryant.land — 3:22 PM
10341034+a good middle ground is also using the followgraph as a follow recommendation system to build a new social graph.
10351035+geesawra — 3:22 PM
10361036+the good old "block, unblock to force unfollow" trick doesn't work around here!
10371037+Jack Valinsky — 3:22 PM
10381038+this is why we can't have nice things :/
10391039+geesawra — 3:23 PM
10401040+that's incredibly antisocial
10411041+n8 — 3:23 PM
10421042+yes i am doing something like this at the moment, lots of interesting things to explore here
10431043+verdverm.com — 3:24 PM
10441044+why should block activity force some unfollow? or generalized, why does writing a record in one repo force a write in another repo?
10451045+geesawra — 3:24 PM
10461046+no way lmao
10471047+Bryan Guffey
10481048+10491049+ — 3:25 PM
10501050+yeah, this is the problem. i don't necessarily think ti should, but I do think people should be incontrol of blocking people they don;'t want to engage with.
10511051+@quillmatiq.com — 3:25 PM
10521052+we can
10531053+Jack Valinsky — 3:25 PM
10541054+yes
10551055+same.supply — 3:25 PM
10561056+yes
10571057+psingletary.com
10581058+10591059+ — 3:25 PM
10601060+yes we can hear
10611061+@quillmatiq.com — 3:25 PM
10621062+it says you're muted but you're not lol
10631063+psingletary.com
10641064+10651065+ — 3:25 PM
10661066+just disable video,
10671067+sorryforpartyrock.ing
10681068+10691069+ — 3:25 PM
10701070+uh oh
10711071+Jack Valinsky — 3:25 PM
10721072+I think your video is desynced from audio
10731073+psingletary.com
10741074+10751075+ — 3:25 PM
10761076+LOL
10771077+evan.jarrett.net
10781078+10791079+ — 3:25 PM
10801080+lol
10811081+@quillmatiq.com — 3:25 PM
10821082+oop
10831083+pdewey.com — 3:26 PM
10841084+rip
10851085+psingletary.com
10861086+10871087+ — 3:26 PM
10881088+THAT WASN'T ME
10891089+@taurean.bryant.land — 3:26 PM
10901090+cliffhanger
10911091+geesawra — 3:26 PM
10921092+f
10931093+@quillmatiq.com — 3:26 PM
10941094+cliffhanger
10951095+Jack Valinsky — 3:26 PM
10961096+pds.rip
10971097+byarielm — 3:26 PM
10981098+ded
10991099+sorryforpartyrock.ing
11001100+11011101+ — 3:26 PM
11021102+what did eli talk about
11031103+@taurean.bryant.land — 3:26 PM
11041104+get out of my head
11051105+@quillmatiq.com — 3:26 PM
11061106+TELL ME WHAT ELI SAID
11071107+Jack Valinsky — 3:26 PM
11081108+defederated
11091109+sorryforpartyrock.ing
11101110+11111111+ — 3:26 PM
11121112+it's probably s2pa/muxl
11131113+¯\_(ツ)_/¯
11141114+psingletary.com
11151115+11161116+ — 3:26 PM
11171117+you think N8 just got discord age checked?
11181118+geesawra — 3:26 PM
11191119+oof smells like ddos
11201120+psingletary.com
11211121+11221122+ — 3:26 PM
11231123+OH MY
11241124+n8 — 3:27 PM
11251125+lmao
11261126+my ISP blows
11271127+on phone now
11281128+geesawra — 3:27 PM
11291129+f for your isp
11301130+n8
11311131+ is now a speaker. — 3:27 PM
11321132+psingletary.com
11331133+11341134+ — 3:28 PM
11351135+plz no inbox
11361136+ffs
11371137+geesawra — 3:28 PM
11381138+the fact that one could engineer a solution like this makes me hopeful for the future of atproto, the design feels infinitely extensible
11391139+Jack Valinsky — 3:28 PM
11401140+quick tl;dr why inbox bad
11411141+geesawra — 3:29 PM
11421142+patrick pick up the mic
11431143+same.supply — 3:29 PM
11441144+intents 👀
11451145+psingletary.com
11461146+11471147+ — 3:29 PM
11481148+notification overload it the biggest problem all electronic communicaitons have
11491149+i only have capacity for bluesky
11501150+the discourse forum is hard
11511151+geesawra — 3:30 PM
11521152+this is protocol level, it wont be necessarily showed to the user
11531153+byarielm — 3:30 PM
11541154+all notifications are muted forever everywhere 🙂
11551155+psingletary.com
11561156+11571157+ — 3:30 PM
11581158+I'm on discord under protest, once i get all th creators i support off of them i'm out
11591159+I'm in 100 and have to rotate
11601160+sorryforpartyrock.ing
11611161+11621162+ — 3:30 PM
11631163+there's only one i'm active in
11641164+geesawra — 3:30 PM
11651165+@thisismissem.social you should bridge everything to matrix 👀
11661166+byarielm — 3:30 PM
11671167+i only have notifs on for tiny groups with low-frequency messages.
11681168+alexwykoff — 3:31 PM
11691169+doll made an irc that uses atproto auth
11701170+Jack Valinsky — 3:31 PM
11711171+zulip feels very academic for me
11721172+psingletary.com
11731173+11741174+ — 3:31 PM
11751175+i don;t think i can tell you how much i want roomy to succeed
11761176+byarielm — 3:31 PM
11771177+learning about discord folders ❤️
11781178+Image
11791179+geesawra — 3:31 PM
11801180+LMAO shots fired to matrix
11811181+byarielm — 3:31 PM
11821182+the atproto folder takes up the whole damn sidebar lmao
11831183+geesawra — 3:31 PM
11841184+working on it
11851185+Jack Valinsky — 3:32 PM
11861186+I'm reminded of that Beeper project + matric bridges
11871187+same.supply — 3:32 PM
11881188+roomy is a discourse replacement akchually
11891189+(this is not an official statement)
11901190+sorryforpartyrock.ing
11911191+11921192+ — 3:32 PM
11931193+i feel like penny kinda puts me off a lil
11941194+lmao
11951195+alexwykoff — 3:32 PM
11961196+it's here https://github.com/dollspace-gay/concord
11971197+GitHub
11981198+GitHub - dollspace-gay/concord
11991199+Contribute to dollspace-gay/concord development by creating an account on GitHub.
12001200+Contribute to dollspace-gay/concord development by creating an account on GitHub.
12011201+geesawra — 3:33 PM
12021202+straight up fire fr fr
12031203+psingletary.com
12041204+12051205+ — 3:33 PM
12061206+i put all public atproto discord links in the AT Proto : Social Events resources page
12071207+psingletary.com
12081208+12091209+ — 3:33 PM
12101210+where did you get that from? or is this a joke?
12111211+michaelthatsit — 3:33 PM
12121212+excellent usecase
12131213+like the time limit on shorts in youtube
12141214+psingletary.com
12151215+12161216+ — 3:35 PM
12171217+this conversation has officially wandered all over
12181218+same.supply — 3:35 PM
12191219+half-joke... it's a long story
12201220+psingletary.com
12211221+12221222+ — 3:35 PM
12231223+thx for doing that @Bryan Guffey
12241224+michaelthatsit — 3:35 PM
12251225+I'm like super new to ATProto but I'm noticing bluesky handles OG a little differently?
12261226+geesawra — 3:35 PM
12271227+a podcast you can discourse with!
12281228+pdewey.com — 3:35 PM
12291229+lurkers rise up
12301230+michaelthatsit — 3:36 PM
12311231+Open graph
12321232+psingletary.com
12331233+'s poll Attending ATmosphereConf? has closed. — 3:36 PM
12341234+Virtual
12351235+Winning answer • 42%
12361236+12371237+View Poll
12381238+sorryforpartyrock.ing
12391239+12401240+ — 3:36 PM
12411241+discord is weird
12421242+they have their own OG server for bluesky afaik
12431243+evan.jarrett.net
12441244+12451245+ — 3:36 PM
12461246+they have been working on open graph fixes lately
12471247+they serve 1k x 1k images
12481248+flo.bit — 3:37 PM
12491249+i'll also leave stage for now, so other people can talk 🙂
12501250+michaelthatsit — 3:37 PM
12511251+Oh no like I'm working on an semi-social fitness logger called fitsky.app, and I want them to be able to share their workouts with dynamically generated OG images
12521252+geesawra — 3:37 PM
12531253+soon (tm)
12541254+michaelthatsit — 3:37 PM
12551255+And it works on opengraph.dev but not bluesky
12561256+flo.bit — 3:37 PM
12571257+yeah bluesky og stuff is weird
12581258+tynanpurdy.com — 3:37 PM
12591259+Howdy
12601260+evan.jarrett.net
12611261+12621262+ — 3:37 PM
12631263+tangled has some, i have some for my project
12641264+flo.bit — 3:37 PM
12651265+depends on "solved" 😄
12661266+probably cache ^^
12671267+geesawra — 3:38 PM
12681268+private data will enable so many strava replacements, i can't wait
12691269+michaelthatsit — 3:38 PM
12701270+this guy
12711271+https://ilo.so/bluesky-link-preview
12721272+ilo.so
12731273+Bluesky Link Previewer
12741274+Preview how your link will look in a Bluesky post.
12751275+Bluesky Link Previewer
12761276+sri.xyz — 3:39 PM
12771277+https://cardyb.bsky.app/v1/extract?url=https://atproto.com
12781278+sorryforpartyrock.ing
12791279+12801280+ — 3:39 PM
12811281+wait
12821282+i have a rewrite of cardyb
12831283+byarielm — 3:39 PM
12841284+@sharpie how do you (if you do) explain the atmosphere/atprotocol to folks who maybe aren't even on bsky?
12851285+michaelthatsit — 3:39 PM
12861286+Lol I noticed that. I thought claude was hallucinating
12871287+tynanpurdy.com — 3:39 PM
12881288+What did you do to cardy A
12891289+geesawra — 3:39 PM
12901290+lol
12911291+pdewey.com — 3:39 PM
12921292+The first time I saw the cardyb user agent in my logs for arabica I was really confused
12931293+sorryforpartyrock.ing
12941294+12951295+ — 3:39 PM
12961296+https://github.com/espeon/gizo
12971297+GitHub
12981298+GitHub - espeon/gizo: A link card generator service
12991299+A link card generator service. Contribute to espeon/gizo development by creating an account on GitHub.
13001300+GitHub - espeon/gizo: A link card generator service
13011301+Jack Valinsky — 3:39 PM
13021302+I don't have anything but just thoughts to throw into the aether: did we talk about admin uis for PDS servers (bailey made a thread) ?
13031303+13041304+or thinking about atproto based package managers (atpkgs, fair.pm, etc) -> what about a model weight registry for ex: roost.tools to download a model for moderation and audit it
13051305+michaelthatsit — 3:39 PM
13061306+still waiting on cardy c-z
13071307+sharpie — 3:39 PM
13081308+what platforms are they on and what is their familiarity with technology in general
13091309+pdewey.com — 3:39 PM
13101310+yeah I can talk about it, Its my service
13111311+sorryforpartyrock.ing
13121312+13131313+ — 3:39 PM
13141314+coffee?
13151315+OH
13161316+yeah that's epic
13171317+pdewey.com
13181318+ is now a speaker. — 3:39 PM
13191319+thisismissem.social — 3:40 PM
13201320+there'll hopefully be news some time soon on things here too
13211321+geesawra — 3:40 PM
13221322+aeropress recipes on atproto???
13231323+byarielm — 3:40 PM
13241324+perf, thanks. so you usually start with questions not explaining, that right?
13251325+evan.jarrett.net
13261326+13271327+ — 3:40 PM
13281328+https://tangled.org/did:plc:chqc2ockzmyvlrasfb66x64a/arabica
13291329+Tangled
13301330+arabica.social/arabica
13311331+Coffee journaling on ATProto (alpha)
13321332+arabica.social/arabica
13331333+@quillmatiq.com — 3:40 PM
13341334+☕
13351335+evan.jarrett.net
13361336+13371337+ — 3:40 PM
13381338+https://alpha.arabica.social/
13391339+Arabica
13401340+Home - Arabica
13411341+Track your coffee brewing journey. Built on AT Protocol, your data stays yours.
13421342+michaelthatsit — 3:40 PM
13431343+lol love it
13441344+geesawra — 3:40 PM
13451345+this is great
13461346+Jack Valinsky — 3:40 PM
13471347+https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status/418 🤭
13481348+sharpie — 3:41 PM
13491349+yeah. to understand their familiarity levels and then choosing an explaination based on that. you need to know who you're talking to and how they understand technology.
13501350+n8 — 3:41 PM
13511351+that’s sweet!
13521352+psingletary.com
13531353+13541354+ — 3:41 PM
13551355+https://alpha.arabica.social/
13561356+@taurean.bryant.land
13571357+ is now a speaker. — 3:41 PM
13581358+tynanpurdy.com — 3:41 PM
13591359+My go to is to throw a blento on the root
13601360+sorryforpartyrock.ing
13611361+13621362+ — 3:41 PM
13631363+yeah i have the same thing with nyt.one
13641364+https://nyt.one/
13651365+flo.bit — 3:41 PM
13661366+😄
13671367+sorryforpartyrock.ing
13681368+13691369+ — 3:41 PM
13701370+inb4 "tanstack router app" embed
13711371+sharpie — 3:41 PM
13721372+shoutout to techs
13731373+tynanpurdy.com — 3:41 PM
13741374+Yoooo taurean
13751375+byarielm — 3:41 PM
13761376+thought so 🙂 would love to hear some different cases + what you'd say at some point! you are my comm inspo for atproto haha
13771377+geesawra — 3:41 PM
13781378+we need james hoffmann on this
13791379+Jack Valinsky — 3:42 PM
13801380+wafrn has some kind of ama/question mechanism so I mentioned questionable to them @thisismissem.social
13811381+Bryan Guffey
13821382+13831383+ — 3:42 PM
13841384+I'm gonna be that cat and set a weekly time for folks to come teach people atproto concepts
13851385+thisismissem.social — 3:42 PM
13861386+they know, I'm friendly with gabboman — they also know my plans beyond questionable.fyi
13871387+sharpie — 3:42 PM
13881388+this is like the time that someone posted about having username @ domain being their email too and i realized it was the tech
13891389+psingletary.com
13901390+13911391+ — 3:42 PM
13921392+not a coffee person, but fragrences is very interesting
13931393+@taurean.bryant.land — 3:42 PM
13941394+https://drydown.social/profile/taurean.bryant.land/house/3mcn34apccq2z
13951395+Drydown - Fragrance Reviews
13961396+Discover and track fragrances on Drydown.
13971397+Drydown - Fragrance Reviews
13981398+sorryforpartyrock.ing
13991399+14001400+ — 3:42 PM
14011401+i love drydown haha
14021402+has anyone checked out ouais' anki esque thing
14031403+tynanpurdy.com — 3:42 PM
14041404+Can the aromatic notes of a coffee review be the same lex as a fragrance review…
14051405+thisismissem.social — 3:43 PM
14061406+funny thing about mastodon handles: some folks think they can email the handle and nooope.
14071407+sorryforpartyrock.ing
14081408+14091409+ — 3:43 PM
14101410+*owais
14111411+wow
14121412+Jack Valinsky — 3:43 PM
14131413+if not email why email shaped :/
14141414+thisismissem.social — 3:43 PM
14151415+because webfinger, tagging @blaine.bsky.social
14161416+sorryforpartyrock.ing
14171417+14181418+ — 3:44 PM
14191419+webbed finger
14201420+oh speaking of, i wonder how far that tailscale oauth sign in with bsky thing is going
14211421+Jack Valinsky — 3:44 PM
14221422+haha I vaguely knew that, and webfinger isn't even a part of the original AP spec (didn't define handle spec I think?) mastodon just did it b/c OStatus?
14231423+psingletary.com
14241424+14251425+ — 3:44 PM
14261426+GDIT these projects are already cards on semble
14271427+thisismissem.social — 3:45 PM
14281428+yeah, webfinger is a mastodon-ism which became defacto for the fediverse and the spec binding webfinger and activitypub was only written in the past 4 years
14291429+sharpie — 3:45 PM
14301430+this is actually super cool and i would love to talk about creator usecases @@taurean.bryant.land
14311431+blaine.bsky.social — 3:45 PM
14321432+funny thing about webfinger: google shipped support for it on gmail addresses in ~2009. The original intent was for it to work on email addresses / Thought experiment: maybe mastodon handles should be email addresses, too?
14331433+@taurean.bryant.land — 3:45 PM
14341434+would love to!
14351435+thisismissem.social — 3:45 PM
14361436+From 2024: https://swicg.github.io/activitypub-webfinger/
14371437+psingletary.com
14381438+14391439+ — 3:45 PM
14401440+i'll get the scoop on @Hilary Baumann or @byarielm one of these days
14411441+byarielm — 3:46 PM
14421442+what's my scoop
14431443+byarielm — 3:46 PM
14441444+why scoop me
14451445+geesawra — 3:46 PM
14461446+are you ice cream
14471447+same.supply — 3:46 PM
14481448+YES
14491449+byarielm — 3:46 PM
14501450+no but i want some
14511451+psingletary.com
14521452+14531453+ — 3:46 PM
14541454+you and hilary finding sites before me
14551455+blaine.bsky.social — 3:46 PM
14561456+Webfinger didn't land in activitypub because standards-wonks-who-shall-not-be-named believe that you can't be "cool" unless you own your own domain name, and that personal identity should be only attached to web addresses. But that's a story for another time. 😉
14571457+sharpie — 3:46 PM
14581458+this becomes a convo about private data
14591459+sorryforpartyrock.ing
14601460+14611461+ — 3:46 PM
14621462+i think lexicon driven development is good but sometimes that's not possible
14631463+flo.bit — 3:46 PM
14641464+blento still doesnt have a lexicon 😅
14651465+sorryforpartyrock.ing
14661466+14671467+ — 3:47 PM
14681468+i think for e.g. providing secret keys
14691469+geesawra — 3:47 PM
14701470+every atproto convo eventually converges to private data
14711471+sorryforpartyrock.ing
14721472+14731473+ — 3:47 PM
14741474+it's not atproto but it's also fine
14751475+evan.jarrett.net
14761476+14771477+ — 3:47 PM
14781478+yeah i'm kinda in the middle of migrating my records and have to wait for everyone to slowly move over
14791479+Jack Valinsky — 3:47 PM
14801480+yeah there are weird semantics around the atproto design where techically you have an account on every possible service now and in the future in a sense depending on how people implement the client... instructions unclear follow Obama on tangled
14811481+psingletary.com
14821482+14831483+ — 3:47 PM
14841484+does it need one though?
14851485+sri.xyz — 3:47 PM
14861486+🙁
14871487+evan.jarrett.net
14881488+14891489+ — 3:47 PM
14901490+called out oof
14911491+sorryforpartyrock.ing
14921492+14931493+ — 3:48 PM
14941494+thats so funny
14951495+@taurean.bryant.land — 3:48 PM
14961496+would love to show my latest fragrance and coffee reviews on blento btw 👀
14971497+psingletary.com
14981498+14991499+ — 3:48 PM
15001500+Not Everything Needs A Lexicon
15011501+sharpie — 3:48 PM
15021502+what is the fix for that?
15031503+Jack Valinsky — 3:48 PM
15041504+fig could just snipe people watching ufo feed
15051505+flo.bit — 3:48 PM
15061506+well ¯\_(ツ)_/¯ would probably be nice for other people to e.g. show blento cards somewhere else
15071507+sorryforpartyrock.ing
15081508+15091509+ — 3:48 PM
15101510+should i discontinue aktivi
15111511+hrmm
15121512+two minds about this et al
15131513+flo.bit — 3:49 PM
15141514+added to the list, but also feel free to submit a PR 🙂 https://github.com/flo-bit/blento
15151515+Jack Valinsky — 3:49 PM
15161516+@flo.bit tangled card for blento 🥺 👉 👈
15171517+*maybe I should write a pr 🧐
15181518+michaelthatsit — 3:50 PM
15191519+is anyone going to the ATProto conference?
15201520+geesawra — 3:50 PM
15211521+thanks yall for arranging this
15221522+@taurean.bryant.land — 3:50 PM
15231523+Thanks for hosting this as always!
15241524+same.supply
15251525+ is now a speaker. — 3:50 PM
15261526+Bryan Guffey
15271527+ is now a speaker. — 3:50 PM
15281528+Jack Valinsky — 3:50 PM
15291529+oh right
15301530+yeahhhh just a second
15311531+thisismissem.social — 3:50 PM
15321532+throwing you on the spot there 😂
15331533+psingletary.com
15341534+ is now a speaker. — 3:50 PM
15351535+same.supply — 3:50 PM
15361536+https://bsky.app/profile/did:plc:2xau7wbgdq4phuou2ypwuen7/post/3l7esaih44s2s
15371537+15381538+Tom Sherman (@tom.sherman.is)
15391539+Seriously mild take: ATProto web clients should serve a <link rel="alternate"> containing an at:// URI
15401540+15411541+I've just opened a PR to do this on Frontpage and atproto-browser. I'd for other clients to follow along with the convention!
15421542+15431543+github.com/likeandscrib...
15441544+15451545+Add AT URIs as alternate links by tom-sherman · Pull Request #172 · likeandscribe/frontpage
15461546+I'm trying to start a convention that allows tooling (eg. crawlers, browsers, extensions) to link the web representation of a record to it's canonical at:// URI. I see no better way to try ...
15471547+Image
15481548+15491549+Bluesky•10/25/24, 7:09 PM
15501550+Jack Valinsky — 3:50 PM
15511551+I've never used this interface for discord lol
15521552+psingletary.com
15531553+15541554+ — 3:50 PM
15551555+@same.supply it's really hard to hear you
15561556+thisismissem.social — 3:51 PM
15571557+<link rel=alternate>
15581558+michaelthatsit — 3:51 PM
15591559+plz do
15601560+thisismissem.social — 3:51 PM
15611561+that's what's being talked about, because then a web crawler can discover the atprotocol record for that page
15621562+michaelthatsit — 3:51 PM
15631563+ya boi needs office hours lol
15641564+thisismissem.social — 3:51 PM
15651565+there's maybe another microformat-y way to do that too
15661566+thisismissem.social
15671567+ is now a speaker. — 3:52 PM
15681568+sorryforpartyrock.ing
15691569+15701570+ — 3:52 PM
15711571+i think you know enough to do this tbh
15721572+more than me
15731573+byarielm — 3:52 PM
15741574+i'm da baby
15751575+geesawra — 3:52 PM
15761576+i love your songs and game consoles
15771577+psingletary.com
15781578+15791579+ — 3:53 PM
15801580+Let's speed round these statements so i can get on
15811581+byarielm — 3:53 PM
15821582+i thrive on chaos miss em lmao
15831583+byarielm — 3:53 PM
15841584+wat
15851585+thisismissem.social — 3:53 PM
15861586+Oh, specifically, the office hours I'd do would be public. i.e., I'm not giving 1:1 help
15871587+If you want 1:1 help, hire me 🙂
15881588+Bryan Guffey
15891589+15901590+ — 3:54 PM
15911591+haha i wish i had the MONEYYYY
15921592+thisismissem.social
15931593+ is now a speaker. — 3:54 PM
15941594+thisismissem.social
15951595+ is now a speaker. — 3:55 PM
15961596+michaelthatsit — 3:55 PM
15971597+"f*ck you, pay me" - Socrates
15981598+byarielm — 3:55 PM
15991599+is ozone the only option for moderation workflow on labelers rn btw? looks like skyware doesn't and idk if mary plans it for the atcute setup
16001600+n8 — 3:55 PM
16011601+thank you for showing up ❤️
16021602+psingletary.com
16031603+16041604+ — 3:55 PM
16051605+@thisismissem.social streamt o stream place and invite people with smokesignal
16061606+evan.jarrett.net
16071607+16081608+ — 3:55 PM
16091609+https://github.com/haileyok/osprey-for-atproto
16101610+GitHub
16111611+GitHub - haileyok/osprey-for-atproto: A high-performance safety rul...
16121612+A high-performance safety rules engine for real-time event processing at scale - haileyok/osprey-for-atproto
16131613+GitHub - haileyok/osprey-for-atproto: A high-performance safety rul...
16141614+psingletary.com
16151615+16161616+ — 3:56 PM
16171617+eli regularly gets tons of drive by
16181618+Jack Valinsky — 3:56 PM
16191619+I can try to talk about it, I think mine and @thisismissem.social 's thing is short to talk about if there is time
16201620+geesawra — 3:57 PM
16211621+eternal optimism by patrick
16221622+thisismissem.social — 3:57 PM
16231623+you started it, I just nerd sniped you, lol
16241624+sharpie — 3:57 PM
16251625+:o
16261626+pdewey.com — 3:57 PM
16271627+👀
16281628+sharpie — 3:57 PM
16291629+WHAT
16301630+HOW I GET IN THIS
16311631+@quillmatiq.com — 3:57 PM
16321632+love it
16331633+thisismissem.social — 3:58 PM
16341634+well, correction @Jack Valinsky you nerd sniped me so I nerd sniped you back
16351635+byarielm — 3:58 PM
16361636+so i shouldn't post the roomy link here?
16371637+cuz i was gonna
16381638+sharpie — 3:58 PM
16391639+@psingletary.com 👀
16401640+evan.jarrett.net
16411641+16421642+ — 3:58 PM
16431643+not our super secret roomy chat 🤫
16441644+sorryforpartyrock.ing
16451645+16461646+ — 3:58 PM
16471647+ok bye
16481648+Jack Valinsky
16491649+ is now a speaker. — 3:58 PM
16501650+thisismissem.social
16511651+ is now a speaker. — 3:59 PM
16521652+Jack Valinsky — 3:59 PM
16531653+I can't unmute
16541654+:/
16551655+thisismissem.social
16561656+ is now a speaker. — 3:59 PM
16571657+michaelthatsit — 3:59 PM
16581658+Honestly I'd love a youtube series on the ATProto just breaking down how it works.
16591659+@taurean.bryant.land — 3:59 PM
16601660+nailed it
16611661+🙌
16621662+thisismissem.social — 3:59 PM
16631663+production requires budget 🙁
16641664+zeu — 3:59 PM
16651665+I JUST GOT HEWW
16661666+flo.bit — 3:59 PM
16671667+🙌
16681668+pdewey.com — 3:59 PM
16691669+thanks for hosting again!
16701670+zeu — 3:59 PM
16711671+NOOOO
16721672+lmfao
16731673+geesawra — 4:00 PM
16741674+g2g to sleep
16751675+bye folks!
16761676+Bryan Guffey
16771677+16781678+ — 4:00 PM
16791679+or do we wanna go to voice chat with no stage?
16801680+Jack Valinsky
16811681+ is now a speaker. — 4:00 PM
16821682+Bryan Guffey
16831683+16841684+ — 4:00 PM
16851685+OHHH
16861686+I have a LOT OF INFO FOR THTAT
16871687+Jack Valinsky — 4:00 PM
16881688+firefox :/
16891689+byarielm — 4:00 PM
16901690+look we wanna hang and zeu is here now let us be
16911691+psingletary.com
16921692+16931693+ — 4:00 PM
16941694+Save it for next time the audience is alreayd kind of leaving
16951695+Jack Valinsky — 4:00 PM
16961696+yeah I just can't unmute
16971697+pdewey.com — 4:00 PM
16981698+also if anyone has feedback/suggestions for arabica feel free to shoot me a message on discord/bsky or file an issue
16991699+byarielm — 4:01 PM
17001700+huh
17011701+Mia (parakeet.at)
17021702+17031703+ — 4:02 PM
17041704+bi-directional nerdsniping
17051705+Jack Valinsky — 4:02 PM
17061706+I can't unmute
17071707+firefox bad
17081708+michaelthatsit — 4:02 PM
17091709+love this platform for that lol
17101710+Jack Valinsky — 4:03 PM
17111711+pds-operator
17121712+tynanpurdy.com — 4:03 PM
17131713+Is this gonna be the impetus for record versioning lol
17141714+Jack Valinsky — 4:03 PM
17151715+pds-operators
17161716+tynanpurdy.com — 4:04 PM
17171717+And content licensing!
17181718+Bryan Guffey
17191719+17201720+ — 4:04 PM
17211721+coming to that too tynan
17221722+Jack Valinsky — 4:04 PM
17231723+there was debate about whether it should use site.standard or be strictly its own thing and I think b/c of stuff like versioning and tombstoning it should be its own thing
17241724+n8 — 4:05 PM
17251725+idk about other mod (patrick s) but i have to bounce at 4:15 central, just fyi
17261726+thisismissem.social — 4:05 PM
17271727+I think you'd have a standard.site for viewing but not for managing/publishing/accepting
17281728+Jack Valinsky — 4:06 PM
17291729+Forwarded
17301730+another sensible option i think is to use the CID of the record as rkey whenever you create it and then make links back when you update. that way you get a content addressed history of the document and you just have another mutable record link to the currently active version
17311731+#pds-operators • Friday
17321732+nelind had this insight too
17331733+the pds operator account signs it to so they have a record?
17341734+nichoth — 4:07 PM
17351735+sounds like legal challenge not code
17361736+Jack Valinsky — 4:07 PM
17371737+nick has done stuff on attestation
17381738+thisismissem.social — 4:07 PM
17391739+yeah, you can basically have the app sign the record that they write to your pds for the acceptance
17401740+nichoth — 4:08 PM
17411741+the attestation use case is a big opportunity imo
17421742+Jack Valinsky — 4:09 PM
17431743+idk if the word is "collection" but the the lexicon should have a <nsid>/region/policy
17441744+17451745+sorry brain not lexiconing rn
17461746+my apologies Bryan what is your at handle in case I have questions about potential legal gotchas with this idea? thanks
17471747+Bryan Guffey
17481748+17491749+ — 4:10 PM
17501750+@chaosgreml.in
17511751+Jack Valinsky — 4:12 PM
17521752+yeah we need to make it simple and straightforward to be informed b/c we want some random student to host a project and not be scared b/c of regulations that they are doing it wrong
17531753+students are doing really cool stuff
17541754+yeah! that'd be cool
17551755+I will remember not to use firefox the next time for this hangout 😛
17561756+flo.bit — 4:14 PM
17571757+bye 🙂
17581758+michaelthatsit — 4:15 PM
17591759+enjoy!
17601760+@taurean.bryant.land — 4:15 PM
17611761+heading out, thanks yall!
17621762+Jack Valinsky — 4:15 PM
17631763+thanks for this
17641764+byarielm — 4:15 PM
17651765+yum
17661766+oh no
17671767+michaelthatsit — 4:15 PM
17681768+enjoy more?
17691769+byarielm — 4:15 PM
17701770+byeee all!
17711771+tynanpurdy.com — 4:15 PM
17721772+Thanks yall!
17731773+byarielm — 4:15 PM
17741774+i'ma go eat too sry bryan
17751775+tynanpurdy.com — 4:15 PM
17761776+Have a good Sunday Bryan
17771777+</discord chat>