WEBVTT

00:00.000 --> 00:11.000
Who is Casey, who works on a project or has worked on a project called Post Marks?

00:11.000 --> 00:17.360
I contributed a little bit to Post Marks and it's exciting to have you in Europe for the

00:17.360 --> 00:19.960
first time as well I understand.

00:19.960 --> 00:21.960
So just happy in my cup.

00:50.960 --> 01:18.960
If you're coming in then please do join us and come in and find a seat and make quiet for our speaker.

01:19.960 --> 01:25.960
Thank you very much.

01:25.960 --> 01:31.960
I think you are mute.

01:31.960 --> 01:36.960
No, I should have told you.

01:36.960 --> 01:38.960
All right.

01:38.960 --> 01:39.960
Hello everybody.

01:39.960 --> 01:40.960
My name is Casey Kolderup.

01:40.960 --> 01:42.960
I'm really happy to be here today.

01:42.960 --> 01:47.960
It's my first time in Europe so this has been an exciting trip for me.

01:48.960 --> 01:53.960
It's also just great to see so many cool projects here and so many questions that I'm going to ask in this presentation.

01:53.960 --> 01:55.960
Have been answered by many of you have talked today.

01:55.960 --> 01:58.960
So thank you for giving me so many new ideas already.

01:58.960 --> 02:00.960
I'm here to talk about non-microblogging software.

02:00.960 --> 02:06.960
Design on activity pub and I'll talk about the inherent trade-offs of the interoperability.

02:06.960 --> 02:09.960
But first, I'll talk a little bit about myself.

02:09.960 --> 02:12.960
I'm Casey, like I said, I live in Portland, Oregon in the United States.

02:12.960 --> 02:15.960
I'm a developer of a small Fediverse app called Post Marks.

02:15.960 --> 02:20.960
That you might have heard of, but for the purposes of this talk, I need to go back a little bit further and my time on the internet.

02:20.960 --> 02:24.960
I was introduced to the open web as an adolescent in the early 90s.

02:24.960 --> 02:26.960
GTE was my first ISP.

02:26.960 --> 02:31.960
I watched the birth of blogging and the explosion of opportunity that was web 2.0 as a teenager.

02:31.960 --> 02:33.960
I learned how to code as I can make my own websites.

02:33.960 --> 02:37.960
And then the 2000s I went to Purdue University to get a bachelor's degree in computer science.

02:37.960 --> 02:40.960
I treated it as a trade school even though it was university.

02:40.960 --> 02:44.960
I really wanted to get out there and just learn what I needed to know to build the web because that was what I wanted to do.

02:44.960 --> 02:49.960
Now in the 2020s, I'm an engineer who works on glitch.

02:49.960 --> 02:52.960
It's a website that aims to make it possible for everyone to build the web.

02:52.960 --> 02:57.960
It's a platform where people who want to learn how to make websites and other apps that live on the open web,

02:57.960 --> 03:02.960
whether that means going in and changing a few lines of text on a web page and some colors in a CSS file,

03:02.960 --> 03:06.960
or building your own web socket based web XR and multiplayer game from scratch.

03:06.960 --> 03:11.960
Whatever you make will provide hosting for it and a community where you can share what you've built.

03:12.960 --> 03:15.960
In my free time, I'm on their hobbies.

03:15.960 --> 03:20.960
I've worked with APIs like Twitter, Discord, and Macedon to build generative bots that make art or jokes.

03:20.960 --> 03:24.960
I've built CMS's to host blog posts and create a variety that I've done.

03:24.960 --> 03:27.960
My first ever PHP app built in 2001 was a link blog,

03:27.960 --> 03:31.960
because I was obsessed with those cocky.org and meme pools in my first favorite websites.

03:31.960 --> 03:36.960
As a user, I spent countless hours in IRC, not technically the web, but you know, it's related.

03:36.960 --> 03:39.960
Slack and Discord channels on PHP VV forums.

03:39.960 --> 03:42.960
I'm micro blogging networks like Twitter and Macedon.

03:42.960 --> 03:45.960
On unique platforms like Google reader and co-host, RIP to Eggbug.

03:45.960 --> 03:49.960
Many sites that I hear myself and others used to explain how we spent time on the web.

