Goofed Home

Conversation

$$21399
https://cosocial.ca/users/evan posted on Apr 1, 2026 23:17

I think if there's one thing I'd say to #ActivityPub developers, it's this: it seems like it's going to be easier to just parse Activity Streams 2.0 data as plain JSON, but it's not. You have to keep track of too many variations. Use a JSON-LD library instead. For JavaScript, try activitystrea.ms:

https://github.com/jasnell/activitystrea.ms

https://cosocial.ca/users/evan/statuses/116332001773753660

$$21507
https://cosocial.ca/users/evan posted on Apr 2, 2026 12:51
In reply to: https://mastodon.social/users/trwnh/statuses/116333828835838324

@trwnh "more actively maintained"?

The code is long-term but it was built by one author of AS2 and maintained by the other. It works well, and I use it in production systems all the time.

I'm pretty sure @hongminhee has made a similar package, although I'm not sure it's distributed independently.

https://cosocial.ca/users/evan/statuses/116335199274721737
$$21512
https://hollo.social/@hongminhee posted on Apr 2, 2026 13:01
In reply to: https://cosocial.ca/users/evan/statuses/116335199274721737

@evan@cosocial.ca @trwnh@mastodon.social I’m maintaining the @fedify/vocab package which depends on the jsonld package from Digital Bazaar. It’s written in 100% TypeScript, and has worked well on production services!

https://hollo.social/@hongminhee/019d4e48-b607-7523-a2a0-f1e0cf6b4670

Conversation

$$20877
https://catodon.rocks/users/ajnx09gnv7z90005 posted on Mar 31, 2026 14:44
In reply to: https://activitypub.space/post/1691

@julian@activitypub.space yeah, i know 🥲
I have a lot of things I wanna do on Misskey/Sharkey - give me a few more months and this will be totally transformed =)
@evan@cosocial.ca

https://catodon.rocks/notes/akiakw5frrvd011m

Conversation

$$20744
https://mastodon.social/users/countablenewt posted on Mar 31, 2026 00:26
In reply to: https://cosocial.ca/users/evan/statuses/115959624252861874

@evan @wjmaggos @Castopod Super excited for this future (and possibly building a client for that as well)

https://mastodon.social/users/countablenewt/statuses/116320948337333440

Conversation

$$16766
https://w3c.social/users/w3cdevs posted on Mar 24, 2026 10:29

📢 @w3c Breakouts Day 2026!
🗓️ Join us tomorrow - 25 March 2026, 13:00–14:00 UTC

The #ActivityPub specification defines a social API and a federation protocol. Mastodon and compatible platforms implement the latter but not the former.

Join @evan's session to discuss the social #API, its value in the distributed social ecosystem, and the efforts to revive its use.
▶️ https://www.w3.org/events/meetings/fd048dc6-4486-4e21-a639-545523e4ca60/

https://w3c.social/users/w3cdevs/statuses/116283683078223124

$$17577
https://w3c.social/users/w3cdevs posted on Mar 25, 2026 12:29
In reply to: https://w3c.social/users/w3cdevs/statuses/116283683078223124

The "Reviving the #ActivityPub Social API" breakout session starts in 30 minutes!
@w3c @evan

https://w3c.social/users/w3cdevs/statuses/116289817697978513

Conversation

$$17134
https://cosocial.ca/users/evan posted on Mar 24, 2026 17:28
In reply to: https://activitypub.space/post/1650

@julian @Profpatsch oh, yeah, definitely. It's really our only way to authenticate requests right now.

https://cosocial.ca/users/evan/statuses/116285330436963905

$$17139
https://mastodon.xyz/users/Profpatsch posted on Mar 24, 2026 17:33
In reply to: https://cosocial.ca/users/evan/statuses/116285330436963905

@evan @julian yeah, not saying anything against authentication via signatures, that’s a valid use-case if done correctly.

https://mastodon.xyz/users/Profpatsch/statuses/116285349584464641

Conversation

