summaryrefslogtreecommitdiffstats
path: root/2023/info
diff options
context:
space:
mode:
authorEmacsConf <emacsconf-org@gnu.org>2023-12-02 15:30:14 -0500
committerEmacsConf <emacsconf-org@gnu.org>2023-12-02 15:30:14 -0500
commit79e9e0950bb2343a8e919cab8cbff0682ccf25dd (patch)
tree9787e061ddbeac3186d4b5906041b384ddd817c6 /2023/info
parentd795eade5148301c9eeeb646efdfff7f511f916c (diff)
downloademacsconf-wiki-79e9e0950bb2343a8e919cab8cbff0682ccf25dd.tar.xz
emacsconf-wiki-79e9e0950bb2343a8e919cab8cbff0682ccf25dd.zip
solo
Diffstat (limited to '2023/info')
-rw-r--r--2023/info/solo-after.md277
-rw-r--r--2023/info/solo-before.md19
2 files changed, 294 insertions, 2 deletions
diff --git a/2023/info/solo-after.md b/2023/info/solo-after.md
index 6410f045..1f65da0e 100644
--- a/2023/info/solo-after.md
+++ b/2023/info/solo-after.md
@@ -1,6 +1,283 @@
<!-- Automatically generated by emacsconf-publish-after-page -->
+<a name="solo-mainVideo-transcript"></a>
+# Transcript
+
+[[!template new="1" text="""Hi there, I'm Howard Abrams. You may remember me""" start="00:00:00.000" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""from past conference talks""" start="00:00:05.560" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""as &quot;Literate DevOps and the Temple of Doom&quot;""" start="00:00:07.720" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""and &quot;Using Eshell for Fun and Profit&quot;.""" start="00:00:10.520" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""I'm here to talk to you about my latest Emacs project:""" start="00:00:13.400" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""playing games, solo role-playing games.""" start="00:00:16.600" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""I started playing RPGs when I got my first copy""" start="00:00:19.480" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""of Dungeons & Dragons when I was 12.""" start="00:00:23.160" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""Yes, my original copy burned""" start="00:00:25.600" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""in the Great Satanic Panic of the 1980s,""" start="00:00:28.280" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""but that's another story.""" start="00:00:30.560" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""I started playing other RPGs like GURPS.""" start="00:00:32.360" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""These are some of my notes.""" start="00:00:37.920" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""Back then, I was typing them in Emacs,""" start="00:00:40.000" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""but I formatted them with LaTeX.""" start="00:00:42.560" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""Later, when I was introducing my kids""" start="00:00:46.080" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""to role-playing games,""" start="00:00:49.080" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""I actually typed them up still in Emacs,""" start="00:00:50.840" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""but now formatted them for a tablet.""" start="00:00:53.581" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""I wrote a little JavaScript code""" start="00:00:57.600" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""that allowed me to click on it, and it would roll dice,""" start="00:00:59.320" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""generate random events, keep track of turn order,""" start="00:01:03.120" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""you know, everything,""" start="00:01:06.680" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""so I didn't have to slow down the action of the game.""" start="00:01:07.480" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""Well, when my kids got older,""" start="00:01:10.120" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""I still managed to sneak in a game of D&D""" start="00:01:13.000" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""once a week at lunch.""" start="00:01:15.600" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""This pastime came to a screeching halt with the pandemic.""" start="00:01:17.320" video="mainVideo-solo" id="subtitle"]]
+[[!template new="1" text="""I turned to playing role-playing games by myself""" start="00:01:20.680" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""to get my fix. Playing these silly elf games in solo mode""" start="00:01:23.640" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""has been part of the game for many years,""" start="00:01:28.000" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""but with so many of us stuck at home,""" start="00:01:29.880" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""solo role-playing games really expanded,""" start="00:01:32.560" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""creative people releasing some amazing ideas.""" start="00:01:35.120" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""What's a solo RPG like? Well, it's somewhere in the middle""" start="00:01:40.280" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""of writing your own story, where anything's possible,""" start="00:01:44.400" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""but you've got to do all the imaginative work;""" start="00:01:47.520" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""or reading a choose-your-own-adventure book,""" start="00:01:50.160" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""where the text is given to you,""" start="00:01:53.000" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""and you have free, a few predetermined paths;""" start="00:01:55.240" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""and tactical battle games,""" start="00:01:59.080" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""where dice determines everything.""" start="00:02:01.040" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""It kind of fits in the sweet spot between those.""" start="00:02:03.160" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""While I started removing the Game Master""" start="00:02:05.800" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""using the Mythic GM Emulator,""" start="00:02:08.880" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""Ironsworn really captivated me.""" start="00:02:12.120" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""I began with dice, pencils, notebooks, you know,""" start="00:02:15.320" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""just like when I was a kid. But taking notes on paper?""" start="00:02:19.200" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""Yeah, you know me. That's not my jam. Org mode is.""" start="00:02:23.360" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""And, you know, notes have to be in Org,""" start="00:02:28.000" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""well, why not write a little dice roller in Lisp?""" start="00:02:31.160" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""Well, when Shawn Tomkin released his Ironsworn""" start="00:02:35.160" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""under the Creative Commons, well,""" start="00:02:38.800" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""I could just download the entire text.""" start="00:02:41.880" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""I figured I could just render the entire game in Emacs.""" start="00:02:43.920" video="mainVideo-solo" id="subtitle"]]
+[[!template new="1" text="""All right, enough talk. Let's get some Emacs action here,""" start="00:02:47.440" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""while I show you a bit of my game.""" start="00:02:51.240" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""When playing a solo RPG,""" start="00:02:55.200" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""I jot down the story notes in an Org file.""" start="00:02:57.520" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""I mean, did you expect anything less from me?""" start="00:02:59.760" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""I alternate between lengthy prose and short notes.""" start="00:03:02.760" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""As I'm both the writer and the audience,""" start="00:03:07.760" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""the goal is just enjoyment.""" start="00:03:10.520" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""So, this document is both a record log of my game sessions,""" start="00:03:12.000" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""as well as my character's character sheet.""" start="00:03:17.000" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""In most RPGs, a player's focus is a character sheet""" start="00:03:20.960" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""that lists all the attributes, the stats, equipment,""" start="00:03:24.520" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""powers, you know, that sort of thing.""" start="00:03:27.000" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""For my game, I wanted the focus to be the prose,""" start="00:03:28.760" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""or at least the notes.""" start="00:03:32.960" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""So, I put down all the stats as Org mode properties.""" start="00:03:34.560" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""Now, I can collapse a property drawer""" start="00:03:38.200" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""and have functions""" start="00:03:40.800" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""that just grab values from these properties.""" start="00:03:42.120" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""All right, let's play. While not important to my talk,""" start="00:03:45.760" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""I'm in the middle of a game. My character, Tegan,""" start="00:03:50.080" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""promised to help a village by tracking down""" start="00:03:52.680" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""the son of a village chief. A less-than-stellar roll""" start="00:03:54.960" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""meant I didn't catch him before he entered""" start="00:03:59.240" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""the mysterious underground structure""" start="00:04:01.200" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""of a relic of an ancient people.""" start="00:04:03.880" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""I just finished playing out the journey,""" start="00:04:06.400" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""and he's about to enter into the Catacombs of Svala's Blood.""" start="00:04:08.400" video="mainVideo-solo" id="subtitle"]]
+[[!template new="1" text="""Why that name? Well, that was actually what came up""" start="00:04:11.760" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""from an extensive random number generator that I wrote.""" start="00:04:15.200" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""As I wrote more and more functions""" start="00:04:19.640" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""to help me play this game,""" start="00:04:21.960" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""and since I don't play all the time,""" start="00:04:23.280" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""I created hydra. I can roll dice,""" start="00:04:25.920" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""I can roll dice challenges against the character stats,""" start="00:04:30.360" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""I can adjust stats. Lots of random generators""" start="00:04:34.080" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""come from this oracle section.""" start="00:04:38.200" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""For instance, are footprints going through the door?""" start="00:04:39.480" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""I press `c`, and I'm prompted with how likely.""" start="00:04:43.160" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""Since the villagers gave Tegan vague directions,""" start="00:04:46.480" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""and he didn't see any signs the contrary,""" start="00:04:51.080" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""I chose &quot;likely&quot;. And, well, it originally said yes,""" start="00:04:53.240" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""and that's why I jotted this information down.""" start="00:04:58.480" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""Now, this is different than my character's ability""" start="00:05:01.600" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""to notice the prints. This is about generating the story,""" start="00:05:03.480" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""something that the game master would do""" start="00:05:07.640" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""in a typical role-playing game.""" start="00:05:10.280" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""Now, if I wanted to name something,""" start="00:05:12.480" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""or even the current weather,""" start="00:05:14.720" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""I have random tables with the `C` keystroke.""" start="00:05:16.040" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""Hmm, weather. Oh, it's summer, so hey,""" start="00:05:20.400" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""it's nice and clear. All right, let's play.""" start="00:05:27.280" video="mainVideo-solo" id="subtitle"]]
+[[!template new="1" text="""The action in Ironsworn,""" start="00:05:31.960" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""like other Powered by the Apocalypse games,""" start="00:05:34.240" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""is driven by moves. So, I hit the `m` key,""" start="00:05:37.040" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""and all the moves show up.""" start="00:05:44.360" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""Now, I don't think I need to espouse""" start="00:05:46.880" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""the virtues of completing-read enhancements like Ivy.""" start="00:05:49.480" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""Here, I'm using orderless with vertico""" start="00:05:52.680" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""to help me find my choices.""" start="00:05:55.560" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""Since I've discovered a site, let's play that move.""" start="00:05:57.720" video="mainVideo-solo" id="subtitle"]]
+[[!template new="1" text="""I seldom remember the details for the moves,""" start="00:06:03.640" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""so I figured, why not put the text of the book""" start="00:06:06.480" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""in an Org file and show it in a side window?""" start="00:06:09.160" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""The prompt at the bottom, asking for a name,""" start="00:06:11.800" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""is driven by the content in the displayed Org file.""" start="00:06:15.440" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""This allows me to enhance my game without""" start="00:06:18.200" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""changing the original code. So, let's call this story arc,""" start="00:06:21.120" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""Exploring the Catacombs of Svala's Blood.""" start="00:06:25.160" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""Ooh, sounds epic.""" start="00:06:31.840" video="mainVideo-solo" id="subtitle"]]
+[[!template new="1" text="""Ironsworn tracks the beats of a narrative,""" start="00:06:34.680" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""so major plot points take up more room in the fiction""" start="00:06:37.240" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""than minor plot points.""" start="00:06:40.800" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""Similar games like Blades in the Dark""" start="00:06:42.760" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""use numbers to track these, so you can say something like,""" start="00:06:45.040" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""we're three quarters of the way through this story arc.""" start="00:06:48.200" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""Ironsworn just uses labels,""" start="00:06:51.080" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""and while I want this particular story arc""" start="00:06:53.120" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""to be significant, I really just want to get in,""" start="00:06:55.840" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""find this person, and get out.""" start="00:06:59.520" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""So, I'm going to call this &quot;short&quot;.""" start="00:07:00.960" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""Next, it's asking about an Org mode header placement.""" start="00:07:04.040" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""While I originally wanted my Org files""" start="00:07:09.280" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""to be completely flexible,""" start="00:07:12.200" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""one thing I noticed in playing""" start="00:07:13.800" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""is that a pattern always emerged.""" start="00:07:15.920" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""The story became a tree. You see, story arcs""" start="00:07:18.000" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""were just a series of montages or scenes,""" start="00:07:22.640" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""and each of those were made of a series of events""" start="00:07:25.560" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""and challenges to overcome.""" start="00:07:27.920" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""So, each Org mode header has a track,""" start="00:07:29.120" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""which often becomes the number of subheadings.""" start="00:07:32.800" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""At any point, I can see how much track is being made.""" start="00:07:35.720" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""So, for instance, this one seems to be""" start="00:07:40.640" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""about a third of the way through.""" start="00:07:47.240" video="mainVideo-solo" id="subtitle"]]
+[[!template new="1" text="""So, let's dive into this ancient place.""" start="00:07:48.680" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""Since I've been walking through a misty forest,""" start="00:07:52.600" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""I can imagine vines hiding an immense door""" start="00:07:55.720" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""and a humid, earthy smell as I peer inside.""" start="00:07:59.320" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""But I don't have to write that stuff down,""" start="00:08:01.960" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""or if I want to practice my writing, I can.""" start="00:08:04.320" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""I can imagine the place is dark,""" start="00:08:06.920" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""so Tegan lights a torch""" start="00:08:09.360" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""before peering into this obscure world.""" start="00:08:10.840" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""As this move mentions,""" start="00:08:13.040" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""the next move to make is called Delve the Depths.""" start="00:08:15.800" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""As soon as I select this move,""" start="00:08:20.280" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""it shows up on the side window, and explains that,""" start="00:08:26.160" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""depending on how you're moving through""" start="00:08:31.320" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""this ancient catacombs,""" start="00:08:34.400" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""is what kind of stat I roll against,""" start="00:08:36.240" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""and those stats show up at the bottom.""" start="00:08:38.760" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""You know, if I'm sneaking around, you roll against &quot;shadow&quot;.""" start="00:08:41.040" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""If you're trying to go as fast as you can, it's &quot;edge&quot;.""" start="00:08:45.480" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""But I kind of imagine that he's thinking through,""" start="00:08:47.720" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""being very careful about it.""" start="00:08:51.680" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""So, I'm going to select &quot;wits&quot;.""" start="00:08:53.680" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""And I don't have any modifiers.""" start="00:08:55.760" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""Just about every one of my stats prompts me""" start="00:08:57.720" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""if I want to add or subtract any values.""" start="00:08:59.560" video="mainVideo-solo" id="subtitle"]]
+[[!template new="1" text="""A miss. I should explain how the dice roll in this game.""" start="00:09:02.960" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""The downside to Ironsworn is that""" start="00:09:09.880" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""the dice mechanics are more cumbersome than other games.""" start="00:09:13.400" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""You roll a 6-sided die, add to it your relevant stat,""" start="00:09:16.840" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""plus any modifiers. Next, you roll two 10-sided die""" start="00:09:20.200" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""and see how it compares.""" start="00:09:24.600" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""Of course, I programmed this in Lisp,""" start="00:09:25.800" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""but when I displayed it, I wanted to see all the dice.""" start="00:09:28.680" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""And I also just wanted to see the end results.""" start="00:09:31.600" video="mainVideo-solo" id="subtitle"]]
+[[!template new="1" text="""So I colored it. I rolled a miss,""" start="00:09:34.800" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""which means I need to reveal a danger.""" start="00:09:37.480" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""Sure, I could imagine all sorts of dangers,""" start="00:09:39.800" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""but this is a game.""" start="00:09:43.520" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""I've already made a random generator for dangers.""" start="00:09:44.360" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""In fact, I've made a random generator""" start="00:09:48.360" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""for dangers in an ancient underkeep.""" start="00:09:51.720" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""Discovery undermines or complicates the quest.""" start="00:09:55.480" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""Hmm, a complication for finding the chief's son?""" start="00:10:00.880" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""What about a labyrinth full of hallways and levels""" start="00:10:09.720" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""with lots of choices and almost no way of finding them?""" start="00:10:13.320" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""Yeah, that sounds like it fits pretty well.""" start="00:10:16.600" video="mainVideo-solo" id="subtitle"]]
+[[!template new="1" text="""Time for another move. This time, we're going to""" start="00:10:19.680" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""gather information,""" start="00:10:26.960" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""see if we can figure out which way to go.""" start="00:10:28.800" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""A strong hit. Excellent.""" start="00:10:32.280" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""I imagine Tegan noticing footprints in the dust""" start="00:10:34.720" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""and knowing where to go.""" start="00:10:38.400" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""The game suggests that when you get a strong success,""" start="00:10:40.440" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""you can increase your momentum.""" start="00:10:44.320" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""These game mechanics""" start="00:10:45.800" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""come into play later, but this function here""" start="00:10:48.880" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""allows me to adjust that stat +2.""" start="00:10:51.755" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""I don't even have to scroll to the top of the buffer""" start="00:10:57.881" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""and edit that value in my properties.""" start="00:11:01.461" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""At any point, I can take a look at those stats""" start="00:11:04.821" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""and see how they measure up.""" start="00:11:08.160" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""Again, I don't have to scroll up""" start="00:11:10.440" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""and take a look at my properties""" start="00:11:13.160" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""at the top of the Org mode file.""" start="00:11:14.880" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""That's how I play the game.""" start="00:11:16.560" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""It's just a recursive loop of playing a move,""" start="00:11:19.240" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""rolling some dice to see how it works,""" start="00:11:24.640" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""trying to answer the question""" start="00:11:27.320" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""based on your own imagination or random tables,""" start="00:11:30.160" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""which the game calls oracles,""" start="00:11:33.680" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""and play creatively until you decide to take a break""" start="00:11:35.600" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""and pick it up another time.""" start="00:11:41.200" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""I think you get the gist of how I play""" start="00:11:42.400" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""this dice and pencil game in Org Mode.""" start="00:11:47.000" video="mainVideo-solo" id="subtitle"]]
+[[!template new="1" text="""However, I found more solo RPGs to play.""" start="00:11:49.680" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""And of course, I want to render them in Emacs too.""" start="00:11:54.040" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""This code for Ironsworn was a bit too specific,""" start="00:11:57.320" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""so I decided to create a role-playing game toolkit.""" start="00:12:00.800" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""This project is still in the early stages,""" start="00:12:04.760" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""but I've created some functions""" start="00:12:09.600" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""for mimicking rolling dice, including a mini-DSL for""" start="00:12:12.200" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""making dice mechanics""" start="00:12:16.720" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""typical of many role-playing game systems.""" start="00:12:19.800" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""I've also ported over the random table system.""" start="00:12:22.840" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""A text file can just list entries to be displayed at random.""" start="00:12:26.520" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""I love that I can put dice expression""" start="00:12:30.480" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""and word choices in the entries.""" start="00:12:33.960" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""One type of random table allows you""" start="00:12:35.800" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""to essentially copy and paste a table""" start="00:12:39.440" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""from a published game into a text file.""" start="00:12:41.560" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""A frequency table is what I'm calling""" start="00:12:43.800" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""a list of random entries where some entries show up""" start="00:12:47.880" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""more often than others. I'm working on generalizing""" start="00:12:50.880" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""the character sheet attributes as Org properties,""" start="00:12:55.960" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""so if you're interested, check out the project at Codeberg.""" start="00:12:59.960" video="mainVideo-solo" id="subtitle"]]
+[[!template new="1" text="""The point of my presentation is not to show off Ironsworn,""" start="00:13:04.720" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""how I programmed it, or even this new toolkit.""" start="00:13:10.360" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""You see, most engineers,""" start="00:13:14.080" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""when they get an idea for a game like mine,""" start="00:13:17.560" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""would make a web app. Nothing wrong with it.""" start="00:13:20.480" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""More people can play it,""" start="00:13:24.080" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""but web apps suffer from text entry.""" start="00:13:25.960" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""And don't tell me you prefer the keyboard interface""" start="00:13:28.200" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""to Google Docs. Oh, and the JavaScript framework du jour?""" start="00:13:30.960" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""Oh, I mean, that's a huge barrier of entry""" start="00:13:35.960" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""when all you want to do""" start="00:13:40.400" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""is have a bit of fun prototyping a game.""" start="00:13:42.040" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""What I'd like to impress upon you""" start="00:13:44.360" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""is that hacking Emacs to make personal games is a trip.""" start="00:13:48.480" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""Learning Lisp is, it's easy.""" start="00:13:54.000" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""And more, Emacs Lisp has some, well sure,""" start="00:13:57.360" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""it has some cruft. But really, some of those features""" start="00:14:00.920" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""that I would hate at a distributed system at work,""" start="00:14:04.520" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""like global variables, makes hacking easier""" start="00:14:07.600" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""when you just want to have some fun in your own system.""" start="00:14:10.920" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""So, grab your laptop, sink into your comfy chair,""" start="00:14:14.720" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""pour yourself a glass of scotch,""" start="00:14:19.600" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""and craft yourself an enjoyable evening.""" start="00:14:21.600" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""Happy hacking, my friends.""" start="00:14:24.720" video="mainVideo-solo" id="subtitle"]]
+
+
+
+Captioner: sachac
+
Questions or comments? Please e-mail [howard@howardabrams.com](mailto:howard@howardabrams.com?subject=Comment%20for%20EmacsConf%202022%20solo%3A%20How%20I%20play%20TTRPGs%20in%20Emacs)
diff --git a/2023/info/solo-before.md b/2023/info/solo-before.md
index b00d9441..67f3019b 100644
--- a/2023/info/solo-before.md
+++ b/2023/info/solo-before.md
@@ -1,19 +1,34 @@
<!-- Automatically generated by emacsconf-publish-before-page -->
The following image shows where the talk is in the schedule for Sat 2023-12-02. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="solo">
-<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Saturday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Saturday</text> <a href="/2023/talks/sat-open" title="Saturday opening remarks" data-slug="sat-open"> <title> 9:00- 9:10 Saturday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(13,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-open</text></g></a> <a href="/2023/talks/adventure" title="An Org-Mode based text adventure game for learning the basics of Emacs, inside Emacs, written in Emacs Lisp" data-slug="adventure"> <title> 9:10- 9:20 An Org-Mode based text adventure game for learning the basics of Emacs, inside Emacs, written in Emacs Lisp</title> <rect x="15" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(28,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> adventure</text></g></a> <a href="/2023/talks/uni" title="Authoring and presenting university courses with Emacs and a full libre software stack" data-slug="uni"> <title> 9:30- 9:50 Authoring and presenting university courses with Emacs and a full libre software stack</title> <rect x="47" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(76,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> uni</text></g></a> <a href="/2023/talks/teaching" title="Teaching computer and data science with literate programming tools" data-slug="teaching"> <title> 10:05-10:25 Teaching computer and data science with literate programming tools</title> <rect x="101" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(130,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> teaching</text></g></a> <a href="/2023/talks/table" title="Who needs Excel? Managing your students qualifications with org-table" data-slug="table"> <title> 10:40-10:50 Who needs Excel? Managing your students qualifications with org-table</title> <rect x="156" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(169,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> table</text></g></a> <a href="/2023/talks/one" title="one.el: the static site generator for Emacs Lisp Programmers" data-slug="one"> <title> 11:30-11:50 one.el: the static site generator for Emacs Lisp Programmers</title> <rect x="235" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(264,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> one</text></g></a> <a href="/2023/talks/writing" title="Emacs turbo-charges my writing" data-slug="writing"> <title> 1:00- 1:10 Emacs turbo-charges my writing</title> <rect x="376" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(389,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> writing</text></g></a> <a href="/2023/talks/nabokov" title="Why Nabokov would use Org-Mode if he were writing today" data-slug="nabokov"> <title> 1:25- 1:35 Why Nabokov would use Org-Mode if he were writing today</title> <rect x="415" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(428,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> nabokov</text></g></a> <a href="/2023/talks/collab" title="Collaborative data processing and documenting using org-babel" data-slug="collab"> <title> 1:50- 2:10 Collaborative data processing and documenting using org-babel</title> <rect x="454" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(483,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> collab</text></g></a> <a href="/2023/talks/solo" title="How I play TTRPGs in Emacs" data-slug="solo"> <title> 2:20- 2:40 How I play TTRPGs in Emacs</title> <rect stroke-width="3" x="501" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(530,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> solo</text></g></a> <a href="/2023/talks/ref" title="Org-Mode workflow: informal reference tracking" data-slug="ref"> <title> 2:55- 3:15 Org-Mode workflow: informal reference tracking</title> <rect x="556" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(585,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> ref</text></g></a> <a href="/2023/talks/unentangling" title="(Un)entangling projects and repos" data-slug="unentangling"> <title> 3:25- 3:35 (Un)entangling projects and repos</title> <rect x="603" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(616,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> unentangling</text></g></a> <a href="/2023/talks/devel" title="Emacs development updates" data-slug="devel"> <title> 3:45- 3:55 Emacs development updates</title> <rect x="635" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(648,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> devel</text></g></a> <a href="/2023/talks/core" title="Emacs core development: how it works" data-slug="core"> <title> 4:10- 4:50 Emacs core development: how it works</title> <rect x="674" y="15" opacity="0.5" width="62" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(734,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> core</text></g></a> <a href="/2023/talks/sat-close" title="Saturday closing remarks" data-slug="sat-close"> <title> 5:05- 5:15 Saturday closing remarks</title> <rect x="760" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(773,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-close</text></g></a> <a href="/2023/talks/matplotllm" title="MatplotLLM, iterative natural language data visualization in org-babel" data-slug="matplotllm"> <title> 10:00-10:10 MatplotLLM, iterative natural language data visualization in org-babel</title> <rect x="94" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(107,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> matplotllm</text></g></a> <a href="/2023/talks/voice" title="Enhancing productivity with voice computing" data-slug="voice"> <title> 10:20-10:40 Enhancing productivity with voice computing</title> <rect x="125" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(154,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> voice</text></g></a> <a href="/2023/talks/llm" title="LLM clients in Emacs, functionality and standardization" data-slug="llm"> <title> 10:55-11:15 LLM clients in Emacs, functionality and standardization</title> <rect x="180" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(209,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> llm</text></g></a> <a href="/2023/talks/overlay" title="Improving compiler diagnostics with overlays" data-slug="overlay"> <title> 1:00- 1:20 Improving compiler diagnostics with overlays</title> <rect x="376" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(405,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> overlay</text></g></a> <a href="/2023/talks/eval" title="Editor Integrated REPL Driven Development for all languages" data-slug="eval"> <title> 1:35- 1:45 Editor Integrated REPL Driven Development for all languages</title> <rect x="431" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(444,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eval</text></g></a> <a href="/2023/talks/repl" title="REPLs in strange places: Lua, LaTeX, LPeg, LPegRex, TikZ" data-slug="repl"> <title> 2:00- 3:00 REPLs in strange places: Lua, LaTeX, LPeg, LPegRex, TikZ</title> <rect x="470" y="75" opacity="0.5" width="94" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(562,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> repl</text></g></a> <a href="/2023/talks/doc" title="Literate Documentation with Emacs and Org Mode" data-slug="doc"> <title> 3:10- 3:50 Literate Documentation with Emacs and Org Mode</title> <rect x="580" y="75" opacity="0.5" width="62" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(640,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> doc</text></g></a> <a href="/2023/talks/windows" title="Windows into Freedom" data-slug="windows"> <title> 4:05- 4:45 Windows into Freedom</title> <rect x="666" y="75" opacity="0.5" width="62" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(726,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> windows</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg>
+<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Saturday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Saturday</text> <a href="/2023/talks/sat-open" title="Saturday opening remarks" data-slug="sat-open"> <title> 9:00- 9:10 Saturday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(13,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-open</text></g></a> <a href="/2023/talks/adventure" title="An Org-Mode based text adventure game for learning the basics of Emacs, inside Emacs, written in Emacs Lisp" data-slug="adventure"> <title> 9:10- 9:20 An Org-Mode based text adventure game for learning the basics of Emacs, inside Emacs, written in Emacs Lisp</title> <rect x="15" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(28,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> adventure</text></g></a> <a href="/2023/talks/uni" title="Authoring and presenting university courses with Emacs and a full libre software stack" data-slug="uni"> <title> 9:30- 9:50 Authoring and presenting university courses with Emacs and a full libre software stack</title> <rect x="47" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(76,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> uni</text></g></a> <a href="/2023/talks/teaching" title="Teaching computer and data science with literate programming tools" data-slug="teaching"> <title> 10:05-10:25 Teaching computer and data science with literate programming tools</title> <rect x="101" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(130,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> teaching</text></g></a> <a href="/2023/talks/table" title="Who needs Excel? Managing your students qualifications with org-table" data-slug="table"> <title> 10:40-10:50 Who needs Excel? Managing your students qualifications with org-table</title> <rect x="156" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(169,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> table</text></g></a> <a href="/2023/talks/taming" title="Taming things with Org Mode" data-slug="taming"> <title> 11:05-11:15 Taming things with Org Mode</title> <rect x="196" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(209,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> taming</text></g></a> <a href="/2023/talks/one" title="one.el: the static site generator for Emacs Lisp Programmers" data-slug="one"> <title> 11:30-11:50 one.el: the static site generator for Emacs Lisp Programmers</title> <rect x="235" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(264,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> one</text></g></a> <a href="/2023/talks/writing" title="Emacs turbo-charges my writing" data-slug="writing"> <title> 1:00- 1:10 Emacs turbo-charges my writing</title> <rect x="376" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(389,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> writing</text></g></a> <a href="/2023/talks/nabokov" title="Why Nabokov would use Org-Mode if he were writing today" data-slug="nabokov"> <title> 1:25- 1:35 Why Nabokov would use Org-Mode if he were writing today</title> <rect x="415" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(428,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> nabokov</text></g></a> <a href="/2023/talks/collab" title="Collaborative data processing and documenting using org-babel" data-slug="collab"> <title> 1:50- 2:10 Collaborative data processing and documenting using org-babel</title> <rect x="454" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(483,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> collab</text></g></a> <a href="/2023/talks/solo" title="How I play TTRPGs in Emacs" data-slug="solo"> <title> 2:20- 2:40 How I play TTRPGs in Emacs</title> <rect stroke-width="3" x="501" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(530,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> solo</text></g></a> <a href="/2023/talks/ref" title="Org-Mode workflow: informal reference tracking" data-slug="ref"> <title> 2:55- 3:15 Org-Mode workflow: informal reference tracking</title> <rect x="556" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(585,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> ref</text></g></a> <a href="/2023/talks/unentangling" title="(Un)entangling projects and repos" data-slug="unentangling"> <title> 3:25- 3:35 (Un)entangling projects and repos</title> <rect x="603" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(616,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> unentangling</text></g></a> <a href="/2023/talks/devel" title="Emacs development updates" data-slug="devel"> <title> 3:45- 3:55 Emacs development updates</title> <rect x="635" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(648,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> devel</text></g></a> <a href="/2023/talks/core" title="Emacs core development: how it works" data-slug="core"> <title> 4:10- 4:50 Emacs core development: how it works</title> <rect x="674" y="15" opacity="0.5" width="62" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(734,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> core</text></g></a> <a href="/2023/talks/sat-close" title="Saturday closing remarks" data-slug="sat-close"> <title> 5:05- 5:15 Saturday closing remarks</title> <rect x="760" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(773,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-close</text></g></a> <a href="/2023/talks/matplotllm" title="MatplotLLM, iterative natural language data visualization in org-babel" data-slug="matplotllm"> <title> 10:00-10:10 MatplotLLM, iterative natural language data visualization in org-babel</title> <rect x="94" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(107,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> matplotllm</text></g></a> <a href="/2023/talks/voice" title="Enhancing productivity with voice computing" data-slug="voice"> <title> 10:20-10:40 Enhancing productivity with voice computing</title> <rect x="125" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(154,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> voice</text></g></a> <a href="/2023/talks/llm" title="LLM clients in Emacs, functionality and standardization" data-slug="llm"> <title> 10:55-11:15 LLM clients in Emacs, functionality and standardization</title> <rect x="180" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(209,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> llm</text></g></a> <a href="/2023/talks/overlay" title="Improving compiler diagnostics with overlays" data-slug="overlay"> <title> 1:00- 1:20 Improving compiler diagnostics with overlays</title> <rect x="376" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(405,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> overlay</text></g></a> <a href="/2023/talks/eval" title="Editor Integrated REPL Driven Development for all languages" data-slug="eval"> <title> 1:35- 1:45 Editor Integrated REPL Driven Development for all languages</title> <rect x="431" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(444,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eval</text></g></a> <a href="/2023/talks/repl" title="REPLs in strange places: Lua, LaTeX, LPeg, LPegRex, TikZ" data-slug="repl"> <title> 2:00- 3:00 REPLs in strange places: Lua, LaTeX, LPeg, LPegRex, TikZ</title> <rect x="470" y="75" opacity="0.5" width="94" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(562,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> repl</text></g></a> <a href="/2023/talks/doc" title="Literate Documentation with Emacs and Org Mode" data-slug="doc"> <title> 3:10- 3:50 Literate Documentation with Emacs and Org Mode</title> <rect x="580" y="75" opacity="0.5" width="62" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(640,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> doc</text></g></a> <a href="/2023/talks/windows" title="Windows into Freedom" data-slug="windows"> <title> 4:05- 4:45 Windows into Freedom</title> <rect x="666" y="75" opacity="0.5" width="62" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(726,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> windows</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg>
</div>
[[!toc ]]
Format: 15-min talk; Q&A: BigBlueButton conference room <https://media.emacsconf.org/2023/current/bbb-solo.html>
Etherpad: <https://pad.emacsconf.org/2023-solo>
Discuss on IRC: [#emacsconf-gen](https://chat.emacsconf.org/?join=emacsconf,emacsconf-gen)
-Status: Ready to stream
+Status: Q&A open for participation
<div>Times in different timezones:</div><div class="times" start="2023-12-02T19:20:00Z" end="2023-12-02T19:40:00Z"><div class="conf-time">Saturday, Dec 2 2023, ~2:20 PM - 2:40 PM EST (US/Eastern)</div><div class="others"><div>which is the same as:</div>Saturday, Dec 2 2023, ~1:20 PM - 1:40 PM CST (US/Central)<br />Saturday, Dec 2 2023, ~12:20 PM - 12:40 PM MST (US/Mountain)<br />Saturday, Dec 2 2023, ~11:20 AM - 11:40 AM PST (US/Pacific)<br />Saturday, Dec 2 2023, ~7:20 PM - 7:40 PM UTC <br />Saturday, Dec 2 2023, ~8:20 PM - 8:40 PM CET (Europe/Paris)<br />Saturday, Dec 2 2023, ~9:20 PM - 9:40 PM EET (Europe/Athens)<br />Sunday, Dec 3 2023, ~12:50 AM - 1:10 AM IST (Asia/Kolkata)<br />Sunday, Dec 3 2023, ~3:20 AM - 3:40 AM +08 (Asia/Singapore)<br />Sunday, Dec 3 2023, ~4:20 AM - 4:40 AM JST (Asia/Tokyo)</div></div><div><a href="/2023/watch/gen/">Find out how to watch and participate</a></div>
+<div class="vid"><video controls preload="none" id="solo-mainVideo"><source src="https://media.emacsconf.org/2023/emacsconf-2023-solo--how-i-play-ttrpgs-in-emacs--howard-abrams--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2023/captions/emacsconf-2023-solo--how-i-play-ttrpgs-in-emacs--howard-abrams--main.vtt" default />"""<track kind="chapters" label="Chapters" src="/2023/captions/emacsconf-2023-solo--how-i-play-ttrpgs-in-emacs--howard-abrams--main--chapters.vtt" /><p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video>[[!template id="chapters" vidid="solo-mainVideo" data="""
+00:00.000 Introduction
+01:20.680 Solo RPGs
+02:47.440 Demo
+04:11.760 Randomization
+05:31.960 Moves
+06:03.640 Reference
+06:34.680 Story arcs
+07:48.680 Using different stats
+09:02.960 Dice rolls
+09:34.800 Dangers
+10:19.680 A strong success
+11:49.680 Other solo RPGs
+13:04.720 Conclusion
+"""]]<div></div>Duration: 14:36 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2023-solo">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2023/current/bbb-solo.html">Open public Q&A</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-solo--how-i-play-ttrpgs-in-emacs--howard-abrams--final.webm">Download --final.webm (52MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-solo--how-i-play-ttrpgs-in-emacs--howard-abrams--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-solo--how-i-play-ttrpgs-in-emacs--howard-abrams--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-solo--how-i-play-ttrpgs-in-emacs--howard-abrams--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-solo--how-i-play-ttrpgs-in-emacs--howard-abrams--main.opus">Download --main.opus (6.6MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-solo--how-i-play-ttrpgs-in-emacs--howard-abrams--main.txt">Download --main.txt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-solo--how-i-play-ttrpgs-in-emacs--howard-abrams--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-solo--how-i-play-ttrpgs-in-emacs--howard-abrams--main.webm">Download --main.webm (52MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-solo--how-i-play-ttrpgs-in-emacs--howard-abrams--normalized.opus">Download --normalized.opus (6.4MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-solo--how-i-play-ttrpgs-in-emacs--howard-abrams--original.mov">Download --original.mov (836MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-solo--how-i-play-ttrpgs-in-emacs--howard-abrams--reencoded.webm">Download --reencoded.webm (52MB)</a></li><li><a href="https://toobnix.org/w/oNkcCHdWCKXRv6KnUTAeEC">View on Toobnix</a></li></ul></div></div>
# Description
<!-- End of emacsconf-publish-before-page --> \ No newline at end of file