03:49.960 --> 03:53.960
But one thing I think that goes too often unsaid is how much time I am.

03:53.960 --> 03:57.960
My friends have spent exploring the fullness of what happens off of those platforms.

03:57.960 --> 04:03.960
Following hyperlinks in a web browser and seeing the full potential of the technologies that give us this world online.

04:04.960 --> 04:09.960
So it's been good for me to remember the thing I loved most about the web is the breadth of experiences that are enabled.

04:09.960 --> 04:17.960
This is Archive Stumbler, a project I built last year, which lets you browse Archive.org collections randomly, which Archive.org actually doesn't support.

04:17.960 --> 04:26.960
There's no random feature on it, which is just really fun way to kind of get a little serendipity and see what else is out on the various collections available there.

04:26.960 --> 04:32.960
I've certainly read my fair share of blogs, dating back to meeting someone and reading their entire live journal and chronological order.

04:32.960 --> 04:41.960
The web makes it possible to host multimedia interactive games and weird exploreable websites that unfolded unexpected ways as you search their corners for secrets.

04:41.960 --> 04:47.960
That variety when it's present makes being online feel to me vital, diverse, exciting and engaging.

04:47.960 --> 04:51.960
We're able to find not just a variety of content, but a variety of experiences.

04:51.960 --> 04:56.960
What I'm here to talk about today is the result of reflecting on that breadth of design and experience the web can provide.

04:56.960 --> 05:04.960
In the face of what I've realized I spent so much of my free time recently doing and what the project that brought me here has missed out on taking part.

05:04.960 --> 05:09.960
The end of 2023, I released the first versions of a platform I called Postmarks.

05:09.960 --> 05:12.960
Postmarks is a social bookmarking platform that lives on the open web.

05:12.960 --> 05:19.960
You probably know what a bookmark is, but just for the sake of completeness, we're talking about as a URL has some metadata associated with it.

05:19.960 --> 05:26.960
Let's you attach excerpts of that site or describe the contents and then usually categorize it in relation to other bookmarks that you have.

05:26.960 --> 05:31.960
By default, bookmarks you create or visible to anyone looking at your postmark site on the web.

05:31.960 --> 05:40.960
But those bookmarks are also broadcast to other introduces servers via the activity pub protocol, which makes postmarks not just a social bookmarking app, but a federally enabled bookmarking app.

05:40.960 --> 05:42.960
Social bookmarking is hardly a new idea.

05:42.960 --> 05:47.960
I built it intentionally with many similarities to the first social bookmarking app on the web delicious.

05:50.960 --> 05:52.960
Yeah, it deserves it.

05:52.960 --> 05:54.960
Delicious was a tool that grew out of a group link plug-in site.

05:54.960 --> 05:57.960
I was, as I said, obsessed with called Mean Pool.

05:57.960 --> 06:01.960
It helped its founder Joshua Shactor, organized URLs that he wanted to store and categorize.

06:01.960 --> 06:06.960
Delicious may not have been a platform that became a household name, especially with that weird domain name.

06:06.960 --> 06:12.960
But as an example, if it's influenced the way that we used the word tag to refer to keyword metadata, that actually comes from delicious.

06:12.960 --> 06:14.960
I think a lot of people don't realize.

06:14.960 --> 06:22.960
I was a delicious user. It was really cool as someone who was in college at the time and was using more than one computer for the first time, which like, now we don't even think about.

06:22.960 --> 06:25.960
But back then it was like so exciting and go to the computer lab and have my bookmarks there.

06:25.960 --> 06:28.960
Go back to my door and have them at home.

06:28.960 --> 06:34.960
Knowing other people on the site and browsing their tags and browsing their bookmarks, gave it kind of a social component.

06:34.960 --> 06:38.960
But for me, it was first and foremost a kind of a form of external memory.

06:38.960 --> 06:43.960
I was sinking things to the cloud before we even talked about things that way.

06:43.960 --> 06:48.960
Delicious had a sort of tortured history as it got acquired and resold multiple times in different companies.

06:48.960 --> 06:53.960
In 2009, another developer looked at that and kind of had the classic, I could make that thought.

06:53.960 --> 06:55.960
And did, and the result was called pinboard.

06:55.960 --> 07:02.960
A very similar website, but one that came with slow growth business ideals that seemed to promise it would stay available as a sustainable business for a long time.

