Tech Talk: Builders of ATProtocol v1

Welcome back to ATProtocol Tech Talks! For the November 7th edition, we'll be hearing from a number of builders who are creating on top of ATProtocol. 3 blogs and a client!

Tech Talk: Builders of ATProtocol v1
Photo by Marcel Strauß / Unsplash

Welcome back to ATProtocol Tech Talks! For the November 7th edition, we'll be hearing from a number of builders who are creating on top of ATProtocol.

We'll have each builder talk a bit about what they've built, how they've built it, and why, and do a screenshare of demos. As always, questions are welcomes, and we'll do live Q&A with everyone on the call.

Meet the Builders

Samuel @samuel.bsky.team

Austin @aparker.io

Pouria @pouriade.com

You can also RSVP on Smoke Signal »

Video

Playlist of all tech talks is on the video page. Follow youtube.com/@atprotocoldev.

Chatlog

09:04:15 From Austin Parker : It appears to be recording
09:04:21 From Vriska : Hey everyone
09:05:16 From nandi.dads.lol : 25 people woo woo
09:07:41 From Boris Mann : Feel free to stack your questions here
09:07:54 From Dan Okkels Brendstrup : Reacted to "Feel free to stack y..." with 👍
09:09:22 From Boris Mann : https://whtwnd.com/
09:10:46 From Ezra Henley : I have one
09:11:05 From Bryan Newbold (Bluesky) : which account do you use to host your blog? @mozzius.dev?
09:11:12 From nandi.dads.lol : love the diagram
09:11:41 From rafael : Is there a tool/way to import existing posts from other blog (keeping the correct dates, etc)?
I dropped for 1 min so sorry if you talked about that
09:11:58 From Bryan Newbold (Bluesky) : ah, on main:
https://astrolabe.at/at/samuel.bsky.team/com.whtwnd.blog.entry
09:12:14 From Boris Mann : All about putting all Lexicons on main
09:12:14 From Ryan Barrett : hah yes, age old request!
09:12:17 From Dan Okkels Brendstrup : Compared to just having Markdown files in the same repo as the Next.js site, what are the advantages of putting them on the PDS? (Apart from “being on the protocol”, of course).
09:12:17 From Ryan Barrett : jetstream does this!
09:12:31 From Bryan Newbold (Bluesky) : (I can help w/ this question also)
09:13:00 From Boris Mann : Strange, wonderful! /me hugs CBOR
09:13:49 From Tom : You should try drainpipe for that 😅
09:14:03 From Rudy Fraser : Is the “X mins read” from white wind or something you’re doing?
09:14:56 From Boris Mann : Reacted to "Is there a tool/way ..." with ❔
09:15:31 From Boris Mann : I’m tagging questions and will call on you
09:15:36 From Boris Mann : Reacted to "I’m tagging question..." with ❔
09:15:43 From Boris Mann : Feel free to use hand protocol, too
09:15:51 From Boris Mann : Reacted to "Is the “X mins read”..." with ❔
09:15:56 From Bryan Newbold (Bluesky) : w/r/t "only getting some record types":
we want to support that on the "firehose" proper in addition to jetstream, and have it work with signatures/authenticity
a related issue to "filtering the firehose" is "backfill just the relevant stuff". that will probably mean a way to get a CAR slice for specific record types, and an index of which repos/accounts have which record types
09:16:36 From Vriska : (not sure if my reply went through, but "yeah, thank you!")
09:16:53 From Chad Kohalyk : That could be a question for WHTWND
09:17:10 From Boris Mann : Reacted to "Compared to just hav..." with ❔
09:17:39 From Vriska : I know BlueArk uses that feature.
09:18:50 From Ryan Barrett : I don't see it on whitewind itself, https://whtwnd.com/mozzius.dev
09:19:16 From Laurens Hof : Reacted to "I don't see it on wh..." with 👀
09:19:23 From Bryan Newbold (Bluesky) : you get a nice AT URI to reference the blog posts, which is nifty
09:19:29 From Nick Gerakines (he/him) : I have comments on the benefits of it being in a pds
09:19:32 From Ezra Henley : Reacted to "you get a nice AT UR..." with 👍
09:19:39 From Bryan Newbold (Bluesky) : and potentially makes it easy to move conent around between providers
09:19:44 From Laurens Hof : Reacted to "you get a nice AT UR..." with 👍
09:19:44 From Austin Parker : PDSATEOAS
09:19:52 From jimpick.com : lol
09:19:53 From Dan Okkels Brendstrup : Reacted to "PDSATEOAS" with 😃
09:19:53 From Ezra Henley : All replies on the blog post on Whtwnd are bluesky posts themselves, too
09:20:09 From jimpick.com : Reacted to "PDSATEOAS" with 😃
09:20:24 From Ira : You could tag blogs by tags/metadata so they could be collated/groups to create communities of blogs
09:21:01 From Ryan Barrett : and now webmention!
09:21:08 From Chad Kohalyk : Trackbacks FTW
09:21:14 From Vriska : I think a reason for it is redundancy. Hosting your posts becomes more than your own problem.
09:21:27 From Boris Mann : Replying to "I don't see it on wh..."

