pub.leaflet.document
Samples
1135 randomly sampled records from the AT Protocol firehose
pub.leaflet.document (100 samples)
{
"$type": "pub.leaflet.document",
"pages": [
{
"$type": "pub.leaflet.pages.linearDocument",
"blocks": [
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.blockquote",
"facets": [],
"plaintext": "New body"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.images",
"images": [
{
"alt": "Image attachment",
"image": {
"ref": {
"$link": "bafkreieqsa64jrt2o2ty2ysfin3zzf3ruixedkwkm7qtuu5dndyxfw65ee"
},
"size": 1261894,
"$type": "blob",
"mimeType": "image/png"
}
}
]
}
}
]
}
],
"title": "New image",
"author": "did:plc:iq44hcebgqaom6jvtcd3ln73",
"description": "",
"publishedAt": "2026-04-17T13:07:28.793Z"
}
did:plc:iq44hcebgqaom6jvtcd3ln73 | at://did:plc:iq44hcebgqaom6jvtcd3ln73/pub.leaflet.document/3mjoyksxkiu2q
app.bsky.feed.post (nested within pub.leaflet.document) (100 samples)
{
"$type": "pub.leaflet.document",
"pages": [
{
"$type": "pub.leaflet.pages.linearDocument",
"blocks": [
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "Today's Daily Planet is the second of two on the great chronicler of Energy politics: Daniel Yergin. Today, we cover his book on the new energy landscape. Already dated though because of China's rapid expansion."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.image",
"image": {
"ref": {
"$link": "bafkreigttlgefmgn3fk2krryi7dzesjyo5zgbrggloxwplxos77hg6xsci"
},
"size": 2891168,
"$type": "blob",
"mimeType": "image/png"
},
"aspectRatio": {
"width": 1382,
"height": 2070
}
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "Daniel Yergin's The New Map is a terrific tale of how the evolving energy landscape is reshaping global geopolitics, security, and economic power. At its core, the book reveals a transformed world where energy is not just a commodity but a central axis of political influence and strategic rivalry. Yergin highlights the emergence of the \"big three\" oil producers - the United States, Saudi Arabia, and Russia - with the U.S. now the world's largest oil producer thanks to the Shale Revolution. This shift has altered the traditional balance of power, making energy security a more complex and dynamic issue."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "The book delves into the disruptive impact of technology on energy markets, from hydraulic fracturing and shale gas to the rapid decline in solar energy costs and the rise of digitalization. These technological advances are accelerating the energy transition, influencing transportation, manufacturing, and the broader global economy. Yergin also emphasizes the interconnectedness of energy and geopolitics, particularly in the tense relationship between the U.S. and China. He draws a compelling analogy between today's U.S.-China rivalry and the pre-World War I tensions between Great Britain and Germany, underscoring the risks and challenges of managing this strategic competition."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "The New Map addresses the complexities of climate change policy in the context of energy production, noting the delicate balance between advancing environmental goals and maintaining energy self-sufficiency. Yergin points out that oil and gas remain deeply embedded in everyday life and industry, making abrupt shifts difficult. The book also explores how the COVID-19 pandemic has disrupted energy markets, causing investment cutbacks and raising questions about future supply and demand."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "Ultimately, Yergin provides a comprehensive framework for understanding the new geopolitical order shaped by energy revolutions, technological innovation, and shifting alliances. The New Map is a vital guide to navigating the intertwined futures of energy and global power in the 21st century."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"src": "https://www.csis.org/analysis/daniel-yergin-new-map",
"$type": "pub.leaflet.blocks.website",
"title": "Daniel Yergin on \"The New Map\"",
"description": "Pulitzer Prize-winning author and global energy expert Daniel Yergin talks with Andrew and Scott about his latest book, The New Map and the way technology revolutions in energy are influencing geopolitics, security, climate, and health.",
"previewImage": {
"ref": {
"$link": "bafkreiezhmxdgtnu55o2vebjjbbyqs3umnkvutj7nlt6n46jopa5tqo6ym"
},
"size": 3292,
"$type": "blob",
"mimeType": "image/png"
}
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
}
]
}
],
"title": "The Daily Planet #63: Energy Sovereignty, Part 6. The Map/Daniel Yergin",
"author": "did:plc:f5bi3qiwfdxnlbvb44oudmrv",
"postRef": {
"cid": "bafyreiaut3lsirle4jaxkg3g6xg627fp742zlalgfg77shfnrfit5pklfu",
"uri": "at://did:plc:f5bi3qiwfdxnlbvb44oudmrv/app.bsky.feed.post/3m3zlpasb4k2p",
"commit": {
"cid": "bafyreihh7wugqmjdgpkmru2zhtcmpq66uellnd43gtg2dgdrb22jnsodwi",
"rev": "3m3zlpavwtw2p"
},
"validationStatus": "valid"
},
"description": "",
"publication": "at://did:plc:f5bi3qiwfdxnlbvb44oudmrv/pub.leaflet.publication/3lwgwusi37s25",
"publishedAt": "2025-10-25T14:23:45.676Z"
}
did:plc:f5bi3qiwfdxnlbvb44oudmrv | at://did:plc:f5bi3qiwfdxnlbvb44oudmrv/pub.leaflet.document/3m3zlozjnr22p
app.bsky.richtext.facet (nested within pub.leaflet.document) (1 sample)
{
"$type": "pub.leaflet.document",
"pages": [
{
"$type": "pub.leaflet.pages.linearDocument",
"blocks": [
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "Body"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 29,
"byteStart": 0
},
"features": [
{
"uri": "https://bsky.network/xrpc/com.atproto.sync.getBlob?did=did:plc:iq44hcebgqaom6jvtcd3ln73&cid=bafkreihxsazqjsm3dqs34e36odw4ngeb57i6nqqyo37g3pkgje2rzsopzm",
"$type": "app.bsky.richtext.facet#link"
}
]
}
],
"plaintext": "đźď¸ View Image attachment"
}
}
]
}
],
"title": "Hello image 2",
"author": "did:plc:iq44hcebgqaom6jvtcd3ln73",
"description": "",
"publishedAt": "2026-04-17T12:54:24.692Z"
}
did:plc:iq44hcebgqaom6jvtcd3ln73 | at://did:plc:iq44hcebgqaom6jvtcd3ln73/pub.leaflet.document/3mjoxth6e2z2e
com.atproto.label.defs (nested within pub.leaflet.document) (1 sample)
{
"$type": "pub.leaflet.document",
"pages": [
{
"$type": "pub.leaflet.pages.linearDocument",
"blocks": [
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "It was raining and Kagami was stuck at Konataâs house."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 296,
"byteStart": 286
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#italic"
}
]
}
],
"plaintext": "Just hours prior it hardly looked like it would rain, the sky was as blue as it had ever been and what clouds were there did not give any indication of what was to come, and yet the showers came - creating an ambient sound that would almost have been relaxing were it not for the inane video game that was being played."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "No, clouding the tranquil sound of rain falling was a soundtrack of murder and mayhem."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "Kagami was hardly one to credit Konata for her taste in video games, but this felt like a turn from what she usually got up to - a shooter game full of blood, guts, and not much else. Not that she understood Konataâs video game habits all that well to begin with, but still⌠she wondered if she should be concerned or not."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 257,
"byteStart": 250
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#italic"
}
]
}
],
"plaintext": "âSo this is the new game, huh?â Kagami asked, as she could faintly recall Konata mentioning the title of an upcoming game she was gonna pick up âat some point.â Judging by what she was seeing on screen, the title she was remembering at least sounded like it couldâve been the one she had now."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "âHm,â Konata replied, affirmatively, not looking away from her game."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 11,
"byteStart": 9
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#italic"
}
]
},
{
"index": {
"byteEnd": 196,
"byteStart": 190
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#italic"
}
]
}
],
"plaintext": "What was up with her? It felt sometimes like Kagami knew way more about Konata than sheâd ever asked to know, entirely against her will, and yet the blue-haired otaku could be an absolute enigma when she wanted to be - leaving Kagami to wonderâŚ"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 158,
"byteStart": 152
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#italic"
}
]
},
{
"index": {
"byteEnd": 185,
"byteStart": 182
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#italic"
}
]
},
{
"index": {
"byteEnd": 220,
"byteStart": 216
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#italic"
}
]
},
{
"index": {
"byteEnd": 333,
"byteStart": 325
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#italic"
}
]
}
],
"plaintext": "Konata had been picking up a lot of games, lately, so it had gotten harder for Kagami to keep track of what she was onto next. Not that she was keeping track, just⌠well, it was a lot of games. Konata used to have some weird sense of discernment, much as it pained Kagami to admit, but it felt like now she was just buying anything she could get her hands on as soon as she could get her hands on it."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "âBeen playing much of that online game lately?â Kagami asked, pivoting away from the game Konata was currently on. She just didnât really know how to make conversation about the violence that was as senseless as it was monotonous."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "âSorta,â Konata replied, âMs. Kuroiâs been weirdly busy, and then the rest of the party is full of schedules that never line up anymore, so I havenât had much to do besides getting my log-in bonuses every day.â"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "Kagami sighed. As weird as it all was for her, even she could understand on some level that this group Konata got together with was some sort of positive thing to have in her life."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "âThat sucks,â she sympathized, âI guess everyone has to move on from playing the same game eventually,â she figured, eliciting a very low hum of acknowledgement from Konata, âbut wasnât there one person on your team who you were close with besides Ms. Kuroi?â"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "âHm?â Konata responded, curiously."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 118,
"byteStart": 115
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#italic"
}
]
}
],
"plaintext": "âYeah,â Kagami said, as the knowledge came back to her, âI think you said you had a wife? Who was a guy? But you were playing a guy, even though youâre a girl, and you were married inside the game⌠or something weird like that.â It felt so convoluted when she said it all back to her."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "âNot anymore,â Konata corrected her, near-monotone, ââgot divorced.â"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 41,
"byteStart": 35
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#italic"
}
]
},
{
"index": {
"byteEnd": 189,
"byteStart": 185
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#italic"
}
]
}
],
"plaintext": "âD-divorced?! You werenât even really married to begin wiââ Kagami started to say, before catching herself as she realized she couldâve hurt Konataâs feelings, âI mean⌠ugh, Iâm sorry Konata,â she apologized, before offering, âdo you wanna talk at all about it?â"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "âNot much to talk about,â Konata replied, not breaking eye contact with her game and barely modulating her voice as she spoke, âhis stupid wife didnât like it.â"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 73,
"byteStart": 60
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#italic"
}
]
},
{
"index": {
"byteEnd": 109,
"byteStart": 101
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#italic"
}
]
}
],
"plaintext": "âWait⌠you married someone in your game who was married in real-life? Doesnât that mean he was cheating on her with you?â questioned Kagami, a little shocked."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "âThey werenât married when we got married,â Konata answered, relieving Kagami somewhat, âactually, he met her afterward. She was ok with us being married in-game until she wasnât, he likes her more than he likes me, so yeah. Divorce.â"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 50,
"byteStart": 42
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#italic"
}
]
}
],
"plaintext": "It turned out the situation was the exact opposite of what Kagami assumed, and the bluntness with which Konata spoke was almost painful."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 17,
"byteStart": 11
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#italic"
}
]
},
{
"index": {
"byteEnd": 222,
"byteStart": 219
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#italic"
}
]
}
],
"plaintext": "âThat⌠really sucksâŚâ Kagami frowned, âI mean, to go back on what she said when you werenât even standing in the way of her relationship⌠itâs not like you were waiting and hoping heâd decide he liked you better, right?â"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "Silence."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 12,
"byteStart": 3
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#italic"
}
]
}
],
"plaintext": "âKonataâŚâ"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "âItâs whatever,â Konata replies, conspicuously pressing the buttons on her controller more harshly. It didnât seem like it was really âwhateverâ and Kagami didnât feel right letting her drop the subject that quickly."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "âYou donât have tââ"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "âItâs fine,â Konata stopped her, before being startled as Kagami reached over her shoulder to pause the game. Finally Konata turned around, only for Kagami to put her hand on her shoulder as they at last made direct eye contact."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 21,
"byteStart": 16
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#italic"
}
]
}
],
"plaintext": "âIt doesnât sound fine,â Kagami told her, as the vulnerability in Konataâs depressed heart began to well up like the tears in her green eyes. She could tell it made Konata uncomfortable, but she didnât let that stop her from holding her gaze in hers."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "âYou⌠itâŚâ Konata began to say a couple times, until finallyâŚ"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 12,
"byteStart": 7
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#italic"
}
]
}
],
"plaintext": "â⌠Fuck,â she sobbed, not offering any resistance when Kagami pulled her into a hug. Konata could hear nothing but the rain and the sound of her own weeping, now that the game had been paused, leaving her with no more distractions."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "Her escape from her feelings was foiled - despite her best efforts, she was feeling them again."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 43,
"byteStart": 41
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#italic"
}
]
}
],
"plaintext": "âI just wish that someone would choose me one time, yâknow?â Konata admitted, her voice muffled against Kagamiâs chest, âit feels like Iâve been the second-most important person, at best, to anyone Iâve met my whole lifeâŚ"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 43,
"byteStart": 36
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#italic"
}
]
}
],
"plaintext": "âWhy does there always have to be someone anyone would rather be with than me?â she wept, not knowing if there was an answer to her question or that she would even want to hear it."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "Not quite sure what to say to that, Kagami rubbed her back and held her. She really wasnât used to seeing Konata like this, it was like there was an air of irreverence surrounding everything she did and said most of the time. Did she miss that irreverence? Did she want her to feel better just so she could go back to not talking about how she felt?"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 227,
"byteStart": 221
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#italic"
}
]
},
{
"index": {
"byteEnd": 285,
"byteStart": 280
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#italic"
}
]
}
],
"plaintext": "That didnât feel right. Despite how unserious Konata so often was, and how inscrutable she could be with her weird interests, Kagami had gotten to know her surprisingly well - to the point where sheâd decide she even wanted to hang out with her. That was why she was there⌠wait."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "âNo,â Kagami responded, âthatâs not true,â she told her, causing Konata to let out a questioning whimper, âif it was, I wouldnât be here with you right now.â"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "âThatâs really nice of you to say, Kagamin⌠but you wouldnât be here if you knew it was gonna rain and youâd be stuck with me,â countered Konata, with a sad smile, the depression still convincing her of the truth of her misery."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 9,
"byteStart": 3
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#underline"
}
]
}
],
"plaintext": "âForget that,â replied Kagami, âI still chose to come hang out with you and Iâm not sorry I did,â she told her, âeven if Iâm probably âtriggering a flagâ or whatever youâd call it.â She felt stupid saying it, but she figured it might cheer Konata up."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "Konata looked back at her with those tired green eyes of hers, but no witty comeback came out. Instead, Kagami watched the sadness ever so subtly drain away from her smile. It was probably one of the most beautiful things Kagami had ever seen, but sheâd never admit to it."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 119,
"byteStart": 115
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#italic"
}
]
}
],
"plaintext": "âYou actually remembered the terminologyâŚâ was, for some reason, what Konata said back to her after what had felt like a very meaningful pause."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 16,
"byteStart": 8
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#italic"
}
]
},
{
"index": {
"byteEnd": 160,
"byteStart": 155
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#italic"
}
]
}
],
"plaintext": "âUgh, thatâs your takeaway?â Kagami reacted, âYou mention it often enough Iâd have a hard time forgetting it, itâs practically drilled into my skull at this point,â she complained half-heartedly, though she honestly couldnât be too mad even at Konataâs gaming nonsense in that moment."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "The incorrigible otaku nestled her face back into Kagamiâs chest and relaxed, with her latest lonely battle with depression won after receiving some much-needed reinforcements. It felt good to have another person in the house again, even if she was only visiting."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "âThanks, KagaminâŚâ Konata said, her muffled voice coming through clearly enough, âI guess it doesnât really matter whether youâre here by choice or not, just how you feel about it, yâknow?â"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "âYeah⌠how I feel about itâŚâ Kagami echoed, thinking back to what went through her mind earlier that day - back when the sun was still out."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.horizontalRule"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 8,
"byteStart": 3
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#italic"
}
]
}
],
"plaintext": "âSure.â That was all Konata had written when Kagami had offered to come over. Sheâd been meaning to spend some time with her again for a while, but one thing or another would come up and sheâd have to try and find another time to go and do it. Being holed up all alone for that long couldnât be good for her."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 59,
"byteStart": 0
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#italic"
}
]
}
],
"plaintext": "âGod knows sheâs hardly going out enough these days,â thought Kagami, as she slipped into her shoes. She was just about to head out when she heard Tsukasa call after her."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "âSis!â Tsukasa said, âBefore you go, I checked the weather app on my phone and it said there was a 30% chance of rain starting this evening!â"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "At that, Kagami looked outside. Barely a cloud in sight."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "âAre you sure there isnât a setting wrong with your phone, Tsukasa?â Kagami asked, skeptically. She knew she had a habit of getting deep into her phone, but she still wasnât above the occasional bout of absentmindedness."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 204,
"byteStart": 191
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#italic"
}
]
},
{
"index": {
"byteEnd": 316,
"byteStart": 311
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#italic"
}
]
}
],
"plaintext": "âNo, see? It says Saitama, and it could last all night after it starts,â Tsukasa replied, showing her screen, before her phone jingled as it notified her of a new text, âahh, wait, no, donât look!â she squeaked, turning her phone back around and attending to whomever had messaged her. Phones had the worst timing, sometimes."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 21,
"byteStart": 17
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#italic"
}
]
},
{
"index": {
"byteEnd": 114,
"byteStart": 111
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#italic"
}
]
}
],
"plaintext": "30% wasnât all that likely, but it gave Kagami pause. If she went out without an umbrella or raincoat and it did rain, sheâd be stuck at Konataâs. Would probably have to stay there overnight, by the sound of itâŚ"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 162,
"byteStart": 139
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#italic"
}
]
}
],
"plaintext": "âIâm sure itâll be fine,â Kagami told her sister, who offered a smile and nod before getting back to tapping out her next message. âSame old Tsukasa,â she thought, as she wondered if she could find the same old Konata in the house she was visiting."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.horizontalRule"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 204,
"byteStart": 200
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#italic"
}
]
}
],
"plaintext": "It took some digging, sure, but eventually she did sorta find her. They were both a bit older, some time had passed, but she could still recognize the girl whose face was planted firmly in her chest. Very firmly, actually."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 79,
"byteStart": 73
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#italic"
}
]
},
{
"index": {
"byteEnd": 214,
"byteStart": 211
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#italic"
}
]
}
],
"plaintext": "âSayâŚâ Kagami started, suspiciously, âyouâve been down there a while, yâknowâŚâ she mentioned, only to hear a giggle she hadnât heard in a long time⌠and could probably have gone a bit longer not hearing, honestly."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "âYouâve put on some pounds, I see,â Konata remarked, mischievously, âyour boobs are fuller than usual~â"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 23,
"byteStart": 13
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#italic"
}
]
}
],
"plaintext": "Yep. She had definitely found the âsame old Konata.â God help her, she found her."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "âIâm only letting that one slide because youâre too pathetic to hit on the head, tonight, got it?â Kagami replied."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 239,
"byteStart": 227
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#italic"
}
]
}
],
"plaintext": "âIf you say so, Kagamin~â sighed Konata, wrapping her arms around her in a hug that elicited what wouldâve been the cutest blush Konata had ever seen on Kagamiâs face⌠had she seen it. The boobs giveth, and the boobs taketh away."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "She was going to be stuck there the rest of the night, Kagami realized. A whole night spent with the most inscrutable and annoying person sheâd ever met. That was what sheâd chosen."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "With any luck, the night wouldnât run out too quickly."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 8,
"byteStart": 0
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
]
}
],
"plaintext": "The End."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.horizontalRule"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 17,
"byteStart": 0
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
]
}
],
"plaintext": "Authorâs Notes: Itâs my first Lucky Star fan-fic, and itâs of course dedicated to my favorite ship of the show - KonaKaga! I know I donât have them officially start a relationship here or kiss, but this is a KonaKaga fan-fic and you are not allowed to enjoy it while imagining itâs just platonic. If you were doing so before you reached these notes, no you didnât! I reach into the past and steal your enjoyment away! Mwahahaha! >:D"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "Something readers may notice that I am a little self-conscious of is that, for a Lucky Star fan-fic, this doesnât really have the casual conversational vibe of the source material nor is it authentically Japanese. Lucky Star has had more dramatic parts to it, though, and I like to think I stayed true enough to the characters and setting at least."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "Hope you enjoyed reading! Iâd love if you shared any thoughts you had while doing so! Thanks!"
}
}
]
}
],
"title": "A Chance of Rain",
"author": "did:plc:2atpw7zrdrdptzqo7jw63rzv",
"labels": {
"$type": "com.atproto.label.defs#selfLabels",
"values": [
{
"val": "sexual"
}
]
},
"description": "Kagami visits Konata while she is in the midst of withdrawing into yet another video game. What couldâve been harmless escapism has turned into something else, and it falls upon Kagami to pull her out of it.",
"publication": "at://did:plc:2atpw7zrdrdptzqo7jw63rzv/pub.leaflet.publication/3lvroq6qmac2o",
"publishedAt": "2025-07-30T22:03:27.969Z"
}
did:plc:2atpw7zrdrdptzqo7jw63rzv | at://did:plc:2atpw7zrdrdptzqo7jw63rzv/pub.leaflet.document/3lygpwotxqk2d
pub.leaflet.blocks.blockquote (nested within pub.leaflet.document) (59 samples)
{
"$type": "pub.leaflet.document",
"pages": [
{
"id": "019a4f94-ddc3-788a-a963-0a47a761861b",
"$type": "pub.leaflet.pages.linearDocument",
"blocks": [
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 29,
"byteStart": 14
},
"features": [
{
"uri": "https://en.wikipedia.org/wiki/Jevons_paradox",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "I think about Jevons' paradox a lot when it comes to AGI. Once intelligence becomes a commodity, so that capability at the 90th percentile of current knowledge worker competence in all current knowledge worker categories (think: doctor, lawyer, accountant, analyst, scientist) is available on tap. What will that world look like?"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "Our friend from the Bitter Lesson has some thoughts on this matter:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.blockquote",
"facets": [],
"plaintext": "The biggest lesson that can be read from 70 years of AI research is that general methods that leverage computation are ultimately the most effective, and by a large margin. The ultimate reason for this is Moore's law, or rather its generalization of continued exponentially falling cost per unit of computation. Most AI research has been conducted as if the computation available to the agent were constant (in which case leveraging human knowledge would be one of the only ways to improve performance) but, over a slightly longer time than a typical research project, massively more computation inevitably becomes available."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.image",
"image": {
"ref": {
"$link": "bafkreifsykdjdm64756nff2z4mkk42g4ptayge575dcvg6mie76vjw7upy"
},
"size": 2073876,
"$type": "blob",
"mimeType": "image/gif"
},
"aspectRatio": {
"width": 1000,
"height": 750
}
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "Now imagine a world in which massive computation is available to everyone, so that we have a 90th percentile doctor/lawyer/therapist/analyst available for $20 a month. Forget whether this almost-AGI can discover new theories or write better songs: most of us don't do that either. Nevertheless, what we will have is the collected wisdom (and hatred, and greed, so not just the good things) of humanity available to everyone."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.blockquote",
"facets": [],
"plaintext": "What might that world look like?"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "Let's say a Radiology exam costs $10 instead of $1000 - there will be a lot more use of these tests (that would be the Jevons' paradox for Radiology) and lead to more Radiologist hires before demand peaks (we don't need an exam everyday, for example) and productivity improves and hiring stops."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 397,
"byteStart": 362
},
"features": [
{
"uri": "https://substack.com/home/post/p-175156576",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Note that 90th percentile Radiology competence isn't in the distant future: it's already here, and if compute was super cheap and plentiful, we would be having more exams already. That's the future the hyperscalers are trying to build for - I finally understand the logic of the build out even if they may never make money out of it. As I said in a comment on a wonderful analysis of the AI Bubble:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.blockquote",
"facets": [],
"plaintext": "In a recursive version of the bitter lesson, tech futurists like Negroponte flog their bespoke futures (remember OLPC?) when you would much rather let the general purpose discovery engine (aka the market) figure out what the future will bring. With AI, the human wannabe prophet's existential dilemmas are even more poignant, and will likely be even more wrong. I would just build massive data/energy (over)capacity and let the world figure out the rest."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "Key line from today's #DailyPlanet:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.blockquote",
"facets": [],
"plaintext": "Artificial intelligence is rapidly spreading across the economy and society. But radiology shows us that it will not necessarily dominate every field in its first years of diffusion -- at least until these common hurdles are overcome. Exploiting all of its benefits will involve adapting it to society, and society's rules to it."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"src": "https://worksinprogress.co/issue/the-algorithm-will-see-you-now/",
"$type": "pub.leaflet.blocks.website",
"title": "The algorithm will see you now - Works in Progress Magazine",
"description": "Radiology combines digital images, clear benchmarks, and repeatable tasks. But replacing humans with AI is harder than it seems.",
"previewImage": {
"ref": {
"$link": "bafkreihyei3y6eclioi6gxskiisovguh5h32cy3cltxeiy47dacnwaj5wy"
},
"size": 81055,
"$type": "blob",
"mimeType": "image/png"
}
}
}
]
}
],
"title": "The Daily Planet #92: The AI Bubble, Part 17",
"author": "did:plc:f5bi3qiwfdxnlbvb44oudmrv",
"postRef": {
"cid": "bafyreid3bj6jl5xy4tu6eiiugjvkruqszpdkfu6ad2o3kyixlsksx3kyxa",
"uri": "at://did:plc:f5bi3qiwfdxnlbvb44oudmrv/app.bsky.feed.post/3m6pgo2u24c23",
"commit": {
"cid": "bafyreihh623mng3g26qwgrjzw5pv4a55qv4yt6lbl5byvjxdoamqn7xjru",
"rev": "3m6pgo2wz3w2q"
},
"validationStatus": "valid"
},
"description": "",
"publication": "at://did:plc:f5bi3qiwfdxnlbvb44oudmrv/pub.leaflet.publication/3lwgwusi37s25",
"publishedAt": "2025-11-28T17:42:35.794Z"
}
did:plc:f5bi3qiwfdxnlbvb44oudmrv | at://did:plc:f5bi3qiwfdxnlbvb44oudmrv/pub.leaflet.document/3m6pgnunils23
pub.leaflet.blocks.bskyPost (nested within pub.leaflet.document) (33 samples)
{
"$type": "pub.leaflet.document",
"pages": [
{
"$type": "pub.leaflet.pages.linearDocument",
"blocks": [
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "Last week, I took the first steps toward expanding the types of content supported on AT Explore. I started working on Leaflet documents and began laying the foundation for ActivityPub integration."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "Iâve wanted to support custom lexicons for a while. Right now, all protocol content shows up on AT Explore, but most record types outside the official Bluesky schemas just fall back to a generic UX. It works, but itâs not really user-friendly. I want AT Explore to eventually handle as many record types as possible."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 2,
"facets": [],
"plaintext": "Why Leaflet?"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "Leaflet felt like an interesting place to start. Itâs been popping up all over Bluesky lately, and once I realized it stores records directly in a PDS, I figured it was worth adding. Long-form content is a bit different than what you normally see on the AT Protocol, which is mostly short-form. That brought along some new considerations for me, since so far Iâve really only supported short-form content. It also introduces new UX challenges. Iâve actually been kicking around the idea of showing feeds that mix long and short form â something I havenât really seen done well yet."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "Most of my time went into figuring out how to resolve lexicon schemas. I wanted to build something that would scale to other lexicons in the future. I set up a system to pull schemas directly from the AT Protocol and validate records against them. I also built some debugging tools to help with this. The nice part is that schemas can be validated at runtime, and if something doesnât line up or changes later, those tools will help me catch it."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "Getting Leaflet to render wasnât just about pulling the records â I also needed a way to translate the schema into actual components. Each block type in the schema (like text, headers, or images) maps to a component on my side that knows how to display it. I set up a generic rich text component that I use for both Bluesky posts and Leaflet, and I extended it so I can plug in different components based on the facets defined in the schema."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "Leaflet support is close, and Iâm hoping to launch it sometime this week. Iâll probably roll it out in a beta environment first to do some more testing, but Iâll share it out once itâs live."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.bskyPost",
"postRef": {
"cid": "bafyreicpfvxcel5o6qtvb56ro3mf5www4a6jzvgd3hjjkj4x42cvcw2vim",
"uri": "at://did:plc:voaulu4vdmpdwevimf4i6lnj/app.bsky.feed.post/3lzacg7faqk25"
}
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 2,
"facets": [],
"plaintext": "ActivityPub experiments"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "At the same time, I started poking at ActivityPub. Thatâs something Iâve been wanting to try for a while. From the beginning, one of my goals with AT Explore has been to make it a data explorer for both ActivityPub and the AT Protocol."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "Right now, itâs super basic â just pulling profiles and posts. But even that makes it clear how powerful this could be. The idea is to let people browse ActivityPub content right alongside AT Protocol content. Instead of treating them like separate silos, AT Explore could make them feel like different neighborhoods on the same map. I kind of think of it like a web browser, but for the open social web."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.bskyPost",
"postRef": {
"cid": "bafyreihfysiop7lfuc6lgegmfyfya7f6z4mnnsnns6b2qjgeayzi4cgtta",
"uri": "at://did:plc:voaulu4vdmpdwevimf4i6lnj/app.bsky.feed.post/3lza5jmw72s25"
}
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 2,
"facets": [],
"plaintext": "Whatâs next"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "This week Iâm planning to wrap up Leaflet support and keep building out ActivityPub. If everything goes well, Iâd like to launch Leaflet documents by the end of the week and also come away with a clearer plan for where I want to take ActivityPub next."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "Longer term, I want to support more lexicons so AT Explore can surface almost any data type in a way thatâs actually useful. Once ActivityPub feels solid, the bigger challenge will be putting the two side by side â letting you jump from a Bluesky record to a Mastodon post in one flow."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "Iâll probably do a longer post soon that digs more into the technical details, but right now my focus is just on getting the foundations solid."
}
}
]
}
],
"title": "Building Support for Custom Lexicons and ActivityPub on AT Explore. ",
"author": "did:plc:voaulu4vdmpdwevimf4i6lnj",
"postRef": {
"cid": "bafyreibsywc3hne3zdvegmpjtz7puxzoymdbkpsy6odm5jilbz6zkhxjqi",
"uri": "at://did:plc:voaulu4vdmpdwevimf4i6lnj/app.bsky.feed.post/3lzhokcexzs2w",
"commit": {
"cid": "bafyreids5dvakad5gxcnjlxm56eeb2y24q3uuajblijtuqhbulvsaklhm4",
"rev": "3lzhokcj7i523"
},
"validationStatus": "valid"
},
"description": "",
"publication": "at://did:plc:voaulu4vdmpdwevimf4i6lnj/pub.leaflet.publication/3lyxordsb4k2a",
"publishedAt": "2025-09-23T00:36:24.236Z"
}
did:plc:voaulu4vdmpdwevimf4i6lnj | at://did:plc:voaulu4vdmpdwevimf4i6lnj/pub.leaflet.document/3lzhok4z4z22w
pub.leaflet.blocks.button (nested within pub.leaflet.document) (6 samples)
{
"tags": [
"sliceoflife",
"hobbies"
],
"$type": "pub.leaflet.document",
"pages": [
{
"id": "019afbb3-c67c-7112-a670-462f7589f963",
"$type": "pub.leaflet.pages.linearDocument",
"blocks": [
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 36,
"byteStart": 0
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
]
},
{
"index": {
"byteEnd": 61,
"byteStart": 36
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
},
{
"$type": "pub.leaflet.richtext.facet#italic"
}
]
},
{
"index": {
"byteEnd": 62,
"byteStart": 61
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
]
}
],
"plaintext": "Hello everyone, and welcome back to This Month With Cristobal!"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.image",
"image": {
"ref": {
"$link": "bafkreibsxluxo266jwx6scp4ppwwss4fem26b7z3irjr5tfcr7esj6bfse"
},
"size": 75190,
"$type": "blob",
"mimeType": "image/png"
},
"aspectRatio": {
"width": 200,
"height": 200
}
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.horizontalRule"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 363,
"byteStart": 326
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#italic"
}
]
}
],
"plaintext": "November is the perfect time of the year for Mariah Carey to defrost, even though her way of defrosting this year felt insulting to people who want to find alternatives to celebrate the holidays. 93.9 Lite FM had started playing Christmas music on November 4th, with the first song to play being Mavis Staples' theme song for National Lampoon's Christmas Vacation; all while the broadcast was recorded on my portable cassette player/recorder."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 147,
"byteStart": 123
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#italic"
}
]
},
{
"index": {
"byteEnd": 219,
"byteStart": 187
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#italic"
}
]
}
],
"plaintext": "I've been in repeated drama (Thanks, Mom!) all through the month, but I know to make it content for my therapist (he's got Cristobal's Water-cooler via email) and for my subscribers (via Dialogue with Cristobal Martinez)."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 211,
"byteStart": 186
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#italic"
}
]
}
],
"plaintext": "It's been two months since I've joined Leaflet, and don't get me wrong, I'm still trying to find a style for both of my Leaflet publications. Now, I decide to treat each monthly post on This Month With Cristobal as an issue of a magazine, thanks to the features that Leaflet is constantly adding."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "So in this \"issue\" of a month in review, I would like to share the moments I had this November. Each moment has its dedicated subpage. I hope everyone had a nice November, and will have a stunning December!"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 21,
"byteStart": 0
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
]
}
],
"plaintext": "âCristobal Martinez"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.horizontalRule"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 1,
"facets": [],
"plaintext": "Style"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"id": "019b1aed-fdfc-7551-ac1a-afadfc31c0b5",
"$type": "pub.leaflet.blocks.page"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 1,
"facets": [],
"plaintext": "Shopping"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"id": "019b1fa6-f415-7446-93ab-b258c5697c10",
"$type": "pub.leaflet.blocks.page"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"id": "019b67f4-7768-7ee3-826f-8e59e7e9dc1a",
"$type": "pub.leaflet.blocks.page"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 1,
"facets": [],
"plaintext": "Entertainment"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.image",
"image": {
"ref": {
"$link": "bafkreicp72eaw6whhu7a57rmtwx625ufywj434lx4nglrn6ngk26knun2q"
},
"size": 2926718,
"$type": "blob",
"mimeType": "image/jpeg"
},
"aspectRatio": {
"width": 3072,
"height": 4096
}
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 2,
"facets": [],
"plaintext": "Wicked: For Good"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 8,
"byteStart": 0
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#italic"
}
]
},
{
"index": {
"byteEnd": 58,
"byteStart": 49
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#italic"
}
]
}
],
"plaintext": "Part One had its moments where I needed to weep. For Good had me in a heavy position. The friendship between Elphaba and Glinda grew on me, and the sex cardigan? Where can I get it? Name the store, and I will make a purchase."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 2,
"facets": [],
"plaintext": "Rick Steves' European Christmas"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "I had to watch it again on Hoopla after watching it religiously a couple of times on YouTube. I didn't finish it on Hoopla, but I knew the sentiment of the whole documentary."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.horizontalRule"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 39,
"byteStart": 14
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#italic"
}
]
}
],
"plaintext": "That's it for This Month With Cristobal! Special shout out to the one subscriber on Bluesky for enjoying this publication. If you have not subscribed, please do so below this edition."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 100,
"byteStart": 68
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#italic"
}
]
}
],
"plaintext": "If you want to know whatever tea I spill, go follow my gossip blog, Dialogue with Cristobal Martinez."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"url": "https://dialogue-with-cristobal-martinez.leaflet.pub/",
"text": "Dialogue with Cristobal Martinez",
"$type": "pub.leaflet.blocks.button"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "I hope to see you for my December 2025 in review and 2025 as a whole soon. Later!"
}
}
]
},
{
"id": "019b67f4-7768-7ee3-826f-8e59e7e9dc1a",
"$type": "pub.leaflet.pages.linearDocument",
"blocks": [
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 1,
"facets": [],
"plaintext": "Hershey's at Ulta?"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "Beekman 1802 (is it right?) partnered with Hershey's to release their self-care brands. Do you want to know the first thing that stood out to me?"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.image",
"image": {
"ref": {
"$link": "bafkreihp6dximzpycrloygswborfxi5fup3x2tbnw7ncpbub73ietmscwu"
},
"size": 2499322,
"$type": "blob",
"mimeType": "image/jpeg"
},
"aspectRatio": {
"width": 3072,
"height": 4096
}
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "Child, when I tell you, my hands would've smelled like a Hershey's chocolate bar if I had grabbed it off the shelf."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.image",
"image": {
"ref": {
"$link": "bafkreidrm5ikjk5ajslxp5jzphyexjtsfyc6fo7sue3dvlbsx4lt4fzhp4"
},
"size": 2806205,
"$type": "blob",
"mimeType": "image/jpeg"
},
"aspectRatio": {
"width": 4096,
"height": 3072
}
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.image",
"image": {
"ref": {
"$link": "bafkreih6uhuobap6ebg5w5vqm4jq2w7tklwsmmspfuxhvx4pwqusxgppea"
},
"size": 2855036,
"$type": "blob",
"mimeType": "image/jpeg"
},
"aspectRatio": {
"width": 3072,
"height": 4096
}
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "Jumbo Hershey's Kisses goat milk soaps? I swear Beekman 1802 is giving their target buyers pica. There is some scrub they have in small containers (I think)."
}
}
]
},
{
"id": "019b1aed-fdfc-7551-ac1a-afadfc31c0b5",
"$type": "pub.leaflet.pages.linearDocument",
"blocks": [
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 1,
"facets": [],
"plaintext": "Getting My Virtual Pets Into the Holiday Spirit"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "From the start of autumn until Halloween, my three virtual pets (two chihuahuas, Aaron and Omar, and a Japanese cat, Dante) were dressed in autumnal attire."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.image",
"image": {
"ref": {
"$link": "bafkreiecdkd3t2q5klez6mly7yh43ctmyw2tclpgiiivrvurpojc2lxqw4"
},
"size": 251906,
"$type": "blob",
"mimeType": "image/jpeg"
},
"aspectRatio": {
"width": 1280,
"height": 720
}
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "So cute!"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "When November came, it's Christmas season for my pets!"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.image",
"image": {
"ref": {
"$link": "bafkreicdmtzistr32l7nwecml7j2hlkfugesin3fyw75gwq4qmo4ysyyqa"
},
"size": 240411,
"$type": "blob",
"mimeType": "image/jpeg"
},
"aspectRatio": {
"width": 1280,
"height": 720
}
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "Aaron wears a Santa hat, Dante wears an angel halo, and Omar wears reindeer antlers. Omar later on wears a Santa Claus back decoration after I took the photos shown in this page."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.image",
"image": {
"ref": {
"$link": "bafkreihmh2wj4crndtfol7iudw4iwrm3xtwqbg75w7uhfoohmka7fccup4"
},
"size": 242581,
"$type": "blob",
"mimeType": "image/jpeg"
},
"aspectRatio": {
"width": 1280,
"height": 720
}
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "It's so good to raise pets with that holiday magic!"
}
}
]
},
{
"id": "019b1fa6-f415-7446-93ab-b258c5697c10",
"$type": "pub.leaflet.pages.linearDocument",
"blocks": [
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 1,
"facets": [],
"plaintext": "Holiday Decor at Target"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "I have managed to take plenty of photos at Target that contain items that I found interesting. Let's take a look:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.image",
"image": {
"ref": {
"$link": "bafkreifd5fil4s6m7n22qksk3eaydorj7kxwm5cy265ljtogecjr23sgy4"
},
"size": 3912687,
"$type": "blob",
"mimeType": "image/jpeg"
},
"aspectRatio": {
"width": 3072,
"height": 4096
}
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "Is it weird that Target has become a brand in itself? I may not like the choices the store made in this presidential era, it's nice to see Target hold a mirror to itself."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.image",
"image": {
"ref": {
"$link": "bafkreifjlzyi4enn36ja33fhxu47zaxew7qsg2uwqotfks7yxktaii7laa"
},
"size": 3034938,
"$type": "blob",
"mimeType": "image/jpeg"
},
"aspectRatio": {
"width": 3072,
"height": 4096
}
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "Analog vibes, what can I tell you?"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.image",
"image": {
"ref": {
"$link": "bafkreidynx2l5h7qi6ztcswj27iyc4e7llt5aejvvb3mq2sf2oxlxjbzcm"
},
"size": 3830452,
"$type": "blob",
"mimeType": "image/jpeg"
},
"aspectRatio": {
"width": 3072,
"height": 4096
}
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "I had to incorporate the Snoopy stocking because my inner chihuahua loves Snoopy."
}
}
]
}
],
"title": "Cristobal's November 2025 in Review",
"author": "did:plc:llumonvbk6mrkn3myaxpnsje",
"postRef": {
"cid": "bafyreideexs6rafdeyls54eyyee4pvpu5kybmgjktk24q37jy272gybnfi",
"uri": "at://did:plc:llumonvbk6mrkn3myaxpnsje/app.bsky.feed.post/3mb6huj4wq224",
"commit": {
"cid": "bafyreieqtjvg2ycbjg3knhsvacr6ks5mwlxya7q6jnnkgobdyj5rijs44q",
"rev": "3mb6huj75f72r"
},
"validationStatus": "valid"
},
"description": "Slow at first, but more eventful for me writing.",
"publication": "at://did:plc:llumonvbk6mrkn3myaxpnsje/pub.leaflet.publication/3m25p7vgwgc27",
"publishedAt": "2025-12-30T04:04:23.022Z"
}
did:plc:llumonvbk6mrkn3myaxpnsje | at://did:plc:llumonvbk6mrkn3myaxpnsje/pub.leaflet.document/3mb6huauxhk24
pub.leaflet.blocks.code (nested within pub.leaflet.document) (22 samples)
{
"$type": "pub.leaflet.document",
"pages": [
{
"id": "019ac0f2-34c2-7dd9-8d82-1a9bebf78753",
"$type": "pub.leaflet.pages.linearDocument",
"blocks": [
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 12,
"byteStart": 0
},
"features": [
{
"uri": "https://leetcode.com/problems/container-with-most-water/description",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "The question."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "This is a problem I'm very familiar with, so I appreciated the easy and breezy time. This feels like the type of problem that is really easy once you know how to do it, but there are some heuristics you need to know. "
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 2,
"facets": [],
"plaintext": "Premise - "
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "We're given an array of heights and tasked to find the two heights that yield the largest volume. "
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "The heuristics to know - "
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 40,
"byteStart": 0
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#italic"
}
]
},
{
"index": {
"byteEnd": 53,
"byteStart": 41
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#italic"
}
]
},
{
"index": {
"byteEnd": 59,
"byteStart": 54
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#italic"
}
]
}
],
"plaintext": "I'm not positive that I'm using the word 'heuristics' right"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.unorderedList",
"children": [
{
"$type": "pub.leaflet.blocks.unorderedList#listItem",
"content": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "The way to calculate the volume is to use the lower of the two heights as the height multiplied by the distance between the indexes of the heights. We choose the smaller of the two heights because if we use the taller height, the water would overflow over the smaller height. "
},
"children": []
},
{
"$type": "pub.leaflet.blocks.unorderedList#listItem",
"content": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "We solve this using two pointers, starting at the beginning and end of the array. At this state, the width is the most it can ever be. "
},
"children": []
},
{
"$type": "pub.leaflet.blocks.unorderedList#listItem",
"content": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "The algorithm for finding the greatest volume works as follows: "
},
"children": [
{
"$type": "pub.leaflet.blocks.unorderedList#listItem",
"content": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "Calculate your starting volume. That is now your largest. "
},
"children": []
},
{
"$type": "pub.leaflet.blocks.unorderedList#listItem",
"content": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "Look at your left and right pointer heights, and move the pointer associated with the smaller height closer to the center. This will make your width smaller by one, but it might find a higher height. "
},
"children": [
{
"$type": "pub.leaflet.blocks.unorderedList#listItem",
"content": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "Per the first point above, we move the smaller height in because it's the only way to possible find a larger overall height. The lower height is the constraint, so if we moved the taller height pointer in, we could only ever go down in height. "
},
"children": []
}
]
},
{
"$type": "pub.leaflet.blocks.unorderedList#listItem",
"content": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "For each move, we calculate total volume and replace \"largest\" if the volume is larger"
},
"children": []
},
{
"$type": "pub.leaflet.blocks.unorderedList#listItem",
"content": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "We finish when our left and right pointer overlap "
},
"children": []
}
]
}
]
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.code",
"language": "ts-tags",
"plaintext": "function maxArea(height: number[]): number {\n let largest = 0;\n let left = 0;\n let right = height.length - 1;\n\n while(\n left < right\n ){\n const leftHeight = height[left];\n const rightHeight = height[right];\n const isLeftLesser = leftHeight < rightHeight \n const lesser = isLeftLesser ? leftHeight : rightHeight;\n const width = right - left; \n const product = lesser * width;\n largest = product > largest ? product: largest\n\n if(isLeftLesser){\n left = left + 1\n }\n else{\n right = right - 1\n }\n }\n return largest\n};",
"syntaxHighlightingTheme": "synthwave-84"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "My solution above finished in the 95th percentile for runtime. "
}
}
]
}
],
"title": "Grind 75 problem 7 - Container With Most Water",
"author": "did:plc:c7frv4rcitff3p2nh7of5bcv",
"postRef": {
"cid": "bafyreieggxb4m4kybbw4m6q5iqetqfju7ih74c4j7rluxebux3nrdy4y5q",
"uri": "at://did:plc:c7frv4rcitff3p2nh7of5bcv/app.bsky.feed.post/3m6kfj5phps2t",
"commit": {
"cid": "bafyreifiaz64o2yy5hxtrgg4vefmbknlqcvqhvvujtfs5ceb6zj2ek56tu",
"rev": "3m6kfj5slbd2t"
},
"validationStatus": "valid"
},
"description": "",
"publication": "at://did:plc:c7frv4rcitff3p2nh7of5bcv/pub.leaflet.publication/3m5ftzyzat22a",
"publishedAt": "2025-11-26T17:38:37.895Z"
}
did:plc:c7frv4rcitff3p2nh7of5bcv | at://did:plc:c7frv4rcitff3p2nh7of5bcv/pub.leaflet.document/3m6kfiwtues2t
pub.leaflet.blocks.header (nested within pub.leaflet.document) (100 samples)
{
"$type": "pub.leaflet.document",
"pages": [
{
"$type": "pub.leaflet.pages.linearDocument",
"blocks": [
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "If I looked someone in the eye and said, \"Hey, I want you to have this apple, okay?\" and then gently, underhand-tossed it to them from a few feet away I'd expect most people to catch the apple. If someone didn't catch the apple, I might even kinda judge them, that they weren't really very present in the moment and I guess maybe they don't think very highly of me or my apple. "
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "But if, at the moment I gently toss the apple someone else tosses them a banana, and a beachball comes zooming in from out of nowhere, simultaneously arriving alongside a pineapple and a layer cake and suddenly a 2025 Toyota Corolla with a bow on the hood rolls into view (and deep down they've been desperately waiting for a pizza, which was not one of the items among the onslaught)...I would not at all expect them to catch my apple. "
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "I would hope they're okay. I'd even feel a little bad for contributing in a small way to it all. "
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "Sending any sort of digital message is like the second scenario, not the first. "
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 2,
"facets": [],
"plaintext": "Tech Tip: You can turn off Slack '{person} is typing...'"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.image",
"image": {
"ref": {
"$link": "bafkreiad56uxty2kozpv4lajuidjtvk4vsrslt2q27viix72vhsm6peuim"
},
"size": 201877,
"$type": "blob",
"mimeType": "image/png"
},
"aspectRatio": {
"width": 1338,
"height": 1008
}
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "Preferences->Messages & media->[ ] Display information about who is currently typing a message"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "Small one, but amazing. Your keystrokes in the text box next to my name are none of my business. I'll see your message when you send it to me. "
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 39,
"byteStart": 14
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#italic"
}
]
}
],
"plaintext": "Honestly, the {so-and-so} is typing... what even is that? How is that ever helpful information? "
}
}
]
}
],
"title": "I don't have your full attention. You don't have mine.",
"author": "did:plc:aurnkk6uy6axy66uqaq6dqy6",
"postRef": {
"cid": "bafyreihyoipsv64oy65pjlx4bgm6d6gv547y3m5qerjo76yeg4xayhcmy4",
"uri": "at://did:plc:aurnkk6uy6axy66uqaq6dqy6/app.bsky.feed.post/3m3v6v6rcls2d",
"commit": {
"cid": "bafyreiasms7323o6d7tausjqskiwpcpxgpwu66dvgfqj5g6gei2mcfoueu",
"rev": "3m3v6v6vmqb2p"
},
"validationStatus": "valid"
},
"description": "",
"publication": "at://did:plc:aurnkk6uy6axy66uqaq6dqy6/pub.leaflet.publication/3m6gjuzizxc27",
"publishedAt": "2025-10-23T20:23:50.345Z"
}
did:plc:aurnkk6uy6axy66uqaq6dqy6 | at://did:plc:aurnkk6uy6axy66uqaq6dqy6/pub.leaflet.document/3m3v6v2gddc2n
pub.leaflet.blocks.horizontalRule (nested within pub.leaflet.document) (78 samples)
{
"tags": [
"game design",
"ttrpg",
"osr",
"information architecture",
"design"
],
"$type": "pub.leaflet.document",
"pages": [
{
"id": "019bb3b4-68d0-7338-9f7c-42cb32cbe294",
"$type": "pub.leaflet.pages.linearDocument",
"blocks": [
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "Last week, Questing Beast's Ben Milton released a video in which he talked about Dungeon Crawl Classic (DCC) adventures, and why he generally doesn't like them very much. In it, he compares Goodman Game's DCC module \"Sailors on a Starless Sea\" to Necrotic Gnome's Dolmenwood module \"Winter's Daughter\", which he likes quite a bit."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "His preference is mostly about the way information is presented, not the information itself. It's very important to Milton how \"usable\" the text is at the table, when a GM is actually running the adventure for their players. Is information presented in a scannable way that facilitates improvisation and lessens the amount of preparation a GM needs to do ahead of time? This is the question that ultimately determines the quality of an adventure for Milton."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "Both Necrotic Gnome and Milton himself are well known for taking this \"command center layout\" approach to somewhat of an extreme in their published work, whereas Goodman Games's adventures read like old TSR modules for the most part, with lots of text and almost no markup, which makes it very hard to parse quickly."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 132,
"byteStart": 62
},
"features": [
{
"uri": "https://orthopraxy.bearblog.dev/eating-the-book-a-response-to-we-need-to-talk-about-goodman-games/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "As an answer to Milton's video, @orthopraxy.bsky.social wrote \"Eating the Book--a response to 'We Need to Talk About Goodman Games'\", in which they argue that while it's valid to have this preference for a terse, quick-to-scan layout, it's wrong to treat it as gospelâthe way Milton does."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 659,
"byteStart": 655
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#italic"
}
]
}
],
"plaintext": "They lay out a great argument for the benefits of the more prose-like traditional style: it allows you to \"eat the book\" (a phrase Orthopraxy borrowed from Dennis Detwiller's 2021 Delta Green campaign Impossible Landscape). What both Orthopraxy and Detwiller mean by this phrase is that a more wordy style is easier to read before your time at the table, as it's more entertaining and allows for more flourishes that in turn spark the reader's imagination. It might even be enjoyable to read on its own, without any intention of ever running it. Either way, the reader can actually internalise the contents of the adventure, to the point where they don't need the book anymore to run the adventure it describes."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "If you ignore everything about the way they are presented (and by whom), both of these preferences are equally valid in my opinion."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "Which is why my immediate reaction after watching and reading them was: Why not both?"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"url": "https://media.tenor.com/EKu-P3ELIeEAAAPo/why-not-both-both.mp4",
"$type": "pub.leaflet.blocks.iframe",
"height": 442
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 1,
"facets": [],
"plaintext": "The Horror"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "It's only natural to feel like there is one optimal way to present any given intended experience. Now, you might even feel like that optimal way differs from experience to experience, but for some reason, we always struggle with the idea of representing the same experience in different ways, at the same time. It feels redundant somehow, inelegant, like wasted time."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "But there's a great section in Jaako Stenros' and Markus Montola's book \"The Rule Book\" that talks about the way(s) the complicated board game Arkham Horror teaches itself, and how people, therefore, learn it."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 143,
"byteStart": 138
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#italic"
}
]
},
{
"index": {
"byteEnd": 224,
"byteStart": 220
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#italic"
}
]
}
],
"plaintext": "It comes with both a reference manual of formal rules, as well as a book with play instructionsâ basically a step by step tutorial that tells you how to play the game. In addition to this, there are videos online that show you how to play the game. Stenros and Montola write:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.blockquote",
"facets": [],
"plaintext": "We can look at the cooperative board game Arkham Horror Third Edition for variÂous types of play instructions. The game comes with two rule books: one containing all the formal rules and one containing play instructions. The Rules Reference book let outlines the distinction:\n"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.blockquote",
"facets": [
{
"index": {
"byteEnd": 333,
"byteStart": 1
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#italic"
}
]
}
],
"plaintext": "\"This document is the definitive source for all Arkham Horror Third Edition rules. This document is not intended to teach new players how to play the game. Players who wish to learn how to playfor the first time should read the Learn to Play booklet instead. As questions arise during the game, players should refer to this document.\"\n"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.blockquote",
"facets": [],
"plaintext": "Indeed, the Rules Reference booklet is difficult to understand if one does not already know how the game is played. The rule 001 sets the tone:\n"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.blockquote",
"facets": [
{
"index": {
"byteEnd": 175,
"byteStart": 1
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#italic"
}
]
}
],
"plaintext": "\"If a componentâs text directly contradicts  these rules, the component takes  precedence. The component overrides only the rule that applies to that specific situation.\"\n"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.blockquote",
"facets": [],
"plaintext": "The Learn to Play booklet strikes a very dif fer ent mood, opening with a vignette that situates the game in the Roaring Twenties:\n"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.blockquote",
"facets": [
{
"index": {
"byteEnd": 172,
"byteStart": 1
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#italic"
}
]
}
],
"plaintext": "\"Yet a dark shadow grows in the city of Arkham. Alien entities known as Ancient Ones lurk in the emptiness beyond space and time, writhing at the thresholds between worlds.\"\n"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.blockquote",
"facets": [],
"plaintext": "The booklet then continues with an overview, explanation of components, setup, and the  process of playing the game. Indeed, it is not unlike the usual printed rules in board gamesâ except that the booklet explicÂitly states that it omits some rules to make learning the game easier. Having two books is very useful: Learn to Play is Âorganized in a way that facilitates learning, and Rules Reference is  organized in a way that makes it easy to solve issues during the game."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.blockquote",
"facets": [],
"plaintext": "[...]"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.blockquote",
"facets": [],
"plaintext": "Despite  these official documents, many players choose to start learning from video tutorials on the internet."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 116,
"byteStart": 70
},
"features": [
{
"uri": "https://dododecahedron.blog/2025/11/22/the-osr-onion",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Now at least in traditional and OSR style play, it's fair to say that the adventure is part of the rules of the game. So why not treat it the same way as board games treat their rules?"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 1,
"facets": [],
"plaintext": "Blueprint vs. Render"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 505,
"byteStart": 498
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#italic"
}
]
}
],
"plaintext": "Both of the approaches above have different intentions, and they provide you with different things. And while I understand that part of the argument of \"eating the book\" is that doing so basically renders the reference obsolete, I don't tend to agree. At least in my experience, even having absorbed a traditional adventure pretty thoroughly, when the reality of play punches you in the face, it's always nice to have a well-presented key to fall back on, and improvise off of. The eaten part then informs your usage of that reference in the moment, and enlivens it in your mind."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "It's akin to the difference between a technical drawing or blueprint and an architectural render. Two views of the same building, that serve different purposes in the process."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.image",
"image": {
"ref": {
"$link": "bafkreib6zbd2yeaxc3iv3suy4evbprg2rgwe3nw4vzfgifycqoe6npwllu"
},
"size": 1451233,
"$type": "blob",
"mimeType": "image/png"
},
"aspectRatio": {
"width": 2599,
"height": 1180
}
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 14,
"byteStart": 0
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#italic"
}
]
},
{
"index": {
"byteEnd": 63,
"byteStart": 14
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#italic"
},
{
"uri": "https://www.homedesignersoftware.com/samples.html",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"textSize": "small",
"plaintext": "Image Source: https://www.homedesignersoftware.com/samples.html"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"textSize": "small",
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 1,
"facets": [],
"plaintext": "A Third Way"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "Now, just as in the case of the above Arkham Horror players opting for the third option of learning the rules via videos, ideally we could do the same with adventures."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "For at least two of them, we actually can. Ironically, thanks to the person who started all this in the first place: Milton has released both a video of him running Winter's Daughter, as well as one of him running the Mothership adventure The Haunting of Ypsilon 14.[1]"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "The latter is actually what really saved my ass when I recently found myself having to run Ypsilon 14 for a group of 8 semi-strangers without ever having run Mothership at all before. I had watched that video by Milton and having seen what he did helped me immensely in the moment. The \"command center layout\" couldn't have done that on its own (though Ypsilon 14 arguably sits somewhere in-between the two styles discussed above.)"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 1,
"facets": [],
"plaintext": "As Many Ways As Possible"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "I think ideally, every adventure would be presented in as many ways that have different advantages as possible. And I know that's not really possible for most productions, as effort, length and page count is a constant concern with these things. But I think there should be a few things from both camps that the other could keep in mind when writing adventures to make them easier to run for everyone."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "In a future post, I'll try to get more specific about what all of this would look like. I promise."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.horizontalRule"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 78,
"byteStart": 63
},
"features": [
{
"uri": "https://www.rascal.news/no-politics-is-always-a-red-flag-even-when-defending-your-tabletop-business/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "[1] I struggle to recommend watching Questing Beast videos for obvious reasons, so I will do the most cowardly thing and use them as (positive) examples but not link to them."
}
}
]
}
],
"title": "\"We Need to Talk About Goodman Games\" vs. \"Eating the Book\" - Why not both?",
"author": "did:plc:ivcv2f73hr7rmo2cqonhmrg6",
"description": "",
"publication": "at://did:plc:ivcv2f73hr7rmo2cqonhmrg6/pub.leaflet.publication/3lsgfwdqybc24",
"publishedAt": "2026-01-12T19:52:22.734Z"
}
did:plc:ivcv2f73hr7rmo2cqonhmrg6 | at://did:plc:ivcv2f73hr7rmo2cqonhmrg6/pub.leaflet.document/3mcasvels6s2m