ActivityPub Viewer

A small tool to view real-world ActivityPub objects as JSON! Enter a URL or username from Mastodon or a similar service below, and we'll send a request with the right Accept header to the server to view the underlying object.

Open in browser →
{ "@context": [ "https://www.w3.org/ns/activitystreams", { "ostatus": "http://ostatus.org#", "atomUri": "ostatus:atomUri", "inReplyToAtomUri": "ostatus:inReplyToAtomUri", "conversation": "ostatus:conversation", "sensitive": "as:sensitive", "toot": "http://joinmastodon.org/ns#", "votersCount": "toot:votersCount", "litepub": "http://litepub.social/ns#", "directMessage": "litepub:directMessage", "Hashtag": "as:Hashtag" } ], "id": "https://soc.saiyajin.space/users/mai_lapyst/statuses/113620522027051515", "type": "Note", "summary": null, "inReplyTo": null, "published": "2024-12-09T02:32:58Z", "url": "https://soc.saiyajin.space/@mai_lapyst/113620522027051515", "attributedTo": "https://soc.saiyajin.space/users/mai_lapyst", "to": [ "https://www.w3.org/ns/activitystreams#Public" ], "cc": [ "https://soc.saiyajin.space/users/mai_lapyst/followers" ], "sensitive": false, "atomUri": "https://soc.saiyajin.space/users/mai_lapyst/statuses/113620522027051515", "inReplyToAtomUri": null, "conversation": "tag:soc.saiyajin.space,2024-12-09:objectId=2368054:objectType=Conversation", "content": "<p>Was stuck the past week(s) in my <a href=\"https://soc.saiyajin.space/tags/lisp\" class=\"mention hashtag\" rel=\"tag\">#<span>lisp</span></a> implementation in <a href=\"https://soc.saiyajin.space/tags/zig\" class=\"mention hashtag\" rel=\"tag\">#<span>zig</span></a> on <a href=\"https://soc.saiyajin.space/tags/closures\" class=\"mention hashtag\" rel=\"tag\">#<span>closures</span></a>, as they provide an real challange with their capturing properties. Espc bc I didn't wanted to resort to using things like arbitary \"rules\" to restrict the language only for closure to work, or already implementing a tracing <a href=\"https://soc.saiyajin.space/tags/garbagecollector\" class=\"mention hashtag\" rel=\"tag\">#<span>garbagecollector</span></a> for this.</p><p>I rather choose to use <a href=\"https://soc.saiyajin.space/tags/ARC\" class=\"mention hashtag\" rel=\"tag\">#<span>ARC</span></a> (Atomically Reference counting) for this, which comes with a few problems. And as I found nobody that has solved this problem, I've come up with a solution to it myself: 'Switchable references with strongchain elemination'. A bit bulky name, and the technique is still in it's beginning, but when implemented in rust the compiler dosnt complain and valgrind dosn't detects any leaks.</p><p>I've written a fairly big <a href=\"https://blog.lapyst.dev/posts/11-rollinglisp-001---of-closures-mutability-and-switchable-references\" target=\"_blank\" rel=\"nofollow noopener\">blogpost about it</a> too, including not only the whole explanation how it works but also alternatives I've considered. Check it out if you're interested!</p><p>Now I only need to translate it over to zig, but hopefully that dosnt take so long x3</p><p><a href=\"https://soc.saiyajin.space/tags/coding\" class=\"mention hashtag\" rel=\"tag\">#<span>coding</span></a> <a href=\"https://soc.saiyajin.space/tags/programming\" class=\"mention hashtag\" rel=\"tag\">#<span>programming</span></a> <a href=\"https://soc.saiyajin.space/tags/software\" class=\"mention hashtag\" rel=\"tag\">#<span>software</span></a> <a href=\"https://soc.saiyajin.space/tags/oss\" class=\"mention hashtag\" rel=\"tag\">#<span>oss</span></a> <a href=\"https://soc.saiyajin.space/tags/foss\" class=\"mention hashtag\" rel=\"tag\">#<span>foss</span></a> <a href=\"https://soc.saiyajin.space/tags/ossdev\" class=\"mention hashtag\" rel=\"tag\">#<span>ossdev</span></a> <a href=\"https://soc.saiyajin.space/tags/fossdev\" class=\"mention hashtag\" rel=\"tag\">#<span>fossdev</span></a> <a href=\"https://soc.saiyajin.space/tags/lisp\" class=\"mention hashtag\" rel=\"tag\">#<span>lisp</span></a> <a href=\"https://soc.saiyajin.space/tags/zig\" class=\"mention hashtag\" rel=\"tag\">#<span>zig</span></a> <a href=\"https://soc.saiyajin.space/tags/rust\" class=\"mention hashtag\" rel=\"tag\">#<span>rust</span></a> <a href=\"https://soc.saiyajin.space/tags/softwaredevelopment\" class=\"mention hashtag\" rel=\"tag\">#<span>softwaredevelopment</span></a> <a href=\"https://soc.saiyajin.space/tags/pldev\" class=\"mention hashtag\" rel=\"tag\">#<span>pldev</span></a> <a href=\"https://soc.saiyajin.space/tags/programminglanguages\" class=\"mention hashtag\" rel=\"tag\">#<span>programminglanguages</span></a> <a href=\"https://soc.saiyajin.space/tags/referencecounting\" class=\"mention hashtag\" rel=\"tag\">#<span>referencecounting</span></a> <a href=\"https://soc.saiyajin.space/tags/rc\" class=\"mention hashtag\" rel=\"tag\">#<span>rc</span></a> <a href=\"https://soc.saiyajin.space/tags/arc\" class=\"mention hashtag\" rel=\"tag\">#<span>arc</span></a></p>", "contentMap": { "en": "<p>Was stuck the past week(s) in my <a href=\"https://soc.saiyajin.space/tags/lisp\" class=\"mention hashtag\" rel=\"tag\">#<span>lisp</span></a> implementation in <a href=\"https://soc.saiyajin.space/tags/zig\" class=\"mention hashtag\" rel=\"tag\">#<span>zig</span></a> on <a href=\"https://soc.saiyajin.space/tags/closures\" class=\"mention hashtag\" rel=\"tag\">#<span>closures</span></a>, as they provide an real challange with their capturing properties. Espc bc I didn't wanted to resort to using things like arbitary \"rules\" to restrict the language only for closure to work, or already implementing a tracing <a href=\"https://soc.saiyajin.space/tags/garbagecollector\" class=\"mention hashtag\" rel=\"tag\">#<span>garbagecollector</span></a> for this.</p><p>I rather choose to use <a href=\"https://soc.saiyajin.space/tags/ARC\" class=\"mention hashtag\" rel=\"tag\">#<span>ARC</span></a> (Atomically Reference counting) for this, which comes with a few problems. And as I found nobody that has solved this problem, I've come up with a solution to it myself: 'Switchable references with strongchain elemination'. A bit bulky name, and the technique is still in it's beginning, but when implemented in rust the compiler dosnt complain and valgrind dosn't detects any leaks.</p><p>I've written a fairly big <a href=\"https://blog.lapyst.dev/posts/11-rollinglisp-001---of-closures-mutability-and-switchable-references\" target=\"_blank\" rel=\"nofollow noopener\">blogpost about it</a> too, including not only the whole explanation how it works but also alternatives I've considered. Check it out if you're interested!</p><p>Now I only need to translate it over to zig, but hopefully that dosnt take so long x3</p><p><a href=\"https://soc.saiyajin.space/tags/coding\" class=\"mention hashtag\" rel=\"tag\">#<span>coding</span></a> <a href=\"https://soc.saiyajin.space/tags/programming\" class=\"mention hashtag\" rel=\"tag\">#<span>programming</span></a> <a href=\"https://soc.saiyajin.space/tags/software\" class=\"mention hashtag\" rel=\"tag\">#<span>software</span></a> <a href=\"https://soc.saiyajin.space/tags/oss\" class=\"mention hashtag\" rel=\"tag\">#<span>oss</span></a> <a href=\"https://soc.saiyajin.space/tags/foss\" class=\"mention hashtag\" rel=\"tag\">#<span>foss</span></a> <a href=\"https://soc.saiyajin.space/tags/ossdev\" class=\"mention hashtag\" rel=\"tag\">#<span>ossdev</span></a> <a href=\"https://soc.saiyajin.space/tags/fossdev\" class=\"mention hashtag\" rel=\"tag\">#<span>fossdev</span></a> <a href=\"https://soc.saiyajin.space/tags/lisp\" class=\"mention hashtag\" rel=\"tag\">#<span>lisp</span></a> <a href=\"https://soc.saiyajin.space/tags/zig\" class=\"mention hashtag\" rel=\"tag\">#<span>zig</span></a> <a href=\"https://soc.saiyajin.space/tags/rust\" class=\"mention hashtag\" rel=\"tag\">#<span>rust</span></a> <a href=\"https://soc.saiyajin.space/tags/softwaredevelopment\" class=\"mention hashtag\" rel=\"tag\">#<span>softwaredevelopment</span></a> <a href=\"https://soc.saiyajin.space/tags/pldev\" class=\"mention hashtag\" rel=\"tag\">#<span>pldev</span></a> <a href=\"https://soc.saiyajin.space/tags/programminglanguages\" class=\"mention hashtag\" rel=\"tag\">#<span>programminglanguages</span></a> <a href=\"https://soc.saiyajin.space/tags/referencecounting\" class=\"mention hashtag\" rel=\"tag\">#<span>referencecounting</span></a> <a href=\"https://soc.saiyajin.space/tags/rc\" class=\"mention hashtag\" rel=\"tag\">#<span>rc</span></a> <a href=\"https://soc.saiyajin.space/tags/arc\" class=\"mention hashtag\" rel=\"tag\">#<span>arc</span></a></p>" }, "attachment": [], "tag": [ { "type": "Hashtag", "href": "https://soc.saiyajin.space/tags/lisp", "name": "#lisp" }, { "type": "Hashtag", "href": "https://soc.saiyajin.space/tags/zig", "name": "#zig" }, { "type": "Hashtag", "href": "https://soc.saiyajin.space/tags/closures", "name": "#closures" }, { "type": "Hashtag", "href": "https://soc.saiyajin.space/tags/garbagecollector", "name": "#garbagecollector" }, { "type": "Hashtag", "href": "https://soc.saiyajin.space/tags/arc", "name": "#arc" }, { "type": "Hashtag", "href": "https://soc.saiyajin.space/tags/coding", "name": "#coding" }, { "type": "Hashtag", "href": "https://soc.saiyajin.space/tags/programming", "name": "#programming" }, { "type": "Hashtag", "href": "https://soc.saiyajin.space/tags/software", "name": "#software" }, { "type": "Hashtag", "href": "https://soc.saiyajin.space/tags/oss", "name": "#oss" }, { "type": "Hashtag", "href": "https://soc.saiyajin.space/tags/foss", "name": "#foss" }, { "type": "Hashtag", "href": "https://soc.saiyajin.space/tags/ossdev", "name": "#ossdev" }, { "type": "Hashtag", "href": "https://soc.saiyajin.space/tags/fossdev", "name": "#fossdev" }, { "type": "Hashtag", "href": "https://soc.saiyajin.space/tags/rust", "name": "#rust" }, { "type": "Hashtag", "href": "https://soc.saiyajin.space/tags/softwaredevelopment", "name": "#softwaredevelopment" }, { "type": "Hashtag", "href": "https://soc.saiyajin.space/tags/pldev", "name": "#pldev" }, { "type": "Hashtag", "href": "https://soc.saiyajin.space/tags/programminglanguages", "name": "#programminglanguages" }, { "type": "Hashtag", "href": "https://soc.saiyajin.space/tags/referencecounting", "name": "#referencecounting" }, { "type": "Hashtag", "href": "https://soc.saiyajin.space/tags/rc", "name": "#rc" } ], "replies": { "id": "https://soc.saiyajin.space/users/mai_lapyst/statuses/113620522027051515/replies", "type": "Collection", "first": { "type": "CollectionPage", "next": "https://soc.saiyajin.space/users/mai_lapyst/statuses/113620522027051515/replies?only_other_accounts=true&page=true", "partOf": "https://soc.saiyajin.space/users/mai_lapyst/statuses/113620522027051515/replies", "items": [] } }, "likes": { "id": "https://soc.saiyajin.space/users/mai_lapyst/statuses/113620522027051515/likes", "type": "Collection", "totalItems": 13 }, "shares": { "id": "https://soc.saiyajin.space/users/mai_lapyst/statuses/113620522027051515/shares", "type": "Collection", "totalItems": 7 } }