https://whtwnd.com/samuel.bsky.team
09:21:43 From Ryan Barrett : Reacted to "https://whtwnd.com/s..." with 🙏
09:21:56 From Boris Mann : Replying to "I don't see it on wh..."

And technically, WhtWind does “author only” posts so they don’t show on WhtWind … but will get displayed on the blog
09:22:07 From Boris Mann : Reacted to "PDSATEOAS" with 😃
09:22:12 From Nick Gerakines (he/him) : Reacted to "Trackbacks FTW" with ☝️
09:22:15 From Nick Gerakines (he/him) : Reacted to "and now webmention!" with ☝️
09:22:25 From Bryan Newbold (Bluesky) : I have to bounce, good to see folks! 💜
09:22:32 From Chad Kohalyk : Reacted to "I have to bounce, go..." with 👋
09:22:34 From Nick Gerakines (he/him) : Reacted to "I have to bounce, ..." with 👋
09:22:37 From Laurens Hof : Reacted to "I have to bounce, go..." with 👋
09:22:37 From rafael : Reacted to "I have to bounce, go..." with 👋
09:22:44 From Ryan Barrett : Reacted to "I have to bounce, go..." with 👋
09:22:58 From Ezra Henley : Having your blog connected to your DID (identity) which can be connected to a domain is really useful as well. Imagine having different blogs being different subdomains of your main domain.
09:23:07 From Rudy Fraser : Reacted to "I have to bounce, go..." with 👋
09:23:33 From Nick Gerakines (he/him) : Careful, say RSS 3 times and Dave shows up
09:23:39 From Chad Kohalyk : Reacted to "Careful, say RSS 3 t..." with 😄
09:23:43 From Ryan Barrett : Reacted to "Careful, say RSS 3 t..." with 😱
09:23:46 From Pouria Delfanazari : Reacted to "Careful, say RSS 3 t..." with 😄
09:23:48 From Boris Mann : Replying to "Careful, say RSS 3 t..."

😂
09:23:54 From Dan Okkels Brendstrup : Reacted to "Careful, say RSS 3 t..." with 😄
09:24:11 From Chad Kohalyk : Reacted to "Careful, say RSS 3 t..." with 👻
09:24:42 From brunoruchiga : If you want to implement "likes" similar to bluesky (aggregated data from a likes lists from PDSs of other people), what would be the next steps in this implementation? This would require your own database, right?
09:24:47 From Hilary Baumann - FascinationDesign.com : Tom’s tool helped me understand how some of the content exists https://atproto-browser.vercel.app/
09:25:10 From Nick Gerakines (he/him) : Reacted to "Tom’s tool helped..." with ☝️
09:25:15 From Tom : Reacted to "Tom’s tool helped me..." with ❤️
09:25:19 From Laurens Hof : Reacted to "Careful, say RSS 3 t..." with 😄
09:25:20 From Ryan Barrett : Reacted to "Tom’s tool helped me..." with ❤️
09:25:43 From Vriska : Replying to "Tom’s tool helped me..."

I love looking at people in this community's ATProto Browser pages because I can discover all the fun non-app.bsky lexicons
09:25:51 From Chad Kohalyk : Replying to "Tom’s tool helped me..."

This is good. If you look at my https://linkat.blue/chadkoh.com you will see a couple more of these PDS browsing tools
09:26:08 From Hilary Baumann - FascinationDesign.com : Reacted to "I love looking at pe..." with 👍
09:26:12 From Hilary Baumann - FascinationDesign.com : Reacted to "This is good. If you..." with 👍
09:26:12 From nandi.dads.lol : AT is @
09:26:23 From nandi.dads.lol : A.T. people are sinners
09:26:36 From Vriska : Reacted to "A.T. people are sinn..." with 😂
09:26:40 From Ezra Henley : Reacted to "A.T. people are sinn..." with 😂
09:26:40 From Tom : Reacted to "A.T. people are sinn..." with 😂
09:26:42 From Daniel Holmgren (Bluesky) : Reacted to "A.T. people are sinn..." with 😂
09:26:49 From Samuel : Alice’s fork: https://github.com/aliceisjustplaying/whtwnd-blog
09:26:55 From Ira : Reacted to "Alice’s fork: https:…" with ❤️
09:26:57 From Hilary Baumann - FascinationDesign.com : Reacted to "Alice’s fork: https:..." with ❤️
09:27:42 From Boris Mann : I love the design!
09:28:04 From Vriska : Replying to "I love the design!"

