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.
{
"@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"
}
],
"id": "https://infosec.exchange/users/lcamtuf/statuses/109725682712687513/activity",
"type": "Create",
"actor": "https://infosec.exchange/users/lcamtuf",
"published": "2023-01-21T06:04:07Z",
"to": [
"https://www.w3.org/ns/activitystreams#Public"
],
"cc": [
"https://infosec.exchange/users/lcamtuf/followers"
],
"object": {
"id": "https://infosec.exchange/users/lcamtuf/statuses/109725682712687513",
"type": "Note",
"summary": null,
"inReplyTo": null,
"published": "2023-01-21T06:04:07Z",
"url": "https://infosec.exchange/@lcamtuf/109725682712687513",
"attributedTo": "https://infosec.exchange/users/lcamtuf",
"to": [
"https://www.w3.org/ns/activitystreams#Public"
],
"cc": [
"https://infosec.exchange/users/lcamtuf/followers"
],
"sensitive": false,
"atomUri": "https://infosec.exchange/users/lcamtuf/statuses/109725682712687513",
"inReplyToAtomUri": null,
"conversation": "tag:infosec.exchange,2023-01-21:objectId=38926587:objectType=Conversation",
"content": "<p>Time is a flat circle and all that.</p><p>It used to be that if you had a need for an embedded processor, you'd either write code for a "bare metal" microcontroller, or grab a compact real-time OS of some sort (the latter mostly if you needed a complete networking stack, a filesystem, or something like that).</p><p>Nowadays, most people just get a powerful system-on-a-chip (SoC) running Linux, even if their project is as simple as blinking some Christmas lights. But Linux does Linux things, and getting predictable and performant hardware I/O from userspace is a crapshoot. You do 'echo 1 >/sys/class/gpio/gpio60/value' and some indeterminate time later, a pin changes state. Forget gigabit data transfer speeds - you might have a hard time playing back audio on a speaker.</p><p>So now, some SoCs come with a separate processor on the die - a Programmable Real-time Unit (PRU). It's a semi-standalone device that lets you run simple code in a "bare metal" environment with a bit of RAM and program memory to orchestrate your GPIO:</p><p><a href=\"https://beagleboard.org/pru\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" translate=\"no\"><span class=\"invisible\">https://</span><span class=\"\">beagleboard.org/pru</span><span class=\"invisible\"></span></a></p><p>In this model, Linux running on the main CPU just tells the PRU "please play back fart sounds on pin 60", and your code running on the PRU handles the particulars of toggling the pin in real time.</p><p>I suspect it's just a matter of time before we find a way to run Linux on the PRU, and then demand a second PRU to solve the I/O issues that would arise.</p>",
"contentMap": {
"en": "<p>Time is a flat circle and all that.</p><p>It used to be that if you had a need for an embedded processor, you'd either write code for a "bare metal" microcontroller, or grab a compact real-time OS of some sort (the latter mostly if you needed a complete networking stack, a filesystem, or something like that).</p><p>Nowadays, most people just get a powerful system-on-a-chip (SoC) running Linux, even if their project is as simple as blinking some Christmas lights. But Linux does Linux things, and getting predictable and performant hardware I/O from userspace is a crapshoot. You do 'echo 1 >/sys/class/gpio/gpio60/value' and some indeterminate time later, a pin changes state. Forget gigabit data transfer speeds - you might have a hard time playing back audio on a speaker.</p><p>So now, some SoCs come with a separate processor on the die - a Programmable Real-time Unit (PRU). It's a semi-standalone device that lets you run simple code in a "bare metal" environment with a bit of RAM and program memory to orchestrate your GPIO:</p><p><a href=\"https://beagleboard.org/pru\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" translate=\"no\"><span class=\"invisible\">https://</span><span class=\"\">beagleboard.org/pru</span><span class=\"invisible\"></span></a></p><p>In this model, Linux running on the main CPU just tells the PRU "please play back fart sounds on pin 60", and your code running on the PRU handles the particulars of toggling the pin in real time.</p><p>I suspect it's just a matter of time before we find a way to run Linux on the PRU, and then demand a second PRU to solve the I/O issues that would arise.</p>"
},
"updated": "2023-01-21T16:53:56Z",
"attachment": [],
"tag": [],
"replies": {
"id": "https://infosec.exchange/users/lcamtuf/statuses/109725682712687513/replies",
"type": "Collection",
"first": {
"type": "CollectionPage",
"next": "https://infosec.exchange/users/lcamtuf/statuses/109725682712687513/replies?only_other_accounts=true&page=true",
"partOf": "https://infosec.exchange/users/lcamtuf/statuses/109725682712687513/replies",
"items": []
}
},
"likes": {
"id": "https://infosec.exchange/users/lcamtuf/statuses/109725682712687513/likes",
"type": "Collection",
"totalItems": 124
},
"shares": {
"id": "https://infosec.exchange/users/lcamtuf/statuses/109725682712687513/shares",
"type": "Collection",
"totalItems": 51
}
}
}