07:02.960 --> 07:04.960
And it still available online today.

07:04.960 --> 07:09.960
I moved to pinboard shortly after it's launched and I used it happily for years.

07:10.960 --> 07:15.960
When it comes to the Fediverse, I've used mass and on both publicly and privately since 2017 and a lot of different forms.

07:15.960 --> 07:18.960
I first tried developing the activity pub protocol in 2022.

07:18.960 --> 07:21.960
Thanks to Jerry's, because he needs activity pub service tutorial.

07:21.960 --> 07:25.960
And the great information available at activity pub.rocks, which is a great site if you haven't seen it.

07:25.960 --> 07:30.960
I ended up making a demo of what would eventually become post marks just before Christmas 2022.

07:30.960 --> 07:32.960
I kept hacking on it in my free time throughout the month of the fall.

07:32.960 --> 07:38.960
And eventually shared news that I was released in an initial version just recently in September 2023, which I guess is over year ago now.

07:38.960 --> 07:40.960
The response was bigger than I was expecting.

07:40.960 --> 07:47.960
And then the months that followed I took a number of great contributions from friends and new acquaintances that fixed activity pub related bugs, added full tech search.

07:47.960 --> 07:48.960
All kinds of other cool stuff.

07:48.960 --> 07:50.960
I think a few here in the room right now.

07:50.960 --> 07:51.960
Thank you very much.

07:51.960 --> 07:57.960
And Andy, I know, has helped with a lot of the sort of governance and code of conduct stuff, which I really appreciate.

07:57.960 --> 08:02.960
Unlike many software projects that I've worked on, my goals for post marks are actually really concrete.

08:02.960 --> 08:04.960
I know what I want its end state to look like.

08:04.960 --> 08:10.960
I want to get to that point and kind of end it and then make it available to fork and give it a new life from there.

08:10.960 --> 08:18.960
In 2025, I'm hoping to finish off what I see is that original vision for the project so that we can decide what to do next.

08:18.960 --> 08:25.960
When I sat down to start post marks, I gave myself three core ideas that I decided right away where the most important things to the project.

08:25.960 --> 08:31.960
Things that would define what it kept it useful to the kind of user I had in mind, what would keep me moving forward and developing it.

08:31.960 --> 08:35.960
And we'll get people including me excited about using it over any other bookmarking platform.

08:35.960 --> 08:42.960
After going over the list, I'll explain each one of them in more detail and the impacts that one in particular had on the project as a whole.

08:42.960 --> 08:45.960
The first is actually single user instances.

08:45.960 --> 08:52.960
Unlike most activity pop apps, post marks is a platform where a given instance or server is home to one actor or user.

08:52.960 --> 08:58.960
That is to say if you want to use post marks, you're going to set it up for yourself or find someone who will set it up just for you.

08:58.960 --> 09:00.960
The setup process is actually pretty simple, though.

09:00.960 --> 09:04.960
And using the glitch platform, there are literally four required steps.

09:04.960 --> 09:06.960
You take two random values and generate them.

09:06.960 --> 09:08.960
You put them into a .env file.

09:08.960 --> 09:14.960
You put a user name into a JSON file and then you rename a file to signal to the server that everything is ready to go and you're ready to launch the server.

09:14.960 --> 09:16.960
With Litch, you can remix the base project.

09:16.960 --> 09:19.960
It's available at postmarks.litch.me.

09:19.960 --> 09:25.960
And you can do all that in your web browser using the glitch IDE in less than five minutes.

09:25.960 --> 09:37.960
We'll also talk about how I decided while working on postmarks that, despite the fact that for career reasons I've learned how to make single page web applications with fancy JavaScript features and all kinds of slick auto updating things,

09:37.960 --> 09:40.960
I was going to use what I considered old techniques for postmarks.

09:40.960 --> 09:45.960
This was less of a principal decision than it was a practical one, but either way I'm still convinced it was the right choice.

09:45.960 --> 09:49.960
The third principle is interoperability with the developers.

09:49.960 --> 09:53.960
It occurred to me that since I was using activity pub, I should probably do that.

09:53.960 --> 10:01.960
It would be possible if you know anything about activity pub design to build something on a security pub in a way that mass it on would never even see it.