Same, love that retrocomputing vibe
09:28:21 From Boris Mann : Yaaassss two records
09:28:53 From Dan Okkels Brendstrup : Reacted to "A.T. people are sinn..." with 😂
09:29:27 From Ryan Barrett : love it! the Indieweb people call this backfeed, https://indieweb.org/backfeed
09:29:36 From Vriska : addPost.ts?
09:29:44 From Chad Kohalyk To Boris Mann(privately) : Hmmmm showing a 9min TIME LEFT countdown timer… . 🙁
09:29:52 From Boris Mann : Aargh. So, I had to switch my Zoom account to a personal one, and I think it’s confused about paid accounts.
09:30:09 From Chad Kohalyk To Boris Mann(privately) : Okay this is on the Fission one? I can go in and just pay real quick
09:30:14 From Chad Kohalyk To Boris Mann(privately) : Hopefully it works
09:30:18 From Laurens Hof : Reacted to "Aargh. So, I had to ..." with 😅
09:30:18 From Boris Mann To Chad Kohalyk(privately) : I paid already!
09:31:49 From Dan Okkels Brendstrup : I wanna try this on Deno Deploy using Deno KV (or the Cache API) for caching.
09:32:12 From Boris Mann : Replying to "Aargh. So, I had to ..."

Copy this down and we’ll come back to my personal area
09:32:24 From Samuel : Forgot to mention - I use Next.js’ built-in image optimisation to handle images. Vercel effectively CDNs the blobs for you
09:32:31 From Vriska : Reacted to "Forgot to mention - ..." with 👍
09:32:55 From Vriska : I'm gonna star just for the nice frontend
09:32:59 From Ryan Barrett : fun to compare multiple different blog-on-atproto designs
09:33:48 From Hilary Baumann - FascinationDesign.com : Reacted to "Forgot to mention - ..." with 👍
09:33:50 From Boris Mann : https://github.com/austinlparker/aparker.io
09:34:09 From Tom : rel="alternate" for records
09:34:29 From Ryan Barrett : or foreign key constraints for sidecar records
09:34:33 From Ryan Barrett : yeah feels like that way lie dragons
09:35:26 From Nick Gerakines (he/him) : Thoughts on common structures and traits
09:35:44 From nandi.dads.lol : activity stream lol
09:36:01 From Tom : Reacted to "activity stream lol" with 😳
09:36:39 From Ryan Barrett : alternatively "get all sidecar records," ie get records in this repo with the same rkey across all types, is totally doable in PDSes/appviews and wouldn't require protocol or lexicon changes
09:37:05 From Tom : Replying to "alternatively "get a..."

oh that's neat
09:37:34 From nandi.dads.lol : traits mentioned
09:37:37 From Vriska : Reacted to "alternatively "get a..." with 👀
09:37:43 From Chad Kohalyk : Reacted to "traits mentioned" with 🦀
09:37:44 From Ezra Henley : Reacted to "traits mentioned" with 😂
09:37:45 From Tom : we're rust maxxing
09:37:47 From Vriska : Reacted to "traits mentioned" with 🦀

09:37:53 From Rudy Fraser : Reacted to "traits mentioned" with 🦀
09:37:55 From Tom : Reacted to "traits mentioned" with 🦀
09:37:57 From Boris Mann : Copy this link down, we’ll need to go out and back
09:38:05 From Ryan Barrett : Replying to "alternatively "get a..."

not sure how useful though. you can't easily do much with lexicons you don't understand, and the ones you do understand, you can already ask for them explicitly
09:38:28 From Chad Kohalyk : I saved a copy of this whole chat so far @Boris Mann
09:38:36 From Ira : Reacted to "alternatively "get a…" with 👀

09:44:09 From Dan Okkels Brendstrup : Reacted to "Is there an F# SDK y..." with 🤓
09:44:45 From Pouria Delfanazari : https://www.pfrazee.com/blog/why-facets
09:46:00 From Boris Mann : Replying to "Hey that link didn’t..."

Yeah, sorry, Zoom is very confused
09:46:16 From Vriska : "Here's a thing, you figure it out."
09:46:52 From nandi : "developers and people"
09:47:08 From Vriska : Replying to ""developers and peop..."