$$16179
https://cosocial.ca/users/evan posted on Mar 22, 2026 21:47
In reply to: https://social.coop/users/smallcircles/statuses/116274902085861242

@smallcircles @julian I think we might have different ideas about what the ActivityPub API task force is for.

To me, it's about making it possible for clients to use different servers, and different implementations of the API. That's going to include the social API defined in the ActivityPub standard, but it will also encompass things like rate limits, authentication, caching, CORS, and so on.

How that all gets documented will probably be in one or more community group reports.

https://cosocial.ca/users/evan/statuses/116275021300962889

$$16181
https://social.coop/users/smallcircles posted on Mar 22, 2026 21:54
In reply to: https://cosocial.ca/users/evan/statuses/116275021300962889

@evan @julian

The extent to which the default profile becomes a 'straightjacket' impact scope, applicability, and usability. I guess its alright as long as there's sufficient flexibility and extensibility taken into account. Guess the "sufficient" does the heavy lifting here.

https://social.coop/users/smallcircles/statuses/116275048951041356
$$16251
https://cosocial.ca/users/evan posted on Mar 22, 2026 23:51
In reply to: https://social.coop/users/smallcircles/statuses/116275048951041356

@smallcircles @julian I think that's always a tension in standards! How do you make it explicit enough that developers can build interoperable software, but extensible enough that they can try new things?

I think one pattern that works well is some base-level standards assumed, and easy ways for extensions to be discoverable and negotiable. If your preferred extension isn't available from the software on the other side of the line, you fall back to the base-level standard.

https://cosocial.ca/users/evan/statuses/116275509347250484

Conversation

$$16146
https://social.coop/users/smallcircles posted on Mar 22, 2026 20:08
In reply to: https://activitypub.space/post/1641

@evan

> Rate limits are a common part of APIs.

Yes, of API *implementations*, and they may become part of the public interface of these implementation. Whether they should be part of an open standard protocol specification is a different matter imho. Perhaps in a separate implementation guide, suggesting recommended practices.

Or perhaps there may be some way to formulate a generic mechanism in the protocol specification that makes rate limits an extension point, without pinning to a particular method, esp. if it is only a de facto standard.

(Other example. The fediverse is still pinned to an expired draft of HTTP signatures.)

OTOH if the goal of the task force is to mostly just provide implementation guidance, and maybe a reference impl, then I guess examples of rate limiting may be provided.

@julian

https://social.coop/users/smallcircles/statuses/116274632996483178

$$16154
https://cosocial.ca/users/evan posted on Mar 22, 2026 20:41
In reply to: https://social.coop/users/smallcircles/statuses/116274718079331293

@smallcircles @julian the point of the API task force is to make using the API across servers possible. That's why we're doing the OAuth work. I think rate limiting is part of the basic profile; it's one of the things you need to support to use the API across different servers.

https://cosocial.ca/users/evan/statuses/116274763446935703
$$16185
https://cosocial.ca/users/evan posted on Mar 22, 2026 22:02
In reply to: https://activitypub.space/post/1641

@julian There are 3 main clusters.

They're linked here for the ActivityPub API task force, but they also apply for the federation protocol:

https://github.com/swicg/activitypub-api/issues/4#issuecomment-4083573914

https://cosocial.ca/users/evan/statuses/116275080781185862

Conversation

$$15820
https://cosocial.ca/users/evan posted on Mar 22, 2026 02:33
In reply to: https://cosocial.ca/users/evan/statuses/116270478636184245

Anyway, here's my thought: make collection pages real, stable objects, with fixed contents and real modification dates. Return only references, not embedded objects. Do filtering, though. And make pages big -- 100 items or more.

https://cosocial.ca/users/evan/statuses/116270486615933121

$$16057
https://social.coop/users/django posted on Mar 22, 2026 16:34
In reply to: https://cosocial.ca/users/evan/statuses/116270486615933121

@evan mastodon’s approaches is interesting in this regard, it returns embedded objects for local items, and references for remote objects. Best of both