10:01.960 --> 10:04.960
You could follow an actor from them to their followers, actors available.

10:04.960 --> 10:12.960
But then the activity the actor is performing would never be available to mass it on via the notes that it kind of knows how to understand.

10:13.960 --> 10:15.960
Interop the seem to have a number of advantages.

10:15.960 --> 10:20.960
In a way, and in a way, and in the thing that kept development working the fastest for me.

10:20.960 --> 10:24.960
But it's also led to some of the most difficult challenges I've faced in designing postmarks.

10:24.960 --> 10:28.960
But first, let's go back to single user instances.

10:28.960 --> 10:33.960
If you have any opinions about mass it on, some of them are probably related to its decentralized model and the concept of instances.

10:33.960 --> 10:40.960
On mass it on in software that works activity pub, instances are most easily represented by the domain name that makes up the second half of your username.

10:40.960 --> 10:45.960
But the actual impact goes further than that, which a lot of people don't understand when they're first signing up.

10:45.960 --> 10:53.960
And instances are collection of users who store their data on the same server, who abide some set of rules, and who are subject to administration by the instances leadership.

10:53.960 --> 10:59.960
And who in most cases are seen as belonging to a group of some kind, whether it's a clearly stated entity group, a shared interest,

10:59.960 --> 11:04.960
or just even sort of a reputation or attitude about how they behave on the Fediverse.

11:04.960 --> 11:06.960
Instances are home to communities.

11:06.960 --> 11:11.960
Like most communities, instances experience to growth and decay, they go through good times and bad.

11:11.960 --> 11:16.960
They're also subject to political action from other instances and communities they're in contact with.

11:16.960 --> 11:22.960
Sometimes, these situations where instances shut down or get isolated from parts of the Fediverse, the way most activity pubs apps work right now,

11:22.960 --> 11:27.960
these events could have real impacts on individual people who might never have seen it coming.

11:27.960 --> 11:32.960
On mass it on today, moving your network is accomplishable, but moving your content is not.

11:32.960 --> 11:36.960
Some of this is due to difficulties that are specific to mass it on, but some of it's due activity pub itself.

11:36.960 --> 11:38.960
This isn't for lack of care.

11:38.960 --> 11:40.960
There are efforts to fix this problem.

11:40.960 --> 11:46.960
I look forward to how that's going to evolve over time, but it's still definitely something that's being worked on.

11:46.960 --> 11:50.960
Web-based bookmarking, while having a social component dating back all the way to delicious,

11:50.960 --> 11:53.960
has first and foremost, as I said, been an activity I do for myself.

11:53.960 --> 12:00.960
In my private bookmarking account that I used as an authoritative source, I have about 20,000 bookmarks that I've accumulated in my grade over 20 years,

12:00.960 --> 12:03.960
as I've moved from platform to platform.

12:03.960 --> 12:08.960
I use my recent bookmarks every day to track things I want to read across devices with a mom like desktop,

12:08.960 --> 12:13.960
and I want to read on my phone later, and I search my full archive, not just daily, but pretty close.

12:13.960 --> 12:17.960
If I want to have a place to bookmark, bookmarks, I need to know that's not going anywhere,

12:17.960 --> 12:22.960
and I suspect most people who would install their own self-hosted bookmarking software probably feel the same way.

12:22.960 --> 12:26.960
While mass it on and many other popular activity pub platforms are very reasonably designed to be large,

12:26.960 --> 12:32.960
heavy weight or medium weight platforms with live databases and search indexes and things that help them scale to hundreds and thousands of users,

12:32.960 --> 12:38.960
there have been some projects that go to social that focus on a minimal footprint for a small number of users.

12:38.960 --> 12:42.960
With postmarks, I took that as inspiration, and I took it as step further.

12:42.960 --> 12:44.960
One instance has one user.

12:44.960 --> 12:51.960
So while this decision does have its own complications and political kind of ideals that have to be managed around the Fedivers as a whole,

12:51.960 --> 12:57.960
it has been a job for me in keeping the project simple, manageable, and adding a constraint that says that the software I'm designing

12:57.960 --> 13:03.960
has to balance the utility it provides to its own user with the complication of its install and hosting process,

13:03.960 --> 13:07.960
instead of amortizing that across a large community.

