<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Markdown on Nicole van der Hoeven</title><link>https://nicolevanderhoeven.com/tags/markdown/</link><description>Recent content in Markdown on Nicole van der Hoeven</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><copyright>Nicole van der Hoeven</copyright><lastBuildDate>Fri, 26 Jan 2024 14:00:47 +0100</lastBuildDate><atom:link href="https://nicolevanderhoeven.com/tags/markdown/index.xml" rel="self" type="application/rss+xml"/><item><title>How to publish your notes for free with Quartz</title><link>https://nicolevanderhoeven.com/blog/20240126-how-to-publish-your-notes-for-free-with-quartz/</link><pubDate>Fri, 26 Jan 2024 14:00:47 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20240126-how-to-publish-your-notes-for-free-with-quartz/</guid><description>&lt;p&gt;&lt;a href="https://quartz.jzhao.xyz/"&gt;Quartz&lt;/a&gt; just won Best Tool in the &lt;a href="https://obsidian.md/blog/2023-goty-winners/"&gt;Obsidian Gems of the Year 2023&lt;/a&gt; awards, and with good reason. It&amp;rsquo;s a free, open-source static site generator that works really well with Markdown-based note-taking apps&amp;ndash; including Obsidian, which it was originally designed for.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://doingitinpublic.com/"&gt;Here&amp;rsquo;s what Quartz looks like when published&lt;/a&gt;.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/6s6DT1yN4dw?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="links"&gt;Links&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;🖊️ &lt;a href="https://notes.nicolevanderhoeven.com/How+to+publish+Obsidian+notes+with+Quartz+on+GitHub+Pages"&gt;How to publish Obsidian notes with Quartz on GitHub Pages&lt;/a&gt;: The video in text form so you can follow along&lt;/li&gt;
&lt;li&gt;🙏🏻 &lt;a href="https://links.gilbertsanchez.com/"&gt;Gilbert Sanchez&lt;/a&gt; shared his experiences in trying to find a static site generator replacement for Obsidian Publish on &lt;a href="https://nicole.to/discord"&gt;my Discord server&lt;/a&gt; and inspired me to try Quartz.&lt;/li&gt;
&lt;li&gt;🖊️ &lt;a href="https://quartz.jzhao.xyz/"&gt;Quartz documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;🖊️ &lt;a href="https://docs.github.com/"&gt;GitHub documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;🖊️ &lt;a href="https://docs.github.com/en/pages"&gt;GitHub Pages documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;🖊️ &lt;a href="https://help.obsidian.md/Home"&gt;Obsidian documentation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Obsidian for Non-coders</title><link>https://nicolevanderhoeven.com/blog/20221021-obsidian-for-non-coders/</link><pubDate>Fri, 21 Oct 2022 18:17:53 +0200</pubDate><guid>https://nicolevanderhoeven.com/blog/20221021-obsidian-for-non-coders/</guid><description>&lt;p&gt;In this video, I talk about how to get started with Obsidian for non-coders, specifically tackling topics like what Markdown is and how to use it to write notes in Obsidian. I also talk about some Obsidian-specific syntax that help you do things like embed Obsidian notes, create footnotes, and create queries to find the right note.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/5qRVquqRH0k?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;In the video, I mention &lt;a href="https://shortform.com/nicole"&gt;Shortform&lt;/a&gt;&amp;ndash; follow that link to get 20% off an annual subscription!&lt;/p&gt;
&lt;h2 id="related-articles"&gt;Related Articles&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://nicolevanderhoeven.com/blog/20210815-shortform-to-readwise/"&gt;How to import Shortform highlights to Obsidian via Readwise&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://nicolevanderhoeven.com/blog/20220907-what-is-readwise-reader/"&gt;I can finally tell you about Readwise Reader&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://nicolevanderhoeven.com/blog/20220323-how-to-process-notes-in-obsidian-with-readwise/"&gt;How to process notes in Obsidian - Readwise Official Obsidian plugin&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://nicolevanderhoeven.com/blog/20220512-how-real-people-process-notes/"&gt;How real people process notes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://nicolevanderhoeven.com/blog/20220902-how-to-take-notes-from-a-book-with-obsidian/"&gt;How to take notes from a book with Obsidian&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://nicolevanderhoeven.com/blog/20220812-how-i-learn-in-obsidian/"&gt;How I learn in Obsidian - keeping up with tech trends&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>How I use Obsidian for D&amp;D - Player's Edition</title><link>https://nicolevanderhoeven.com/blog/20210809-dnd-obsidian-player/</link><pubDate>Mon, 09 Aug 2021 17:46:51 +0200</pubDate><guid>https://nicolevanderhoeven.com/blog/20210809-dnd-obsidian-player/</guid><description>
&lt;meta property=“og:image” content="/assets/Forgotten-Realms-workspace-in-Obsidian.png" /&gt;
&lt;meta property=”og:image:width” content=”1200″ /&gt;
&lt;meta property=”og:image:height” content=”628″ /&gt;
&lt;p&gt;I&amp;rsquo;ve previously written about &lt;a href="https://nicolevanderhoeven.com/blog/20210518-how-i-use-obsidian-at-work/"&gt;how I use Obsidian for work&lt;/a&gt;, and I&amp;rsquo;ve also talked about &lt;a href="https://nicolevanderhoeven.com/blog/20201214-roam-for-dnd/"&gt;how I use Roam Research for D&amp;amp;D&lt;/a&gt;. Shortly after the latter post, however, I moved to Obsidian. That was six months ago, so I thought it was time for an update.&lt;/p&gt;
&lt;h2 id="before-the-game"&gt;Before the game&lt;/h2&gt;
&lt;h3 id="world"&gt;World&lt;/h3&gt;
&lt;p&gt;My World page is the main jumping-off point for all my notes for a specific campaign, and each campaign gets one. It contains:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The main locations in the world&lt;/li&gt;
&lt;li&gt;The player characters, and links to their individual pages with information about what my character knows or thinks of them&lt;/li&gt;
&lt;li&gt;A link to Open Loops (Quests and Questions and Agenda, as discussed below)&lt;/li&gt;
&lt;li&gt;The list of all the sessions I&amp;rsquo;ve played for the campaign&lt;/li&gt;
&lt;li&gt;Campaign-specific house rules that the DM has introduced&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src="https://nicolevanderhoeven.com/assets/world-page.png" alt="The World page for my Forgotten Realms campaign"&gt;&lt;/p&gt;
&lt;h3 id="quests-and-questions"&gt;Quests and Questions&lt;/h3&gt;
&lt;p&gt;I like to play high-intelligence characters, so I like to keep track of unanswered questions and other adventure hooks my DM has dropped that the party hasn&amp;rsquo;t quite gotten around to resolving yet. Some of them are critical quest or story arcs, and others are random tidbits of information that NPCs have mentioned. I organize them by location, and then by quest, so that it&amp;rsquo;s easy to follow a thread depending on where the party is or how much downtime we have. Here&amp;rsquo;s an example of that page:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://nicolevanderhoeven.com/assets/quests-and-questions.png" alt="Quests and Questions page"&gt;&lt;/p&gt;
&lt;h3 id="agenda"&gt;Agenda&lt;/h3&gt;
&lt;p&gt;While the Quests and Questions page records unfinished business that my character is actively thinking about but may not quite know how to explore yet, my Agenda page is where I write down specific tasks. I loosely follow the &lt;a href="https://gettingthingsdone.com/"&gt;Getting Things Done&lt;/a&gt; methodology and divide this page into Next Actions and Waiting For. I group tasks by person and/or by location.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://nicolevanderhoeven.com/assets/Agenda-sample.png" alt="Agenda page"&gt;&lt;/p&gt;
&lt;p&gt;I use the Obsidian &lt;a href="https://github.com/DahaWong/obsidian-completed-area"&gt;Completed Area plugin&lt;/a&gt; so that hitting a CTRL + ENTER on a task automatically checks it and then moves that task to a separate Completed section at the bottom of the note. This helps me keep the agenda clean and relevant.&lt;/p&gt;
&lt;h2 id="during-a-game"&gt;During a game&lt;/h2&gt;
&lt;h3 id="workspace"&gt;Workspace&lt;/h3&gt;
&lt;p&gt;One of the best parts about Obsidian is that it allows me to save and load custom workspaces. This is useful because I use Obsidian for work as well as play, so I can set up the two workspaces differently. I also DM one campaign and play in another, and I have a workspace for each of them because I need different information available to me. The workspace features lets me customize my dashboard. Here&amp;rsquo;s what my workspace looks like for the 4e game that I play in:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://nicolevanderhoeven.com/assets/Forgotten-Realms-workspace-in-Obsidian.png" alt="My Forgotten Realms campaign workspace in Obsidian"&gt;&lt;/p&gt;
&lt;p&gt;At the beginning of a game, I&amp;rsquo;ll create a new session page in the last pane, enter into it, and then stay in the workspace for the rest of the game. I have my character&amp;rsquo;s stats sheet handy (which I need to do manually since I haven&amp;rsquo;t found a D&amp;amp;D Beyond-like service for 4e) and all the powers and abilities I need to refer to.&lt;/p&gt;
&lt;h3 id="session-template"&gt;Session template&lt;/h3&gt;
&lt;p&gt;I love Obsidian templates! I use templates for things like inserting an HP tracker with all my party&amp;rsquo;s names, their max HP, healing surges (4e); a defense table to keep track of a creature&amp;rsquo;s defenses (again, 4e); and campaign-specific session log formats.&lt;/p&gt;
&lt;p&gt;At the beginning of the game, I&amp;rsquo;ll create a new page in the Session List, click into it, and insert a session log template (I have this hotkeyed to CMD+&lt;code&gt;;&lt;/code&gt;). Here&amp;rsquo;s what a fresh one looks like, in Edit mode:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://nicolevanderhoeven.com/assets/session-template-fresh.png" alt="My session template, newly inserted"&gt;&lt;/p&gt;
&lt;p&gt;I add metadata to every session so that I can query it later using the excellent &lt;a href="https://github.com/blacksmithgu/obsidian-dataview"&gt;Obsidian Dataview plugin&lt;/a&gt;, though I do this more often for the campaign I DM rather than the one I play in.&lt;/p&gt;
&lt;p&gt;We usually do a recap at the beginning of the game, so I jump into the &lt;code&gt;Recap of the last session&lt;/code&gt; section and embed the summary from the previous session using &lt;code&gt; ![](/assets/86_20210717 Day 16 Hunting the Ice Phase Spider#^summary)&lt;/code&gt;, which pulls in the section marked with &lt;code&gt;^summary&lt;/code&gt; from the last session. That embeds just that portion of the last session in the current session, like this:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://nicolevanderhoeven.com/assets/Recap.png" alt="Session recap using block embed"&gt;&lt;/p&gt;
&lt;p&gt;This helps me get back up to speed quickly instead of doing the usual &amp;ldquo;Where were we again?&amp;rdquo; that takes up time.&lt;/p&gt;
&lt;h3 id="hp-table"&gt;HP table&lt;/h3&gt;
&lt;p&gt;My character is a multiclassed healer, so it&amp;rsquo;s important for me to know who needs heals or other buffs. I keep track of this separately, and it helps out my DM as well because it&amp;rsquo;s easy to miss something in the excitement of a battle. I do include the HP table in my workspace, in Preview mode, but here&amp;rsquo;s what it looks like in Edit mode:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://nicolevanderhoeven.com/assets/HP-table.png" alt="A table of the party&amp;rsquo;s HP, surges, and conditions"&gt;&lt;/p&gt;
&lt;p&gt;Tables in Markdown can be a pain, but the &lt;a href="https://github.com/tgrosinger/advanced-tables-obsidian"&gt;Advanced Tables plugin&lt;/a&gt; goes a long way towards making this easier by adding some nice features like tabbing to the next cell, adding commands for inserting and deleting a column or row, and just automatically formatting a table so that it&amp;rsquo;s not a jumble of lines. I also heavily use this plugin for my characters stats and skills, both of which I keep in tables.&lt;/p&gt;
&lt;h3 id="keeping-track-of-fights"&gt;Keeping track of fights&lt;/h3&gt;
&lt;p&gt;When a fight breaks out, I insert an intiative template, which is just a list of all the characters in the party:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Initiative!
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;-&lt;/span&gt; Ka&amp;#39;ira
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;-&lt;/span&gt; Maestro
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;-&lt;/span&gt; Xio
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;-&lt;/span&gt; Eraithe
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;-&lt;/span&gt; Keren
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This makes it easier to add the initiative value rolled, as well as that of any other baddies we&amp;rsquo;re fighting. I use the &lt;a href="https://github.com/vslinko/obsidian-outliner"&gt;Outliner plugin&lt;/a&gt; to be able to easily move people on the list up or down as needed without having to copy or paste. I have the shortcuts set to CMD+SHIFT+UP and CMD+SHIFT+DOWN so I don&amp;rsquo;t even need to use my mouse.&lt;/p&gt;
&lt;p&gt;I also have a template for Defenses. D&amp;amp;D 4th Edition has four different kinds of defenses, and since my character&amp;rsquo;s powers target a few of them, I keep track of the defenses of each monster. Here&amp;rsquo;s what that template looks like, in Edit mode:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;| Defense | Value |
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;| --------------------- | ----- |
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;| [[Reflex Defense]] | |
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;| [[Fortitude Defense]] | |
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;| [[Will Defense]] | |
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;| [[Armor Class]] | |
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;You&amp;rsquo;ll notice that I also link to the pages I have for each defense type, in case I need to remind myself which stat a defense is comprised of.&lt;/p&gt;
&lt;h3 id="character-powers"&gt;Character powers&lt;/h3&gt;
&lt;p&gt;Like many, I have migrated from playing games on a literal tabletop to doing it virtually. These days, I play 100% online, using a bunch of different tools. For the most part, though, I still prefer to roll actual dice. There&amp;rsquo;s just something satisfying about the feel of a die in my hand. Since I switched to Obsidian, though, I have looked into virtual dice. On the off chance I don&amp;rsquo;t have any dice (ha) or all my dice have betrayed me (much more likely), I use the &lt;a href="https://github.com/valentine195/obsidian-dice-roller"&gt;Dice Roller plugin&lt;/a&gt;. It turns&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;`dice: 1d20+7`&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;into a random die roll. Here it is when incorporated into my character&amp;rsquo;s list of powers:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://nicolevanderhoeven.com/assets/powers-sample.png" alt="My character&amp;rsquo;s powers page"&gt;&lt;/p&gt;
&lt;p&gt;Sometimes, when I&amp;rsquo;m feeling superstitious about my dice, I&amp;rsquo;ll switch to using this dice roller &amp;ldquo;just to be safe&amp;rdquo;. It has other cool features too, which I&amp;rsquo;ll cover more in detail in the Dungeon Master&amp;rsquo;s edition of this article.&lt;/p&gt;
&lt;h3 id="search-linked-unlinked-mentions"&gt;Search, linked, unlinked mentions&lt;/h3&gt;
&lt;p&gt;Frequently, something comes up in a game that I&amp;rsquo;m &lt;em&gt;sure&lt;/em&gt; we&amp;rsquo;ve heard of before, but I can&amp;rsquo;t quite remember where or when. Actually, sometimes something comes up that I&amp;rsquo;m quite sure we&amp;rsquo;ve &lt;em&gt;never&lt;/em&gt; heard of before, but it turns out we have. Luckily, Obsidian is quick to tell me that using the linked/unlinked mentions and the search features.&lt;/p&gt;
&lt;p&gt;Here are the mentions in my note for the word &amp;ldquo;Netheril&amp;rdquo;:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://nicolevanderhoeven.com/assets/Netheril-mentions.png" alt="Linked mentioned for the word Netheril"&gt;&lt;/p&gt;
&lt;p&gt;Unlinked mentions show up too, in case the word came up somewhere and I didn&amp;rsquo;t think to specifically create a page on it.&lt;/p&gt;
&lt;p&gt;On monster pages, mentions remind me when we fought them last, and any tips for fighting them. It can be handy when one of the other players has forgotten something that happened to them, too. If I want to remember how Ka&amp;rsquo;ira got her festering wound, I can type it into the Obsidian search bar:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://nicolevanderhoeven.com/assets/festering-wound.png" alt="A search in Obsidian for &amp;ldquo;festering wound&amp;rdquo;"&gt;&lt;/p&gt;
&lt;p&gt;and be able to confidently say that Ka&amp;rsquo;ira got her last festering wound on session 68, in the Blue Crystal Fortress that we now know to be the Twisted Fane, while fighting aberrations.&lt;/p&gt;
&lt;h2 id="after-a-game"&gt;After a game&lt;/h2&gt;
&lt;p&gt;I think I might use Obsidian even more between games than during the game, because after the game is when I process everything my character learned.&lt;/p&gt;
&lt;h3 id="session-summary"&gt;Session summary&lt;/h3&gt;
&lt;p&gt;Immediately after the game is when I create a short session summary. I like to do this when the session is still fresh in my mind. Then, I add &lt;code&gt;^summary&lt;/code&gt; at the end of the paragraph to identify it and to be able to pull it into the next session&amp;rsquo;s recap. Block references and block embeds are some of my most frequently used Obsidian features.&lt;/p&gt;
&lt;h3 id="creating-new-pages"&gt;Creating new pages&lt;/h3&gt;
&lt;p&gt;I then create new pages for any people, places, magical items, or events that we encountered. I like to use a standard frontmatter:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;---
type:
location: [Neverwinter]
world: &amp;#34;Forgotten Realms&amp;#34;
campaign: &amp;#34;Order of the Wandering Mind&amp;#34;
date: 2021-06-23
---
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Here&amp;rsquo;s an example of the page for an NPC:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://nicolevanderhoeven.com/assets/npc-sample.png" alt="An NPC page in my campaign"&gt;&lt;/p&gt;
&lt;p&gt;If my DM has given us character art, I include it in the page.&lt;/p&gt;
&lt;p&gt;And here&amp;rsquo;s an example of a page for a location:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://nicolevanderhoeven.com/assets/twisted-fane-location-example.png" alt="Location page: Twisted Fane"&gt;&lt;/p&gt;
&lt;p&gt;For this page, I used a plugin called &lt;a href="https://github.com/valentine195/obsidian-leaflet-plugin"&gt;Obsidian Leaflet&lt;/a&gt;, which lets me add maps to my notes! In this case, my DM gave us this map of the structure as a guide, but during combats we didn&amp;rsquo;t use a map. To keep myself oriented between games, I added red pawprint pins where we had spotted or fought monsters, green thumbtacks to mark where we&amp;rsquo;d ended sessions, and green markers where we had spotted allies. I also like to add links to monsters or sessions on the pins/markers so that I can jump to those pages quickly if I need to.&lt;/p&gt;
&lt;h3 id="history"&gt;History&lt;/h3&gt;
&lt;p&gt;To keep historical events straight in my head, especially since we tend to discover them out of sequence, I use the &lt;a href="https://github.com/Darakah/obsidian-timelines"&gt;Obsidian Timelines plugin&lt;/a&gt;, which lets me create pages like this:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://nicolevanderhoeven.com/assets/obsidian-timeline-for-dnd.png" alt="Obsidian Timeline in my game"&gt;&lt;/p&gt;
&lt;p&gt;by using this code in the timeline page:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;``&lt;span style="color:#e6db74"&gt;`timeline
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;fr
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;\`&lt;/span&gt;``
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;(without the backtick) and this for every event that I want to include:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;date&lt;/span&gt;: [&lt;span style="color:#e6db74"&gt;2021-06-23&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;tags&lt;/span&gt;: [&lt;span style="color:#ae81ff"&gt;timeline, fr]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;span
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; class=&amp;#39;ob-timelines&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; data-date=&amp;#39;1443-00&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; data-title=&amp;#39;Xionerys is born&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; data-class=&amp;#39;orange&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; data-img = &amp;#39;assets/xionerys.jpg&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; data-type=&amp;#39;range&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; data-end=&amp;#39;1443-00&amp;#39;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Xionerys is born in Calimshan.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;/span&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Using this method, I&amp;rsquo;ve been able to call out discrepancies in what two different NPCs told us and figure out that one was lying&amp;ndash; or at least misinformed.&lt;/p&gt;
&lt;h3 id="replace-all"&gt;Replace all&lt;/h3&gt;
&lt;p&gt;When I inevitably get a fantasy name wrong, having pages as flat .md files is great because I can do a find and replace on ALL mentions of a certain NPC name/place I&amp;rsquo;ve misspelled (those fantasy names!). I do this with my usual code/text editor, VSCode, just because I usually already have it up, but you can do it using terminal commands. If it&amp;rsquo;s just the name of a page, updating the spelling in Obsidian changes it everywhere else it&amp;rsquo;s linked to as well, which is useful.&lt;/p&gt;
&lt;h3 id="updating-open-loops"&gt;Updating open loops&lt;/h3&gt;
&lt;p&gt;To finish processing the last session, I update Open Loops: I add new points or update existing points in Quests and Questions, and then add tasks to Agenda that I want to do in the next session. I find that it&amp;rsquo;s best to do it after a game because it&amp;rsquo;s a week, sometimes more, between games and there&amp;rsquo;s a high likelihood I&amp;rsquo;ll have forgotten what I want to do by then!&lt;/p&gt;
&lt;h3 id="publish"&gt;Publish&lt;/h3&gt;
&lt;p&gt;I also publish my D&amp;amp;D notes, just for transparency. My DM has joked that he looks in there sometimes when he&amp;rsquo;s forgotten something. Even if he doesn&amp;rsquo;t, I enjoy having my notes so easily accessible. I often navigate there myself when I have a spare moment, remembering old sessions and thinking about some loose threads. If you&amp;rsquo;re interested, &lt;a href="https://notes.nicolevanderhoeven.com/TTRPGs/Order+of+the+Wandering+Mind/World"&gt;here they are&lt;/a&gt;! Just be warned that the plugins won&amp;rsquo;t work in the web version, so sometimes you&amp;rsquo;ll come across bits of code that didn&amp;rsquo;t render. I also migrated these notes from Roam Research, and haven&amp;rsquo;t gone back and updated all the older notes.&lt;/p&gt;
&lt;h2 id="conclusion"&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Since I&amp;rsquo;ve switched to Obsidian, it&amp;rsquo;s been an indispensable part of my workflow for D&amp;amp;D. Without it, I&amp;rsquo;d be just another murder hobo with no notes. And no DM wants that!&lt;/p&gt;</description></item><item><title>Presentation Slides as Code</title><link>https://nicolevanderhoeven.com/blog/20210302-presentation-slides-as-code/</link><pubDate>Tue, 02 Mar 2021 19:07:31 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20210302-presentation-slides-as-code/</guid><description>&lt;p&gt;I was working on a presentation for later this month when &lt;a href="https://mariedrake.com"&gt;Marie Drake&lt;/a&gt; told me about &lt;a href="https://slides.com"&gt;slides.com&lt;/a&gt;. It&amp;rsquo;s basically a Powerpoint replacement (which, let&amp;rsquo;s be honest, needs replacing) in that it lets you create slides &lt;em&gt;and&lt;/em&gt; it lets you present from it. It even goes beyond Powerpoint in that it also saves your slides publicly for people to view later.&lt;/p&gt;
&lt;p&gt;Before she&amp;rsquo;d mentioned slides.com, I had been planning on creating a presentation on &lt;a href="https://obsidian.md"&gt;Obsidian&lt;/a&gt;, my note-taking tool of choice. The advantage of this approach is that presentations in Obsidian are just Markdown files with &lt;code&gt;---&lt;/code&gt; between lines of text to delineate slides.&lt;/p&gt;
&lt;p&gt;The problem with using Obsidian on its own is that it&amp;rsquo;s severely lacking in features, and it&amp;rsquo;s also not shareable. You can, of course, publish the Markdown file, but people won&amp;rsquo;t be able to view them in slide format. After playing with slides.com, however, I also discovered it had its own weaknesses. It is completely UI-driven, so there&amp;rsquo;s no way to create slides just from a Markdown file. It&amp;rsquo;s also hosted by them, so there are limitations imposed, depending on which pricing tier you pay for.&lt;/p&gt;
&lt;p&gt;So I got to Googling. And I think I found a pretty good setup for my needs.&lt;/p&gt;
&lt;h2 id="the-end-result"&gt;The end result&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;I write the presentation in Obsidian, in Markdown. &lt;a href="https://gist.github.com/nicolevanderhoeven/752017196efc1ee861c6d3baa5dfca31"&gt;Here&amp;rsquo;s&lt;/a&gt; what that looks like in a sample presentation where I&amp;rsquo;m trying out a bunch of features.&lt;/li&gt;
&lt;li&gt;I use &lt;a href="https://gohugo.io"&gt;Hugo&lt;/a&gt; to generate a static website and convert the Markdown files into javascript and html, using &lt;a href="https://github.com/hakimel/reveal.js"&gt;reveal.js&lt;/a&gt; and the &lt;a href="https://github.com/dzello/reveal-hugo"&gt;reveal-hugo&lt;/a&gt; theme.&lt;/li&gt;
&lt;li&gt;I push the static website to a remote repository on &lt;a href="https://github.com"&gt;GitHub&lt;/a&gt;. &lt;a href="https://pages.github.com/"&gt;GitHub Pages&lt;/a&gt; serves that site (for free!) on my custom subdomain.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Check out the final product here:
&lt;a href="https://slides.nicolevanderhoeven.com/sample"&gt;https://slides.nicolevanderhoeven.com/sample&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://nicolevanderhoeven.com/assets/20210302-reveal-hugo-sample.png" alt="A screenshot of the title presentation slide"&gt;&lt;/p&gt;
&lt;h2 id="the-setup"&gt;The setup&lt;/h2&gt;
&lt;h3 id="prerequisites"&gt;Prerequisites&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;An Obsidian vault (or you can actually just use any text editor)&lt;/li&gt;
&lt;li&gt;Git installed and set up with credentials&lt;/li&gt;
&lt;li&gt;A GitHub account&lt;/li&gt;
&lt;li&gt;Hugo installation (&lt;code&gt;brew install hugo&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="create-a-new-hugo-site"&gt;Create a new Hugo site&lt;/h3&gt;
&lt;p&gt;Open up a terminal window and &lt;code&gt;cd&lt;/code&gt; to a folder in your Obsidian vault. Then, create a new Hugo-generated site:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;hugo new site slides
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Replace &lt;code&gt;slides&lt;/code&gt; with the name of your new site.&lt;/p&gt;
&lt;p&gt;You should have a new directory, &lt;code&gt;slides&lt;/code&gt;, in your Obsidian vault.&lt;/p&gt;
&lt;h3 id="add-the-reveal-hugo-theme"&gt;Add the reveal-hugo theme&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;cd&lt;/code&gt; into &lt;code&gt;slides&lt;/code&gt; and clone the reveal-hugo repo. The documentation suggests using a submodule:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git submodule add git@github.com:dzello/reveal-hugo.git themes/reveal-hugo
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Personally, I just cloned it because I know I&amp;rsquo;m probably going to be messing around with it substantially:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git clone git@github.com:dzello/reveal-hugo.git themes/reveal-hugo
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;You should have a &lt;code&gt;/themes/reveal-hugo&lt;/code&gt; folder that contains the theme.&lt;/p&gt;
&lt;h3 id="configure-reveal-hugo-theme"&gt;Configure reveal-hugo theme&lt;/h3&gt;
&lt;p&gt;Set up your new Hugo site to use the reveal-hugo theme by adding the following to &lt;code&gt;/config.toml&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ae81ff"&gt;theme = &amp;#34;reveal-hugo&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;[&lt;span style="color:#ae81ff"&gt;markup.goldmark.renderer]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ae81ff"&gt;unsafe = true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;[&lt;span style="color:#ae81ff"&gt;outputFormats.Reveal]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ae81ff"&gt;baseName = &amp;#34;index&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ae81ff"&gt;mediaType = &amp;#34;text/html&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ae81ff"&gt;isHTML = true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The &lt;code&gt;Reveal&lt;/code&gt; part is what lets you output text in slide format.&lt;/p&gt;
&lt;h3 id="create-your-slides"&gt;Create your slides&lt;/h3&gt;
&lt;p&gt;Go to &lt;code&gt;/content&lt;/code&gt; and create a file there, called &lt;code&gt;_index.md&lt;/code&gt;. The filename is important, as is its location (I learned that the hard way). This file is going to be the first page people see, so it should probably be a list of your presentation slides. For now, put in something like this:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;+++
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;title = &amp;#34;My presentations&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;outputs = [&amp;#34;Reveal&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;+++
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Here are my presentation slides!
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;[&lt;span style="color:#f92672"&gt;sample presentation&lt;/span&gt;](&lt;span style="color:#a6e22e"&gt;/sample&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Then, create a new folder for your presentation, such as &lt;code&gt;sample&lt;/code&gt;. In &lt;code&gt;/content/sample&lt;/code&gt;, create a file called &lt;code&gt;_index.md&lt;/code&gt;. Again , the filename is also important here (guess how I learned that).&lt;/p&gt;
&lt;p&gt;This index file is going to be where you actually create your slides. Here&amp;rsquo;s the context of my &lt;code&gt;/content/sample/_index.md&lt;/code&gt;:&lt;/p&gt;
&lt;!-- raw HTML omitted --&gt;
&lt;p&gt;Each slide is separated by &lt;code&gt;---&lt;/code&gt;, just like in Obsidian, which apparently uses the same converter that reveal-hugo does, &lt;a href="https://github.com/hakimel/reveal.js"&gt;reveal.js&lt;/a&gt;. Note that if you want to try out having an image as a background to one of the slides, you&amp;rsquo;ll need to add that to your &lt;code&gt;/sample&lt;/code&gt; folder and change the filename in the slide in this part:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;slide background-image&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;lucrezia-carnelos-AsM4T46tqcU-unsplash.jpg&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="generate-your-site"&gt;Generate your site&lt;/h3&gt;
&lt;p&gt;Now it&amp;rsquo;s time to generate your site! Wait - didn&amp;rsquo;t we already do that? Sort of that. That was creating the framework for the site, but now you need to get Hugo to convert those Markdown files you&amp;rsquo;ve just created into something publishable. So cd to the root directory &lt;code&gt;slides&lt;/code&gt; and run this:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;hugo
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;That command should generate a &lt;code&gt;slides/public&lt;/code&gt; folder, where all the publishable code will go.&lt;/p&gt;
&lt;p&gt;At this point, you can also check your work by starting a local server with &lt;code&gt;hugo server&lt;/code&gt; and navigating to &lt;code&gt;http://localhost:1313&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id="push-your-site-to-a-remote-github-repo"&gt;Push your site to a remote GitHub repo&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;cd&lt;/code&gt; into your public folder. This is important, as I initially started the repo in &lt;code&gt;slides&lt;/code&gt; and it took me ages to realize that GitHub Pages requires an &lt;code&gt;index.html&lt;/code&gt; in the root directory to function.&lt;/p&gt;
&lt;p&gt;Initialize a Git repo:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git init
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Stage and commit your changes:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git add .
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git commit -m &lt;span style="color:#e6db74"&gt;&amp;#39;Initial commit&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Create a repository on your GitHub account called &lt;code&gt;username.github.io&lt;/code&gt; where &lt;code&gt;username&lt;/code&gt; is your GitHub username. (If you already have a repo called that, you can alternatively push the contents of &lt;code&gt;public&lt;/code&gt; to a branch called &lt;code&gt;gh-pages&lt;/code&gt;). The repo name matters.&lt;/p&gt;
&lt;p&gt;Push your changes to your repo.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git push -u origin master
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;You should now have a repository on GitHub called &lt;code&gt;username.github.io&lt;/code&gt;, containing everything in &lt;code&gt;public&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id="set-up-github-pages"&gt;Set up GitHub Pages&lt;/h3&gt;
&lt;p&gt;On GitHub, go to the repository settings and scroll down to the GitHub Pages section. Select the right branch (&lt;code&gt;master&lt;/code&gt; in most cases) and click Save.&lt;/p&gt;
&lt;h3 id="optional-using-a-custom-domain"&gt;(Optional) Using a custom domain&lt;/h3&gt;
&lt;p&gt;If you want to use a custom domain, enter it in the repository settings from the previous step.&lt;/p&gt;
&lt;p&gt;Then, go to your domain registrar and add a CNAME record pointing &lt;code&gt;www&lt;/code&gt; to &lt;code&gt;username.github.io&lt;/code&gt;. &lt;a href="https://docs.github.com/en/github/working-with-github-pages/about-custom-domains-and-github-pages"&gt;Here&amp;rsquo;s more information on that&lt;/a&gt; from GitHub.&lt;/p&gt;
&lt;p&gt;It can take a few hours for DNS records to propagate, so after you set this up, take a break before you convince yourself you&amp;rsquo;ve set something up wrong. ;)&lt;/p&gt;
&lt;h3 id="check-out-your-new-site"&gt;Check out your new site!&lt;/h3&gt;
&lt;p&gt;When you navigate to your new site, you should first see the contents of &lt;code&gt;slides/content/_index.md&lt;/code&gt;, which has a link to your sample presentation. Clicking on that should &lt;em&gt;reveal&lt;/em&gt; (ha) the slides one by one. You can navigate through them with the arrow keys, and you can also see speaker notes (if you put any in, which I did on the third slide if you copied my sample slides).&lt;/p&gt;
&lt;h3 id="other-issues-i-faced"&gt;Other issues I faced&lt;/h3&gt;
&lt;p&gt;I ran into a few issues during this setup because:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I was already tracking changes in my Obsidian vault with Git&lt;/li&gt;
&lt;li&gt;I already had a repo called &lt;code&gt;nicolevanderhoeven.github.io&lt;/code&gt;, and I needed to create a branch called &lt;code&gt;gh-pages&lt;/code&gt; to still use GitHub Pages.&lt;/li&gt;
&lt;li&gt;My Obsidian repo on GitHub is a private one, but I wanted the slides to be public.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you have a similar setup, maybe the following instructions will help.&lt;/p&gt;
&lt;h4 id="use-worktrees-not-subtrees-or-submodules"&gt;Use worktrees, not subtrees or submodules&lt;/h4&gt;
&lt;p&gt;After attempts to make this setup work with submodules and subtrees, both of which were way too complicated for what I needed, I settled on using worktrees.&lt;/p&gt;
&lt;p&gt;Add &lt;code&gt;public&lt;/code&gt; to &lt;code&gt;.gitignore&lt;/code&gt;. From &lt;code&gt;slides&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;echo &lt;span style="color:#e6db74"&gt;&amp;#34;public/&amp;#34;&lt;/span&gt; &amp;gt;&amp;gt; .gitignore
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Create a worktree for &lt;code&gt;public&lt;/code&gt;, to be tracked on the branch &lt;code&gt;gh-pages&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git worktree add public gh-pages
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;After you generate the static code via &lt;code&gt;hugo&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cd public
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git add .
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git commit -m &lt;span style="color:#e6db74"&gt;&amp;#39;Commit message&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git push origin gh-pages
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Your &lt;code&gt;gh-pages&lt;/code&gt; branch should contain only the files in &lt;code&gt;public&lt;/code&gt;.&lt;/p&gt;
&lt;h4 id="github-pages-with-a-private-repo"&gt;GitHub Pages with a private repo&lt;/h4&gt;
&lt;p&gt;GitHub Pages is free, but if you want to be able to use it with a private repo, &lt;a href="https://docs.github.com/en/github/working-with-github-pages/troubleshooting-custom-domains-and-github-pages"&gt;you can&amp;rsquo;t&lt;/a&gt;. Sorry!&lt;/p&gt;
&lt;p&gt;You can look into using GitHub Actions to copy &lt;code&gt;public&lt;/code&gt; from your private repo to a public one, or you could just &lt;a href="https://github.com/pricing"&gt;spend the $4/month&lt;/a&gt; to remove the restriction. I opted to pay, because I love GitHub anyway.&lt;/p&gt;
&lt;h2 id="presentation-as-code"&gt;Presentation as code&lt;/h2&gt;
&lt;p&gt;That&amp;rsquo;s it! I ran into a few snags while I was attempting to implement this, so I thought I&amp;rsquo;d document it here in case it helps anyone else. Despite the setbacks, I think it&amp;rsquo;s worth it&amp;ndash; I can now whip up presentations in Markdown within Obsidian and have that published to a site I control for people to look through at their own leisure. This should speed up my presentation creation process considerably.&lt;/p&gt;
&lt;p&gt;Theoretically.&lt;/p&gt;
&lt;p&gt;If only I could stop procrastinating on creating this presentation by setting up a framework for creating presentations&amp;hellip;&lt;/p&gt;</description></item></channel></rss>