https://social.coop/users/django/statuses/116273791676884875
$$16058
https://cosocial.ca/users/evan posted on Mar 22, 2026 16:42
In reply to: https://social.coop/users/django/statuses/116273791676884875

@django it's good in some ways, but they still don't return Last-Modified headers.

https://cosocial.ca/users/evan/statuses/116273825124609051

Conversation

$$15842
https://cosocial.ca/users/evan posted on Mar 22, 2026 03:40
In reply to: https://hollo.social/@hongminhee/019d0fbb-444f-7fdb-bd9f-0d398cb41731

@hongminhee so, I guess this is true, but maybe also the craft changes?

I am old enough to remember when it was common to embed blocks of assembly language in your C code to optimize particular functions or loops. As high level languages grew, that familiarity with hardware architecture has mostly disappeared, but we've developed other skills instead.

When I read @jesse or @simon 's posts about exploring collaboration with LLMs, I see curiosity, creativity and joy in the craft.

https://cosocial.ca/users/evan/statuses/116270749293381737

$$15849
https://hollo.social/@hongminhee posted on Mar 22, 2026 03:52
In reply to: https://cosocial.ca/users/evan/statuses/116270749293381737

@evan@cosocial.ca Totally agree, and I think that’s actually the point the essay is trying to make. The split isn’t “LLM users vs. craft lovers” but something more like “people with room to choose how they use the tools vs. people who don’t have that room.”

@mitchellh@hachyderm.io is a good example. He’s clearly using LLMs as a craftsperson. So am I, I think. But both of us are in situations where we’re not being measured against a colleague’s output every quarter. The workplace dynamic is what compresses all of that curiosity and exploration into pure throughput.

The craft probably does survive, just not evenly distributed.

https://hollo.social/@hongminhee/019d13ac-02ea-720c-9687-00c136a20ae4
$$16020
https://hachyderm.io/users/mikebroberts posted on Mar 22, 2026 14:34
In reply to: https://hollo.social/@hongminhee/019d0fbb-444f-7fdb-bd9f-0d398cb41731

@hongminhee Fantastic article. 👏 👏

I think there's one possible ray of light for the "code as craft" people - at least a subset of them. To me the craft'ers can enjoy coding for various reasons - the demo-scene folks, the "get it into the smallest amount of code" folks, the aesthetic folks.

But another camp is the "make it easy to understand and extend" folks - and that's pretty much where I fall. People like me, who like arranging things neatly, have had a great advantage for the last few decades, because tidy code is good for industry. There's a reason @mfowler 's Refactoring book is such a big seller.

What I'd argue we don't know for sure yet, is whether readable code as a valuable thing for the industry, is dead. The LLM extremists would probably say it is. But that only works if the only form of validation of code is going to be external (testing & observability, basically). I argue that if humans will still be required to "review" (whatever that ends up meaning) at least some code, then readable code is going to be advantageous.

Even if LLMs can produce readable code we still need human judgment, but for me judgment skills will come from doing, and not just reviewing. In other words, there'll still be an economic case for "developing by hand".

If I'm wrong, and external validation does become sufficient for judging code, then all bets are off. But in that situation I don't think the LLMs will end up writing code as we know it anyway - why would they? They will write whatever uses the least tokens and gets to a valid result most cheaply. Which could be in assembler.

https://hachyderm.io/users/mikebroberts/statuses/116273318501645480

Conversation

$$15610
https://mastodon.social/users/trwnh posted on Mar 21, 2026 16:58
In reply to: https://social.coop/users/smallcircles/statuses/116265901554073332

@smallcircles @hongminhee @evan @steve browser.pub is incorrect here -- having a range of Object or Link doesn't mean that schema PropertyValue is not allowed. it means that the value is inferred to be an Object or a Link *in addition to* a PropertyValue. there is no problem as long as there are no conflicting statements being made.

cc @js

https://mastodon.social/users/trwnh/statuses/116268224078918339

Create New Post