13:07.960 --> 13:12.960
Moving on, we can go to the old web architecture that I referred to earlier.

13:12.960 --> 13:18.960
I don't expect this principle to be too controversial, and I'd event like Phasetem, although elsewhere in the world that I sometimes get more pushback on this.

13:18.960 --> 13:25.960
But when I decided to start this project, I made a web server, it generates HTML on the server side.

13:25.960 --> 13:31.960
I know this is crazy, delivers that to the browser, accepts an HTTP request via HTML forms,

13:31.960 --> 13:35.960
and uses minimal JavaScript on the front end to improve the user experience just a little bit.

13:35.960 --> 13:40.960
The app has predictable readable URLs that are motivated user could build themselves when typing in the browser,

13:40.960 --> 13:46.960
which is something that I still do every day, or when trying to make scripts or tools that would link to query their bookmarks.

13:47.960 --> 13:50.960
I use SQL light databases, persisted to disk, to store everything.

13:50.960 --> 13:54.960
There's no extra services you have to set up for in PASAS provider for.

13:54.960 --> 14:02.960
And yes, I promise I'm old enough to see a certain irony I'm referring to in Node.js app as part of the old web, but it's how time goes.

14:02.960 --> 14:06.960
All of this was impart related to my own tendencies and philosophies of software architecture,

14:06.960 --> 14:10.960
but it was mostly to force myself to stay moving forward on the actual functionality of the project.

14:10.960 --> 14:16.960
I'm not a UX expert, and will I know some modern front end techniques that make use of these heavy client-side JavaScript things?

14:16.960 --> 14:20.960
I knew I risk it and bogged down and learning new patterns and adding new dependencies.

14:20.960 --> 14:24.960
Sticking with things I already knew how to do and minimizing the dependencies of the software,

14:24.960 --> 14:31.960
made sure I had the most time to learn about activity pub and keep the project rolling as I was kind of working on it.

14:31.960 --> 14:36.960
The general philosophy of keeping things simple, also maybe they'll build postmarks on glitch,

14:36.960 --> 14:40.960
which helped avoid a common problem when developing server-side software for activity pub.

14:40.960 --> 14:46.960
To make sure that talks to other activity pub servers, you need to host it somewhere that has a publicly addressable URL,

14:46.960 --> 14:48.960
so that you can do two-way communication.

14:48.960 --> 14:52.960
There are ways to do this while developing locally on your computer, if you have like a full-on reverse proxy,

14:52.960 --> 14:58.960
pointing to a static IP that you've provisioned with your ISP or you're using a tool like DINDNS or NGRAC.

14:58.960 --> 15:05.960
But by developing on glitch, I can spin up any number of copies of my app across any number of subdomain host names essentially instantly.

15:05.960 --> 15:10.960
Glitch doesn't offer the ability to build a network of services like a postgres database and a last-exert cluster out of the box,

15:10.960 --> 15:15.960
so sticking to configuration and static files and a database that's persisted the disk made it easy to host,

15:15.960 --> 15:22.960
and which is remix featurement I could fork the project and pursue other ideas while looking at a live working copy of the previous checkpoint of my work,

15:22.960 --> 15:26.960
and have that all happen at the same time.

15:26.960 --> 15:31.960
The last principle was a sense of desire to interoperate with NASID on and it's micro-blogging peers.

15:32.960 --> 15:37.960
There were a number of motivations for this from the start, to ease development and testing, to improve demonstration and onboarding,

15:37.960 --> 15:44.960
and ultimately to rebuild the feature of delicious and pinboard, but to me was never my most used feature, but seemed like it had some interesting potential for postmarks.

15:44.960 --> 15:50.960
The testing and development benefits came pretty much from the very first demo that I gave to my co-workers in 2022.

15:50.960 --> 15:56.960
With the way I had written the first prototype, an instance was capable of registering that other fetavers actors had followed it,

15:56.960 --> 15:59.960
and broadcasting out activity to them.

15:59.960 --> 16:04.960
But I didn't write any UI or protocol level support for following anyone else within postmarks.

16:04.960 --> 16:08.960
I didn't need to, I could test my instance out by following it from my NASID on account,

16:08.960 --> 16:10.960
seeing the post shop my timeline,