Developers aren't people, they're furries :P
09:47:27 From nandi : Reacted to "Developers aren't ..." with 😼
09:48:26 From Ezra Henley : I might have one more question
09:48:27 From nandi : atomic fedora
09:48:50 From Miranda Harding : thank you!
09:48:59 From Ezra Henley : But actually it can wait
09:49:13 From nandi : we can hearu
09:50:28 From Dan Okkels Brendstrup : I recognized the name and voice and realized I’d just heard Austin on a very amusing podcast episode of Ship It with Justin and Autumn — if anyone wants more Austin 😄

https://changelog.com/shipit/128
09:50:39 From Boris Mann : Reacted to "I recognized the nam..." with 🙌
09:51:25 From Boris Mann : https://useouranos.app
09:51:29 From Austin Parker : Replying to "I recognized the nam..."

Yeah that was a fun one
09:53:54 From Austin Parker : Yeah the tumblr-style tags are an additional field
09:54:00 From Laurens Hof : I love atproto’s tradition that every feature gets implemented by 3p clients first haha
09:54:06 From Daniel Holmgren : Reacted to "I love atproto’s tra..." with 👆
09:54:08 From Chad Kohalyk : Reacted to "I love atproto’s tra..." with 🎯
09:54:11 From Austin Parker : Replying to "I love atproto’s tra..."

ikr
09:54:11 From Boris Mann : All about getting more post count!
09:54:15 From Rudy Fraser : Reacted to "I love atproto’s tra..." with 👆
09:54:17 From Ezra Henley : Reacted to "I love atproto’s tra..." with 👆
09:54:21 From Govind Mohan : Reacted to "I love atproto’s ..." with 👆
09:54:25 From Chad Kohalyk : Replying to "I love atproto’s tra..."

Benefits of an open system! We don’t have to wait
09:54:26 From Tom : Reacted to "I love atproto’s tra..." with 👆
09:54:30 From Vriska : Reacted to "I love atproto’s tra..." with 👆
09:54:50 From Hilary Baumann - FascinationDesign.com : Reacted to "I love atproto’s tra..." with 👆
09:55:00 From Austin Parker : Replying to "I love atproto’s tra..."

I think moz did greysky gifs in a similar way
09:55:54 From Nick Gerakines (he/him) : AWE YEAH
09:56:00 From Boris Mann : https://smokesignal.sonaruo.com/
09:56:10 From Tom : Reacted to "https://smokesignal...." with 😯
09:56:15 From Will Corrigan : Reacted to "https://smokesigna..." with 🎉
09:56:31 From Ira : tags are not searchable/indexed in Bluesky, right?
09:56:39 From Laurens Hof : Reacted to "https://smokesignal...." with 🎉
09:56:58 From Tom : that is so sick
09:56:58 From jimpick.com : Very nice
09:57:01 From Austin Parker : Replying to "tags are not searcha..."

Inline tags are. I actually think external ones are as well, maybe?
09:57:01 From Will Corrigan : so cool
09:57:03 From Laurens Hof : Oh hell yes
09:57:06 From Vriska : Neat
09:57:21 From Austin Parker : dope
09:57:32 From Will Corrigan : get to follow boris everywhere now
09:58:06 From Boris Mann : Replying to "get to follow boris ..."

Just wait until I get someone to make a Recipes / Cooking Lexicon!
09:58:10 From Boris Mann : Replying to "get to follow boris ..."

Foodspotting!
09:58:15 From Hilary Baumann - FascinationDesign.com : Reacted to "Just wait until I ge..." with 👍
09:58:19 From Ezra Henley : would bsky be able to implement this in a way that pulls all lexicons that implement events, not just smokesignal's, as long as they have certain traits?
09:58:39 From Ira : 💥 cal.com on Bluesky soon?
09:58:48 From Ezra Henley : Reacted to "💥 cal.com on Bluesk..." with 👏
09:58:52 From Chad Kohalyk : Reacted to "💥 cal.com on Bluesk..." with 💯
09:58:54 From Austin Parker : Replying to "would bsky be able t..."

Open Frames
09:59:08 From V : Is anything about this idea of traits written down anywhere? Or is it just being discussed?
09:59:09 From Austin Parker : Replying to "would bsky be able t..."

Which I guess is coming up now!
09:59:12 From Nick Gerakines (he/him) : Reacted to "would bsky be able..." with 🙌
09:59:30 From Vriska : Replying to "Is anything about th..."

May8e someone should make a thread in the discord
10:00:15 From Will Corrigan : Reacted to "Just wait until I ..." with 👍
10:00:34 From Rudy Fraser : Frames is the coolest idea from Farcaster. Haven’t used it before but collaboratively playing a game from within a feed is cool.
10:00:49 From Austin Parker : It’s kinda like rich slack/discord embeds if you’re familiar with them
10:00:51 From Chad Kohalyk : Replying to "Frames is the cooles..."