16:10.960 --> 16:14.960
replying to those from NASID on to add comments and so forth.

16:14.960 --> 16:21.960
I didn't add the ability to follow other users on postmarks until the day after I announced the project in 2023,

16:21.960 --> 16:25.960
because I hadn't really hit me yet what I wanted to do with that or why I would even want that.

16:26.960 --> 16:29.960
NASID on, though, proved a very useful smoke testing tool.

16:29.960 --> 16:34.960
I was just constantly refreshing on NASID on timeline and just seeing how posts broke in various ways.

16:34.960 --> 16:43.960
After launching also, in talking to members of the development community, I discovered other tools that would be really super beneficial over time.

16:43.960 --> 16:47.960
FettiDB gave me a lot of good information about other people that were actually running postmarks.

16:47.960 --> 16:51.960
I could see that it was actually happening out there and see who was installing new versions.

16:51.960 --> 17:00.960
And in the months that followed the amazing Fetti test project launched and they were really gracious enough to include postmarks is one of the pieces of software that they tested against.

17:00.960 --> 17:07.960
As a benchmark, that resulted, they have a better idea of how many, how well we comply with the activity postback, which.

17:07.960 --> 17:11.960
I had a lot of fears about, but it turned out that we did, we do it pretty okay with it.

17:11.960 --> 17:17.960
We just still places to go with it for sure, but, you know, we're doing all right.

17:18.960 --> 17:25.960
The first use of actually adding the ability within postmarks to follow people turned out to be bringing back an old feature of delicious.

17:25.960 --> 17:33.960
It's called the network page and it was kind of a photo feed that existed on delicious before Facebook had a news feed or even friend feed existed.

17:33.960 --> 17:35.960
Postmarks network page.

17:35.960 --> 17:45.960
Or sorry, the delicious network page would show you basically a feed of all the bookmarks people that you know were bookmarking chronological order sort of like a social network.

17:45.960 --> 17:50.960
Once postmarks with the network page, it'll show you other postmarks users any bookmarks they're adding.

17:50.960 --> 18:04.960
But also let you follow users on sites like Masadon see URLs that they're sharing within their posts and have quick ways to add those as bookmarks that you can kind of start building up a queue if things you want to read or whatever else that you want to do.

18:04.960 --> 18:10.960
In some ways, that's similar to the Twitter API app in Nuzzle which some of you want to familiar with which was an email newsletter the did a similar thing.

18:10.960 --> 18:14.960
And there's actually I found a really great.

18:14.960 --> 18:29.960
I forgot to add in another slide at the last minute, but there's a great app that's in development for the front of Fediver is called sil SLL that social that doesn't similar thing for Masadon that just gives you that feed for free.

18:29.960 --> 18:32.960
Finally, interoperability provides visibility for your project.

18:32.960 --> 18:35.960
It's an extra avenue for sharing the platform for people who get excited about it.

18:35.960 --> 18:40.960
And an extra way to dip your toe in the water is an observer from established platforms like Masadon.

18:40.960 --> 18:45.960
If one person loves postmarks and starts using it, they may be encouraged to post about that on Masadon.

18:45.960 --> 18:55.960
But other than telling people to go look at a website, elsewhere on the web, they can link to what looks just like a Masadon user by specifying their at user name at postmarksinstance.org.

18:55.960 --> 18:57.960
They're full of the actor name and everything.

18:57.960 --> 19:03.960
If someone who sees their post clicks through, they stay within the context of Masadon or whatever micro blog game platform they're using.

19:03.960 --> 19:06.960
They're invited to follow that feed right there in their Masadon client.

19:06.960 --> 19:13.960
Those sort of see those bookmarks kind of flow into their timeline and maybe once they're following a few of those, they'll notice the similarities and wonder how they can get their own.

19:13.960 --> 19:18.960
They reply to a post that shows up as comments in the postmark seizures instance in doing so.

19:18.960 --> 19:23.960
They've hopefully made the postmark seizure instance more valuable for the person who's using it.

19:23.960 --> 19:34.960
And over time, the result is that postmarks becomes a useful tool for those who already know about it and operate it and it makes this off known organically to people who are realized they want it later.

19:34.960 --> 19:38.960
So that's a great reason to include an operability in your app.

19:38.960 --> 19:45.960
Unfortunately, though, interoperability turned out to be the most challenging of the three principles that I kept in mind when developing postmarks.

19:45.960 --> 19:50.960
Everything I said about it's benefits so far is true, but it's also more complicated.

19:50.960 --> 19:55.960
While using Masadon test the output from postmarks is helpful, it also sometimes added complexity.

19:55.960 --> 19:58.960
And actually, we heard about this during the rightfully, it's freely talk earlier today.

19:58.960 --> 20:02.960
There are things I was doing with activity problems that I'm still convinced we're technically compliant with the spec,

20:02.960 --> 20:06.960
but they resulted in posts that were broken or not doing what I wanted to have Masadon.

20:06.960 --> 20:15.960
As being a example, there were details like having bookmarks tag, the show up as hashtags, and you can click on that in Masadon and have it do what you expect to hashtag to do in Masadon.

20:15.960 --> 20:17.960
It just wasn't quite working right for a while.

20:17.960 --> 20:18.960
Thank you.

20:18.960 --> 20:24.960
And it just, it took some time, and ultimately what I found myself doing was not just reading the activity of how to spec,

20:24.960 --> 20:29.960
but having to go look at the source code for Masadon, look at the source code for third party clients,

20:29.960 --> 20:36.960
look at the source code for other platforms like firefish, and just kind of spirals outward and outward as you keep going.

20:36.960 --> 20:41.960
The biggest difficulty I faced though, with it, handling and interoperability, ends up being a little more philosophical.

20:41.960 --> 20:45.960
It relates to what I said earlier about what's great about the web that captured my attention in the first place,

20:45.960 --> 20:48.960
or rather what's missing from that today.

20:48.960 --> 20:53.960
I've been calling it the flattened web, the more I talk about it with my friends.

20:53.960 --> 20:58.960
Masadon and many of Fediverse and broader social webcam were heavily inspired by Twitter, as I'm sure everybody here knows.

20:58.960 --> 21:02.960
In general, they're designed to reproduce as a very specific core experience.

21:02.960 --> 21:08.960
There's a timeline, as we just heard, the default one of Masadon is a reverse chronological, which is an algorithm, I'll agree with that.

21:09.960 --> 21:13.960
Timeline, the post that, or by selection of users, you've chosen to follow.

21:13.960 --> 21:18.960
A post can have some text, an image maybe, or a couple images.

21:18.960 --> 21:23.960
Some text like a user name or a hashtag can have kind of pre-programmed hyperlink behavior.

21:23.960 --> 21:31.960
A single URL on the post can have a visual card, but there's no other programable content or even significant structure display that you can add.

21:31.960 --> 21:35.960
This is a post from panic by the way, which is a software company from Portland where I live.

21:35.960 --> 21:42.960
What this means, though, is that post-marked activity in order to interoperate has to find some way to fit within that box.

21:42.960 --> 21:45.960
A box is essentially a note, as the activity pub sees it.

21:45.960 --> 21:53.960
As a result, when you see a post-marked bookmark on Masadon, your experience of it is as a Masadon post that follows a certain template that makes sense for a bookmark.

21:53.960 --> 22:01.960
If people reply to your bookmark, it just creates a note that is a reply to that note.

22:01.960 --> 22:08.960
On post marks, though, that's a totally different thing. It's a comment that has a very different visual importance to the bookmark itself.

22:08.960 --> 22:11.960
But from Masadon, you're seeing it in a very different social context.

22:11.960 --> 22:21.960
After seeing how this plays out with post marks in the current Fediverse ecosystem, I come to start thinking about the result of all these posts, having to fit in one place is kind of problematic.

22:21.960 --> 22:28.960
As a cynical flip side of the organic growth opportunity that I was so excited to share with you earlier, it also raises a question from me, what's the point of doing any of this?

22:28.960 --> 22:32.960
I'm not bothered with post marks when you could just write a Masadon client that formats a link blog.

22:32.960 --> 22:40.960
You could search your posts with some kind of combination of operators about it from me and put my hashtags in and have an HTBS to have a link in it.

22:40.960 --> 22:44.960
So why build a whole platform just if you get back into this flattened web?

22:44.960 --> 22:49.960
This isn't Masadon's fault on not blaming it. It's only natural that an ecosystem with one dominant player.