Yep, it is super cool
10:01:16 From V : Replying to "Is anything about th..."

Post the link here if you do! Or in the email
10:01:40 From Nick Gerakines (he/him) : Kind of reminds me of the slack ui components
10:01:46 From Nick Gerakines (he/him) : Reacted to "It’s kinda like r..." with ☝️
10:01:51 From Nick Gerakines (he/him) : jinx @austin
10:01:56 From Austin Parker : heh
10:02:33 From Austin Parker : It is very cool; I think there’s a lot of ecosystem stuff that has to happen to get there (tfw you think about how inconsistent opengraph support is across everything)
10:03:44 From Austin Parker : This is very dope tho
10:03:58 From Vriska : Replying to "Is anything about th..."

https://discord.com/channels/1097580399187738645/1304143507354816602
10:04:02 From Laurens Hof : Yeah this is super fun to see where people will take it as well
10:04:13 From Chad Kohalyk : https://www.openframes.xyz/
10:05:14 From Ezra Henley : I've wanted this for ages!
10:05:18 From Austin Parker : This is very cool
10:05:23 From Vriska : Oh hell yeah
10:05:25 From Govind Mohan : this is prob my fav feature
10:05:34 From Tom : how did you get hold of the Frontpage roadmap
10:05:39 From Samuel : Replying to "I love atproto’s tra..."

Yep and then backported to the main app 🙂
10:05:46 From Samuel : Very cool!
10:05:53 From jimpick.com : Reacted to "I love atproto’s tra..." with 🎯
10:06:00 From Boris Mann : Reacted to "how did you get hold..." with 😂
10:06:04 From Will Corrigan : Reacted to "how did you get ho..." with 😂
10:06:24 From Ira : Comments on the topic?
10:06:26 From Ezra Henley : I have a question
10:06:41 From Ira : Reacted to "I love atproto’s tra…" with 🎯
10:06:54 From Nick Gerakines (he/him) : Q: How does this work with authenticated server-initiated API calls?
10:09:51 From Ryan Barrett : paging Ted Nelson
10:09:56 From Boris Mann : BACKLINKS
10:10:00 From Daniel Holmgren : Reacted to "BACKLINKS" with 👆
10:10:19 From Austin Parker : Well if they emitted lexicons
10:10:24 From Boris Mann : PINGBACKS
10:10:50 From Dan Okkels Brendstrup : Reacted to "paging Ted Nelson" with 🤘
10:13:01 From Ryan Barrett : didn't realize you were here @Daniel Holmgren, I should have just shut up and pointed to you instead of shooting my mouth off 😆
10:13:11 From Boris Mann : PDS cached references over time. And re-scanning as needed.
10:13:14 From Daniel Holmgren : Reacted to "didn't realize you w..." with 😆
10:13:25 From Ryan Barrett : 5 min left!
10:13:47 From Daniel Holmgren : Replying to "didn't realize you w..."

not at all you were spot on
10:14:01 From Austin Parker : IS EVERY PDS AN OIDC PROVIDER :D :D 😄
10:14:17 From Nick Gerakines (he/him) : Reacted to "IS EVERY PDS AN OI..." with ☝️
10:14:24 From Austin Parker : My tailnet would thank you if it was
10:14:45 From Govind Mohan : Reacted to "IS EVERY PDS AN OI..." with 👀
10:15:24 From Austin Parker : Then we start decentralizing the PDS so you can run local copies and remote ones
10:15:33 From Austin Parker : :sicko:
10:15:45 From Nick Gerakines (he/him) : Reacted to "Then we start dece..." with 😂
10:16:04 From Chad Kohalyk : Before we close:

If any of you are near Seattle, we are going to have an in-person DWeb meetup on Nov 19. ATProto will be discussed, and some of the people on this call with actually be there. So if you are around, come on out!

https://lu.ma/ny799rqe
10:16:28 From Miranda Harding : ty!

Resources

Hailey @haileyok.com ended up not being able to make it, but you can check out her Blug, blog using Remix, Tailwind, and Redis https://haileyok.com/, source on Github https://github.com/haileyok/blug.

Alice made a more templated version of Samuel's blog, available at https://github.com/aliceisjustplaying/whtwnd-blog

Ouranos experiments are at https://github.com/ATProtoApps/sonaruo, including branches for Smoke Signal integration and Shiki code syntax highlighting.

Stay tuned for an Open Frames special session on discussing embedding rich content in AT Protocol.