22:49.960 --> 22:57.960
Its product decisions will influence platforms that seek to interoperate, but I do think we should be aware of and have better ways to discuss the influence it has and what we do.

22:57.960 --> 23:09.960
In the same way I started to see good discussion in general about other topics that reveal status quo about as being not just neutral, but a result of cultural conditions that have impacts on how we live and what we do.

23:09.960 --> 23:13.960
It may sound harsh to speak of a flattened web, but I don't say this is an outsider.

23:13.960 --> 23:17.960
I feel confident that I've read more posts on a flat timeline than most of the population of the world at this point.

23:17.960 --> 23:21.960
I haven't been very heavily invested in communities in these platforms for almost as long as they've existed.

23:21.960 --> 23:25.960
And up until recently I wouldn't say I regret it.

23:25.960 --> 23:31.960
It's kind of an escapeable in the social circles that I think most of us are in in 2025 that you have to be on this flattened web.

23:31.960 --> 23:37.960
In the case of a micro-block timeline I appreciate that Masadon has kind of respectful of your attention in some ways.

23:37.960 --> 23:41.960
But short of small innovations in client side apps like FanP or Elk.

23:41.960 --> 23:57.960
It does seem like everything gets condensed in the same rectangle and you end up with things like an amazing announcement, a funny joke, news of a tragedy, a friend looking for help or validation or a postmarked bookmark, all kind of jammed together all at once.

23:57.960 --> 24:07.960
When I was younger I think I might have been better at surfing from vibe divide when this happened, but there's something that's made it harder for me to want to subject myself to contextless chronological information,

24:07.960 --> 24:11.960
that's not recognized and compressed to a dozen seconds worth of attention, repeated hundreds of times in a row.

24:11.960 --> 24:17.960
It's not pure rejections because I certainly log onto these platforms, plenty of days still.

24:17.960 --> 24:25.960
You know, sometimes you want to just know what's going on in the world or connect with your friends or you have things that you need to put out in the world to say.

24:25.960 --> 24:33.960
And I have friends that I've known online for 30 years at this point in my life and I have friends that I've known for six months that I hope I'll have 30 years from now.

24:33.960 --> 24:39.960
But right now, maybe because of the moment that we're in, I keep wishing the way I related to them didn't involve this flattened timeline.

24:39.960 --> 24:47.960
So it took the realization that no matter what I do with postmarks to make it interoperate, I had made an important component of it and that set into other people's flattened experience of the web,

24:47.960 --> 24:51.960
which has made it really difficult for me to be motivated about doing more.

24:51.960 --> 24:56.960
I still haven't really figured out what to do with these feelings to be honest.

24:56.960 --> 25:01.960
Postmarks has been fairly neglected as many open source projects are, but this is kind of a different reason.

25:01.960 --> 25:10.960
I'm trying to find ways to structure my 2025 to talk to, to do what I've said before about reaching the end of the state, hit those last few features that I really want to make and close things out.

25:10.960 --> 25:16.960
But it's not only of excitement, it's just because I need closure.

25:16.960 --> 25:23.960
After 20 years of making things the software, I'm a firm believer that very few choices can provide purely positive effects.

25:23.960 --> 25:29.960
Advancements in software are built on later after later of trade-offs, and in this case, something that is given me a lot of benefit in the course of building this project,

25:29.960 --> 25:32.960
also resulted in some questions that I'm forced to reckon with.

25:32.960 --> 25:38.960
I feel struggling for a while to ignore them, to push through and keep doing what I've been doing, I think instead of trying to find an alternate path.

25:38.960 --> 25:45.960
I'd love to talk to more to anyone that resonates with and try to move forward together to turn the social web and assign the field less flattened.

25:45.960 --> 25:47.960
Thank you.

25:48.960 --> 26:01.960
Thank you so much, Casey. I really enjoyed that. I've enjoyed all the talks in this debris.

26:01.960 --> 26:03.960
That was especially great.

26:03.960 --> 26:07.960
Something that I watched you develop and I've been involved with it.

26:07.960 --> 26:13.960
The edges and I just thought you had some really almost poetic thoughts there, so I appreciate them. Thank you.

26:17.960 --> 26:19.960
Thank you.

