<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
    <title> - List of &#x2F;misc posts</title>
    <link rel="self" type="application/atom+xml" href="https://blog.optional.page/misc/atom.xml"/>
    <link rel="alternate" type="text/html" href="https://blog.optional.page/misc/"/>
    <generator uri="https://www.getzola.org/">Zola</generator>
    <updated>2025-11-13T00:00:00+00:00</updated>
    <id>https://blog.optional.page/misc/atom.xml</id><entry xml:lang="en">
        <title>&quot;AI&quot; is like…</title>
        <published>2025-10-03T00:00:00+00:00</published>
        <updated>2025-10-03T00:00:00+00:00</updated>
        <author><name>Optional</name></author>
        <link rel="alternate" type="text/html" href="https://blog.optional.page/misc/pedalo/"/>
        <id>https://blog.optional.page/misc/pedalo/</id>
        <content type="html" xml:base="https://blog.optional.page/misc/pedalo/">
        &lt;p&gt;In August I spent 30 days (and my own hard-earned money) testing the &quot;premium&quot; AI models offered by Anthropic, namely Claude Opus 4 (and later 4.1). Previously, the invention of LLMs has been compared to that of the printing press, the smartphone, etc. My experience has revealed a much better analogy, at least from a user perspective: The humble &lt;em&gt;Pedalo&lt;&#x2F;em&gt;.&lt;&#x2F;p&gt;
&lt;span id=&quot;continue-reading&quot;&gt;&lt;&#x2F;span&gt;
&lt;p&gt;You know &quot;Pedalo?&quot; Not the kind of boat, but the &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;de.wikipedia.org&#x2F;wiki&#x2F;Pedalo_(Spielger%C3%A4t)&quot;&gt;German toy&lt;&#x2F;a&gt;. It was &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;knowyourmeme.com&#x2F;memes&#x2F;pedalo&quot;&gt;a meme&lt;&#x2F;a&gt; at the start of 2018. It&#x27;s a simple wooden construction that you stand on and operate through a kind of pedaling motion with your legs, allowing you to roll around. Our Kindergarten and elementary school had these for the kids. The parallels to LLMs are eerie:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Solid foundation&lt;&#x2F;strong&gt;: The eye-catching thing about the Pedalo is the way it takes advantage of a classic of human achievement, the OG—the motherfucking wheel. Name a better invention. I&#x27;ll wait. Transformer architecture? Exactly.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Slick design&lt;&#x2F;strong&gt;: The Pedalo looks slick: Natural wooden texture and a bright yellow brand identity, all packaged into a small form factor. The Claude website is a similar exercise in minimal design. A sleek chat interface reduced only to the most relevant 17 buttons with 3 different submenus and the brand icon, which looks like a butthole. During text generation it&#x27;s even animated to look like it&#x27;s pooping.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Endless possibilities&lt;&#x2F;strong&gt;: You might think the Pedalo only presents an alternative to walking, but there&#x27;s more. Instead of telling you what exactly, I&#x27;m going to cite Sam Altman: &quot;We are excited to see what you do with it.&quot;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Revolution just around the corner&lt;&#x2F;strong&gt;: Once they put wings on the Pedalo it&#x27;s gonna be &quot;game over&quot; for any other mode of transportation. Just like AGI, AI agents, and the Singularity—which are very real things!—will make all our life so much better!&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;More fun&lt;&#x2F;strong&gt;: If you are tired of walking you can switch to the Pedalo. The enjoyment this novelty provides has been scientifically proven&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-1-1&quot;&gt;&lt;a href=&quot;#fn-1&quot;&gt;1&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt; to be non-zero in the first 15 seconds, which is about as much as I can say about chatting with an LLM instead of reading Wikipedia or StackOverflow.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Faster&lt;&#x2F;strong&gt;: Look, just because nobody has won a 100-meter sprint on the Pedalo does not mean it&#x27;s objectively slower. And actually, when you&#x27;re standing on it, it feels pretty fast. Just like &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;metr.org&#x2F;blog&#x2F;2025-07-10-early-2025-ai-experienced-os-dev-study&#x2F;&quot;&gt;LLM-assisted coding&lt;&#x2F;a&gt;.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Style&lt;&#x2F;strong&gt;: Using the Pedalo or an LLM you look &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;youtu.be&#x2F;1MLdOBh9jOk&quot;&gt;equally cool&lt;&#x2F;a&gt;.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Fanatic fanbase&lt;&#x2F;strong&gt;: There&#x27;s no amount of snarky comments nor reasoned debate that will convince a seven-year-old German boy that his Pedalo is shit. AI boosters have similarly developed brains.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;section class=&quot;footnotes&quot;&gt;
&lt;ol class=&quot;footnotes-list&quot;&gt;
&lt;li id=&quot;fn-1&quot;&gt;
&lt;p&gt;Citation needed. &lt;a href=&quot;#fr-1-1&quot;&gt;↩&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;&#x2F;section&gt;
</content>
    </entry><entry xml:lang="en">
        <title>Obsidian Bases Tips and Tricks</title>
        <published>2025-09-04T00:00:00+00:00</published>
        <updated>2025-11-13T00:00:00+00:00</updated>
        <author><name>Optional</name></author>
        <link rel="alternate" type="text/html" href="https://blog.optional.page/misc/bases/"/>
        <id>https://blog.optional.page/misc/bases/</id>
        <content type="html" xml:base="https://blog.optional.page/misc/bases/">
        &lt;p&gt;After a weekend tinkering with the new Bases feature of &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;obsidian.md&quot;&gt;Obsidian&lt;&#x2F;a&gt;, I want to share some cool formulas I came up with, that will hopefully power up your bases as much as they did mine.&lt;&#x2F;p&gt;
&lt;span id=&quot;continue-reading&quot;&gt;&lt;&#x2F;span&gt;
&lt;p&gt;I&#x27;m assuming you already know:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;What Bases are&lt;&#x2F;li&gt;
&lt;li&gt;How to create a base&lt;&#x2F;li&gt;
&lt;li&gt;How to create views&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;If you&#x27;re unsure about any of this, you can watch &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;youtu.be&#x2F;9Yt52zJIIG0&quot;&gt;Nick Milo&#x27;s video&lt;&#x2F;a&gt; to catch up.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;filters-properties-sorting-and-limits&quot;&gt;Filters, Properties, Sorting and Limits&lt;&#x2F;h2&gt;
&lt;p&gt;A quick refresh on how to access the advanced functionality.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;filters&quot;&gt;Filters&lt;&#x2F;h3&gt;
&lt;a href=&quot;https:&#x2F;&#x2F;blog.optional.page&#x2F;posts&#x2F;img&#x2F;ObsidianBases_Filter.png&quot; target=&quot;_blank&quot;&gt;
    &lt;picture&gt;
        &lt;source srcset=&quot;https:&amp;#x2F;&amp;#x2F;blog.optional.page&amp;#x2F;processed_images&amp;#x2F;ObsidianBases_Filter.7bc8f8ca2e0c6311.webp&quot; type=&quot;image&#x2F;webp&quot;&gt;
        &lt;img src=&quot;https:&#x2F;&#x2F;blog.optional.page&#x2F;posts&#x2F;img&#x2F;ObsidianBases_Filter.png&quot; alt=&quot;Obsidian Base. Clicking on &amp;quot;Filter&amp;quot; on the right of the top menu bar has revealed the filter pop-up. The options to open&amp;#x2F;collapse the sections &amp;quot;All views&amp;quot; and &amp;quot;This view&amp;quot; is highlighted. The filter in the first section is in visual edit mode, but the button to &amp;quot;Advanced filter&amp;quot; is highlighted. The other section has this mode activated.&quot;&gt;
    &lt;&#x2F;picture&gt;
&lt;&#x2F;a&gt;
&lt;p&gt;A base has two sections for filters, one titled &lt;samp&gt;All views&lt;&#x2F;samp&gt;, the second one &lt;samp&gt;This view&lt;&#x2F;samp&gt;. These are applied sequentially: first the &quot;All views&quot; filter selects a subset of your notes, then the &quot;This view&quot; filter prunes this selection further. You&#x27;ll want to make use of this. If you plan on having one view for notes on books, one for all notes on books you read in 2025, and one for all fiction books you ever read, then you&#x27;ll want the &quot;All views&quot; filter to be the lowest common denominator, in this case &quot;all book notes.&quot; The other views additionally filter down to &quot;reviewed in 2025&quot; and &quot;fiction,&quot; respectively.&lt;&#x2F;p&gt;
&lt;p&gt;You can define your filters either using some help from the UI by selecting fields and functions from drop-down menus. You can also switch to the &quot;advanced&quot; mode by clicking the little &lt;kbd&gt;&lt;samp&gt;&amp;lt;&#x2F;&amp;gt;&lt;&#x2F;samp&gt;&lt;&#x2F;kbd&gt; icon. All my tips will use this mode.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;properties-and-sorting&quot;&gt;Properties and Sorting&lt;&#x2F;h3&gt;
&lt;p&gt;The properties pop-up allows you to select properties to show in your view. But it also allows you to define custom &lt;em&gt;formulas&lt;&#x2F;em&gt; via the &lt;kbd&gt;&lt;samp&gt;Add formula&lt;&#x2F;samp&gt;&lt;&#x2F;kbd&gt; button at the bottom. My tips will also make use of this feature.&lt;&#x2F;p&gt;
&lt;p&gt;To sort on a property, you have two options. If the property is currently being displayed as a column, you can click on the column heading to cycle sorting directions. The other option that&#x27;s always available is to use the popup hidden behind the &lt;kbd&gt;&lt;samp&gt;Sort&lt;&#x2F;samp&gt;&lt;&#x2F;kbd&gt; button in the top menu bar.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;limits&quot;&gt;Limits&lt;&#x2F;h3&gt;
&lt;a href=&quot;https:&#x2F;&#x2F;blog.optional.page&#x2F;posts&#x2F;img&#x2F;ObsidianBases_Limit.png&quot; target=&quot;_blank&quot;&gt;
    &lt;picture&gt;
        &lt;source srcset=&quot;https:&amp;#x2F;&amp;#x2F;blog.optional.page&amp;#x2F;processed_images&amp;#x2F;ObsidianBases_Limit.2e765ac8ff0330ba.webp&quot; type=&quot;image&#x2F;webp&quot;&gt;
        &lt;img src=&quot;https:&#x2F;&#x2F;blog.optional.page&#x2F;posts&#x2F;img&#x2F;ObsidianBases_Limit.png&quot; alt=&quot;Same Base. Clicking on &amp;quot;87 results&amp;quot; on the left of the top menu bar has revealed the limit pop-up. It has options to enter a number to limit results. It also has export options to csv or the clipboard.&quot;&gt;
    &lt;&#x2F;picture&gt;
&lt;&#x2F;a&gt;
&lt;p&gt;Finally, if you ever want to limit the number of results (or export the results), you can bring up the corresponding menu by clicking on the &lt;kbd&gt;&lt;samp&gt;XX results&lt;&#x2F;samp&gt;&lt;&#x2F;kbd&gt; button next to the view selections.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;formulas&quot;&gt;Formulas&lt;&#x2F;h2&gt;
&lt;p&gt;Now that that&#x27;s all out of the way, we can &lt;em&gt;almost&lt;&#x2F;em&gt; dive into some nifty formulas. Just two general hints before that:&lt;&#x2F;p&gt;
&lt;p&gt;If you are converting &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;blacksmithgu.github.io&#x2F;obsidian-dataview&#x2F;&quot;&gt;Dataview&lt;&#x2F;a&gt; tables into bases, you can use &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;bases-toolbox.boninall.com&#x2F;#dataview-converter&quot;&gt;this nifty converter&lt;&#x2F;a&gt; by Boninall. Depending on the complexity of your input tables, it might struggle, but it can still be a good starting point.&lt;&#x2F;p&gt;
&lt;p&gt;Second, if you find yourself reusing the same chunk of code a lot of times in a base, you should create a property formula and then use that instead. This makes it clearer what the code is doing, makes refactoring easier, and keeps the downstream formulas shorter. You can do this by referencing &lt;code&gt;formula[&quot;formula name&quot;]&lt;&#x2F;code&gt;.
For example, instead of using these two formulas:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo z-code&quot;&gt;&lt;code data-lang=&quot;javascript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-comment&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span class=&quot;z-comment&quot;&gt; This might be used as a filter in one view:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;list&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable&quot;&gt;sources&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;map&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable&quot;&gt;value&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;contains&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;Book&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;contains&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-language&quot;&gt;false&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-comment&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span class=&quot;z-comment&quot;&gt; This might be used as a filter in another view:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;list&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable&quot;&gt;sources&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;map&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable&quot;&gt;value&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;contains&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;Book&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;filter&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-language&quot;&gt;true&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;length&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator&quot;&gt; &amp;gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric&quot;&gt; 5&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;You&#x27;ll want to refactor them like this:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo z-code&quot;&gt;&lt;code data-lang=&quot;javascript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-comment&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span class=&quot;z-comment&quot;&gt; Property &amp;quot;is-book-sources&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;list&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable&quot;&gt;sources&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;map&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable&quot;&gt;value&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;contains&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;Book&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-comment&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span class=&quot;z-comment&quot;&gt; Filter in one view:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-variable&quot;&gt;formula&lt;&#x2F;span&gt;&lt;span&gt;[&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;is-book-sources&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;]&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;contains&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-language&quot;&gt;false&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-comment&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span class=&quot;z-comment&quot;&gt; Filter in other view:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-variable&quot;&gt;formula&lt;&#x2F;span&gt;&lt;span&gt;[&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;is-book-sources&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;]&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;filter&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-language&quot;&gt;true&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;length&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator&quot;&gt; &amp;gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric&quot;&gt; 5&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Okay, so here are the formulas that do some heavy lifting in my own bases.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;file-is-a-daily-note&quot;&gt;File Is a Daily Note&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo z-code&quot;&gt;&lt;code data-lang=&quot;javascript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-string z-regexp&quot;&gt;&#x2F;&lt;&#x2F;span&gt;&lt;span class=&quot;z-string z-regexp&quot;&gt;ø &lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other&quot;&gt;\d&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator&quot;&gt;{4}&lt;&#x2F;span&gt;&lt;span class=&quot;z-string z-regexp&quot;&gt;-&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other&quot;&gt;\d&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator&quot;&gt;{2}&lt;&#x2F;span&gt;&lt;span class=&quot;z-string z-regexp&quot;&gt;-&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other&quot;&gt;\d&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator&quot;&gt;{2}&lt;&#x2F;span&gt;&lt;span class=&quot;z-string z-regexp&quot;&gt;&#x2F;&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;matches&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable&quot;&gt;file&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable&quot;&gt;name&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;This formula uses &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Regular_expression&quot;&gt;regex&lt;&#x2F;a&gt; to match the naming format of &lt;em&gt;my&lt;&#x2F;em&gt; daily notes to return &lt;samp&gt;true&lt;&#x2F;samp&gt; or &lt;samp&gt;false&lt;&#x2F;samp&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;My daily note names are formatted like this: &lt;code&gt;ø YYYY-MM-DD.md&lt;&#x2F;code&gt;, e.g., &lt;code&gt;ø 2025-12-31.md&lt;&#x2F;code&gt;. You&#x27;ll need to adjust the part between the slashes to match your own format. If you don&#x27;t know how to use regex, you can ask any LLM: they&#x27;re actually quite good with that. But I also recommend learning the basics yourself, as it is quite powerful, and even just knowing a bit will help you write powerful formulas.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;list-contains-non-links&quot;&gt;List Contains Non-Links&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo z-code&quot;&gt;&lt;code data-lang=&quot;javascript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;list&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable&quot;&gt;sources&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;map&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable&quot;&gt;value&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;toString&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;startsWith&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;[[&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator&quot;&gt; &amp;amp;&amp;amp;&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable&quot;&gt; value&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;toString&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;endsWith&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;]]&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;contains&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-language&quot;&gt;false&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;This checks all values of the &lt;code&gt;sources&lt;&#x2F;code&gt; property and returns &lt;samp&gt;false&lt;&#x2F;samp&gt; if any of its values are not Obsidian links (i.e., wrapped in double square brackets).&lt;&#x2F;p&gt;
&lt;p&gt;Wrapping a property in the &lt;code&gt;list()&lt;&#x2F;code&gt; function ensures we can run &lt;code&gt;.map()&lt;&#x2F;code&gt; on it even if it was empty or formatted as a single-value property.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;find-non-links-in-multiple-lists&quot;&gt;Find Non-Links in Multiple Lists&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo z-code&quot;&gt;&lt;code data-lang=&quot;javascript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;[&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;list&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable&quot;&gt;director&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt; list&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable&quot;&gt;actors&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span&gt;]&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;flat&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;filter&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-keyword z-operator&quot;&gt;  !&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable&quot;&gt;value&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;toString&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;startsWith&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;[[&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator&quot;&gt; ||&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-keyword z-operator&quot;&gt;  !&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable&quot;&gt;value&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;toString&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;endsWith&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;]]&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;This returns a list of all non-link values in the &lt;code&gt;director&lt;&#x2F;code&gt; and &lt;code&gt;actors&lt;&#x2F;code&gt; properties.&lt;&#x2F;p&gt;
&lt;p&gt;We create a big list out of all values and apply our check as a filter. If we wanted to use this formula to help us filter notes that only contain these errors, we could alter its last line like so:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo z-code&quot;&gt;&lt;code data-lang=&quot;javascript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;[&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;list&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable&quot;&gt;director&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt; list&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable&quot;&gt;actors&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span&gt;]&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;flat&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;filter&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-keyword z-operator&quot;&gt;  !&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable&quot;&gt;value&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;toString&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;startsWith&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;[[&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator&quot;&gt; ||&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-keyword z-operator&quot;&gt;  !&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable&quot;&gt;value&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;toString&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;endsWith&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;]]&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;length&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator&quot;&gt; &amp;gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric&quot;&gt; 0&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;incomplete-string-to-date&quot;&gt;Incomplete String to Date&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo z-code&quot;&gt;&lt;code data-lang=&quot;javascript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-keyword&quot;&gt;if&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable&quot;&gt;note&lt;&#x2F;span&gt;&lt;span&gt;[&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;release-date&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;]&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;contains&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;-&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;   date&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable&quot;&gt;note&lt;&#x2F;span&gt;&lt;span&gt;[&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;release-date&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;]&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;   date&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable&quot;&gt;note&lt;&#x2F;span&gt;&lt;span&gt;[&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;release-date&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;]&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator&quot;&gt;+&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;-01-01&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;This converts the value of the property &lt;code&gt;release-date&lt;&#x2F;code&gt; to a &lt;code&gt;date&lt;&#x2F;code&gt;, whether the review date was just a year (&lt;code&gt;YYYY&lt;&#x2F;code&gt;) or a full date (&lt;code&gt;YYYY-MM-DD&lt;&#x2F;code&gt;).&lt;&#x2F;p&gt;
&lt;p&gt;The &lt;code&gt;date()&lt;&#x2F;code&gt; function only takes full dates formatted as &lt;code&gt;YYYY-MM-DD&lt;&#x2F;code&gt; as its input. Here we naïvely assume all dates without a dash to be &lt;code&gt;YYYY&lt;&#x2F;code&gt; and add the month and day January 1st to make them valid.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;wrongly-formatted-string-to-date&quot;&gt;Wrongly Formatted String to Date&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo z-code&quot;&gt;&lt;code data-lang=&quot;javascript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;date&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable&quot;&gt;note&lt;&#x2F;span&gt;&lt;span&gt;[&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;last-seen&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;]&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;slice&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric&quot;&gt;6&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric&quot;&gt;10&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator&quot;&gt;+&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;-&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator&quot;&gt;+&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable&quot;&gt;note&lt;&#x2F;span&gt;&lt;span&gt;[&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;last-seen&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;]&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;slice&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric&quot;&gt;3&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric&quot;&gt;5&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator&quot;&gt;+&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;-&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator&quot;&gt;+&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable&quot;&gt;note&lt;&#x2F;span&gt;&lt;span&gt;[&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;last-seen&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;]&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;slice&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric&quot;&gt;0&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric&quot;&gt;2&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;This converts dates in the &lt;code&gt;last-seen&lt;&#x2F;code&gt; property from German date formatting (&lt;code&gt;DD.MM.YYYY&lt;&#x2F;code&gt;) to a value of type &lt;code&gt;date&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;As explained above, we have to arrive at &lt;code&gt;YYYY-MM-DD&lt;&#x2F;code&gt; as an argument for &lt;code&gt;date()&lt;&#x2F;code&gt;. Here, we accomplish this by assuming all dates to at least be in the correct German format and then &lt;code&gt;slice&lt;&#x2F;code&gt;-ing the relevant parts out and reordering them.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;latest-date-in-list&quot;&gt;Latest Date in List&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo z-code&quot;&gt;&lt;code data-lang=&quot;javascript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;list&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable&quot;&gt;note&lt;&#x2F;span&gt;&lt;span&gt;[&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;review-dates&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;]&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;filter&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable&quot;&gt;value&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;contains&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;ø&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;map&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;  if&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable&quot;&gt;value&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;slice&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric&quot;&gt;2&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;contains&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;-&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;     date&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable&quot;&gt;value&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;slice&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric&quot;&gt;2&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;     date&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable&quot;&gt;value&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;slice&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric&quot;&gt;2&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator&quot;&gt;+&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;-01-01&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;sort&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span&gt;[&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator&quot;&gt;-&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric&quot;&gt;1&lt;&#x2F;span&gt;&lt;span&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;This returns the latest date in &lt;code&gt;note[&quot;review-dates&quot;]&lt;&#x2F;code&gt;, taking into account only notes formatted like &lt;em&gt;my&lt;&#x2F;em&gt; daily notes or yearly notes.&lt;&#x2F;p&gt;
&lt;p&gt;This combines a lot of what we saw above, but adds some new things:&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;Wrapping the property in a &lt;code&gt;list()&lt;&#x2F;code&gt; makes it more robust.&lt;&#x2F;li&gt;
&lt;li&gt;We filter down to only those values that contain my date-marker &quot;ø.&quot;&lt;&#x2F;li&gt;
&lt;li&gt;We use the &lt;a href=&quot;https:&#x2F;&#x2F;blog.optional.page&#x2F;misc&#x2F;bases&#x2F;#incomplete-string-to-date&quot;&gt;Incomplete String to Date&lt;&#x2F;a&gt; formula to turn the value into a date.&lt;&#x2F;li&gt;
&lt;li&gt;We sort the dates using &lt;code&gt;.sort()&lt;&#x2F;code&gt;.&lt;&#x2F;li&gt;
&lt;li&gt;Finally, we access the last element (the latest date) using &lt;code&gt;[-1]&lt;&#x2F;code&gt;.&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;h3 id=&quot;interlude-this&quot;&gt;Interlude: &lt;code&gt;this&lt;&#x2F;code&gt;&lt;&#x2F;h3&gt;
&lt;p&gt;In case you didn&#x27;t see &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;youtu.be&#x2F;9Yt52zJIIG0&amp;amp;t=747&quot;&gt;Nick talking about it&lt;&#x2F;a&gt;, let me tell you about &lt;code&gt;this&lt;&#x2F;code&gt;. This variable is a reference to the note &lt;em&gt;you have currently selected&lt;&#x2F;em&gt;,&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-1-1&quot;&gt;&lt;a href=&quot;#fn-1&quot;&gt;1&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt; unlike &lt;code&gt;note&lt;&#x2F;code&gt;, which references the note the base is looking at.&lt;&#x2F;p&gt;
&lt;p&gt;For example, if you want to troll yourself, you can add this filter to your base:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo z-code&quot;&gt;&lt;code data-lang=&quot;javascript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-variable z-language&quot;&gt;this&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable&quot;&gt;file&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable&quot;&gt;ext&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator&quot;&gt; !=&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;base&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;This will make your base always appear empty when you are right on it. Only when you have a different (non-&lt;code&gt;.base&lt;&#x2F;code&gt;) file focused will the base show what the other filters permit.&lt;&#x2F;p&gt;
&lt;p&gt;Trolling yourself isn&#x27;t the best use, so let&#x27;s look at some others.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;backlinks&quot;&gt;Backlinks&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo z-code&quot;&gt;&lt;code data-lang=&quot;javascript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-variable&quot;&gt;file&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;hasLink&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-language&quot;&gt;this&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable&quot;&gt;file&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;This emulates backlinks functionality, returning true if the other file is linking to &lt;code&gt;this&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Don&#x27;t dismiss this filter based on its simplicity. In combination with other filters, it becomes incredibly powerful. We&#x27;ll &lt;a href=&quot;https:&#x2F;&#x2F;blog.optional.page&#x2F;misc&#x2F;bases&#x2F;#backlinks-to-sections&quot;&gt;come back to that&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;outlinks&quot;&gt;Outlinks&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo z-code&quot;&gt;&lt;code data-lang=&quot;javascript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-variable z-language&quot;&gt;this&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable&quot;&gt;file&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;hasLink&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable&quot;&gt;file&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;This returns true if &lt;code&gt;this&lt;&#x2F;code&gt; note is linking to the other.&lt;&#x2F;p&gt;
&lt;p&gt;You can dismiss this one. It is quite a bit less powerful than the core outlinks plugin, as it only collects existing links.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;daily-notes-of-weekly-note&quot;&gt;Daily Notes Of Weekly Note&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo z-code&quot;&gt;&lt;code data-lang=&quot;javascript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;date&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable&quot;&gt;file&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable&quot;&gt;name&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;slice&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric&quot;&gt;2&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;format&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;WW&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator&quot;&gt; ==&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-language&quot;&gt; this&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable&quot;&gt;file&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable&quot;&gt;name&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;slice&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric&quot;&gt;8&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;This returns &lt;samp&gt;true&lt;&#x2F;samp&gt; for all daily notes that share a week with &lt;code&gt;this&lt;&#x2F;code&gt; weekly note.&lt;&#x2F;p&gt;
&lt;p&gt;This is meant to be used in conjunction with &lt;a href=&quot;https:&#x2F;&#x2F;blog.optional.page&#x2F;misc&#x2F;bases&#x2F;#file-is-a-daily-note&quot;&gt;File Is a Daily Note&lt;&#x2F;a&gt; and assumes &lt;em&gt;my&lt;&#x2F;em&gt; formatting for daily and weekly notes. The first part, &lt;code&gt;date(file.name.slice(2)).format(&quot;WW&quot;)&lt;&#x2F;code&gt;, &lt;code&gt;slice&lt;&#x2F;code&gt;s off my prefix and returns the calendar week the day belongs to. That&#x27;s compared to the last two characters that remain after slicing off the starting 8 characters of &lt;code&gt;this.file.name&lt;&#x2F;code&gt;, which should be the active weekly note.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;last-three-daily-notes&quot;&gt;Last Three Daily Notes&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo z-code&quot;&gt;&lt;code data-lang=&quot;javascript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;date&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable&quot;&gt;file&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable&quot;&gt;name&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;slice&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric&quot;&gt;2&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt; date&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-language&quot;&gt;this&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable&quot;&gt;file&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable&quot;&gt;name&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;slice&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric&quot;&gt;2&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator&quot;&gt; &amp;amp;&amp;amp;&lt;&#x2F;span&gt;&lt;span&gt; &lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;date&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable&quot;&gt;file&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable&quot;&gt;name&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;slice&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric&quot;&gt;2&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator&quot;&gt; +&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;3 day&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator&quot;&gt; &amp;gt;=&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt; date&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-language&quot;&gt;this&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable&quot;&gt;file&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable&quot;&gt;name&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;slice&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric&quot;&gt;2&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;This returns &lt;samp&gt;true&lt;&#x2F;samp&gt; for all daily notes that lie 3 or fewer days in the past relative to &lt;code&gt;this&lt;&#x2F;code&gt; daily note.&lt;&#x2F;p&gt;
&lt;p&gt;The first line checks whether the other note is in the past relative to this one. The second checks that when we add 3 days to that other note, it is the same or a future date relative to this one.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;backlinks-to-sections&quot;&gt;Backlinks To Sections&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo z-code&quot;&gt;&lt;code data-lang=&quot;javascript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-variable&quot;&gt;file&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable&quot;&gt;links&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;filter&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable&quot;&gt;value&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;startsWith&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-language&quot;&gt;this&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable&quot;&gt;file&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable&quot;&gt;name&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator&quot;&gt;+&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;#&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;length&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator&quot;&gt; &amp;gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric&quot;&gt; 0&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;This returns true for all notes that link to a section in &lt;code&gt;this&lt;&#x2F;code&gt; note.&lt;&#x2F;p&gt;
&lt;p&gt;In case you didn&#x27;t know, you can link to a section by including a &lt;code&gt;#&lt;&#x2F;code&gt; in your link like so: &lt;code&gt;[[Link#Section]]&lt;&#x2F;code&gt;. This filter finds only those links.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;privileged-backlinks&quot;&gt;Privileged Backlinks&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo z-code&quot;&gt;&lt;code data-lang=&quot;javascript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-variable&quot;&gt;file&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable&quot;&gt;links&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;contains&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-language&quot;&gt;this&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable&quot;&gt;file&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable&quot;&gt;name&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator&quot;&gt;+&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;#&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;This returns &lt;samp&gt;true&lt;&#x2F;samp&gt; for all notes that link to &lt;code&gt;this&lt;&#x2F;code&gt; note with an additional &lt;code&gt;#&lt;&#x2F;code&gt; at the end.&lt;&#x2F;p&gt;
&lt;p&gt;An especially nifty one I came up with. As we&#x27;ve seen above, you can use the &lt;code&gt;#&lt;&#x2F;code&gt; to link to a specific section. But you can also include it without following up with a section heading: &lt;code&gt;[[Link#]]&lt;&#x2F;code&gt;. This breaks absolutely nothing. Obsidian treats it as if the &lt;code&gt;#&lt;&#x2F;code&gt; wasn&#x27;t there. But the above filter cares. This allows you to mark certain links as special without having to put them into a property.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;unrequited-outlinks&quot;&gt;Unrequited Outlinks&lt;&#x2F;h3&gt;
&lt;p&gt;This last one is a doozy! It&#x27;s a powerful way to find those notes that have lots of outlinks that don&#x27;t get returned by those notes. It&#x27;s quite complex, so let&#x27;s take it in stages.&lt;&#x2F;p&gt;
&lt;p&gt;Create a property formula called &lt;code&gt;inlinks&lt;&#x2F;code&gt;:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo z-code&quot;&gt;&lt;code data-lang=&quot;javascript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-variable&quot;&gt;file&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable&quot;&gt;backlinks&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;map&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable&quot;&gt;value&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;asFile&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;unique&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;filter&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-keyword z-operator&quot;&gt;  !&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable&quot;&gt;value&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable&quot;&gt;path&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;contains&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;Sources&#x2F;&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator&quot;&gt; &amp;amp;&amp;amp;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-variable&quot;&gt;  value&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable&quot;&gt;path&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator&quot;&gt; !=&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable&quot;&gt; file&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable&quot;&gt;path&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;It looks at all links coming into the file. It makes sure we&#x27;re not including duplicates, not including ourselves, and not including anything from the &lt;code&gt;Sources&#x2F;&lt;&#x2F;code&gt; folder.&lt;&#x2F;p&gt;
&lt;p&gt;Next, create a property formula called &lt;code&gt;outlinks&lt;&#x2F;code&gt;:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo z-code&quot;&gt;&lt;code data-lang=&quot;javascript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-variable&quot;&gt;file&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable&quot;&gt;links&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;map&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable&quot;&gt;value&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;asFile&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;filter&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-variable&quot;&gt;  value&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;isTruthy&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator&quot;&gt; &amp;amp;&amp;amp;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-keyword z-operator&quot;&gt;  !&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable&quot;&gt;value&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable&quot;&gt;path&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;contains&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;Sources&#x2F;&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator&quot;&gt; &amp;amp;&amp;amp;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-variable&quot;&gt;  value&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable&quot;&gt;path&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator&quot;&gt; !=&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable&quot;&gt; file&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable&quot;&gt;path&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;unique&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;It looks at all links out of the file. It makes sure we&#x27;re not including duplicates, links to non-existent files, links to ourselves, and not including anything from the &lt;code&gt;Sources&#x2F;&lt;&#x2F;code&gt; folder.&lt;&#x2F;p&gt;
&lt;p&gt;Next, create a property called &lt;code&gt;unrequited&lt;&#x2F;code&gt;:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo z-code&quot;&gt;&lt;code data-lang=&quot;javascript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-variable&quot;&gt;formula&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable&quot;&gt;outlinks&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;filter&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator&quot;&gt;!&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable&quot;&gt;formula&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable&quot;&gt;inlinks&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;contains&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable&quot;&gt;value&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;This results in a list of all &lt;code&gt;outlinks&lt;&#x2F;code&gt; that are not also &lt;code&gt;inlinks&lt;&#x2F;code&gt;. Set this property to be visible in your view.&lt;&#x2F;p&gt;
&lt;p&gt;Finally, create this filter:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo z-code&quot;&gt;&lt;code data-lang=&quot;javascript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-variable&quot;&gt;formula&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable&quot;&gt;unrequited&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;length&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator&quot;&gt; &amp;gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric&quot;&gt; 5&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;You might need to additionally filter out your daily notes or similar, but the resulting view should show you those files that have more than 5 links to &lt;em&gt;existing&lt;&#x2F;em&gt; other notes &lt;em&gt;that are not linking back&lt;&#x2F;em&gt;. Sure, not every link-relationship needs to be a two-way street, but you&#x27;ll probably find some opportunity in there!&lt;&#x2F;p&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;&#x2F;h2&gt;
&lt;p&gt;I hope you learned a thing or two about Bases and were able to steal a formula or two. If you did, send this post along to your Obsidian buddies to help them out as well. To understand the bases functions more deeply or discover some I haven&#x27;t touched, I can&#x27;t recommend the official &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;help.obsidian.md&#x2F;bases&#x2F;functions&quot;&gt;documentation&lt;&#x2F;a&gt; highly enough. It was a great help to me. If you come up with a cool formula, let me know. You can find ways to contact me below.&lt;&#x2F;p&gt;
&lt;section class=&quot;footnotes&quot;&gt;
&lt;ol class=&quot;footnotes-list&quot;&gt;
&lt;li id=&quot;fn-1&quot;&gt;
&lt;p&gt;If you have the base open in a different window, a different tab, and a sidebar, all of them will reference the currently active tab as &lt;code&gt;this&lt;&#x2F;code&gt;. When you are embedding a base (by including &lt;code&gt;![[Some.base]]&lt;&#x2F;code&gt; in your note), &lt;code&gt;this&lt;&#x2F;code&gt; instead refers to the note that includes the embedding. &lt;a href=&quot;#fr-1-1&quot;&gt;↩&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;&#x2F;section&gt;
</content>
    </entry><entry xml:lang="en">
        <title>Building A Better Keyboard</title>
        <published>2025-05-01T00:00:00+00:00</published>
        <updated>2025-05-01T00:00:00+00:00</updated>
        <author><name>Optional</name></author>
        <link rel="alternate" type="text/html" href="https://blog.optional.page/misc/better-keyboard/"/>
        <id>https://blog.optional.page/misc/better-keyboard/</id>
        <content type="html" xml:base="https://blog.optional.page/misc/better-keyboard/">
        &lt;p&gt;I&#x27;ve previously written about how &lt;a href=&quot;https:&#x2F;&#x2F;blog.optional.page&#x2F;misc&#x2F;qwerty&#x2F;&quot;&gt;regular keyboards suck&lt;&#x2F;a&gt;. I&#x27;ve also laid out options to mitigate many of their flaws. But how do you practically go about building your own better keyboard? In this post, I&#x27;ll try to answer that question and also share my—admittedly short—journey with building (step one and two to) my dream keyboard.&lt;&#x2F;p&gt;
&lt;span id=&quot;continue-reading&quot;&gt;&lt;&#x2F;span&gt;&lt;h2 id=&quot;deciding-on-a-design&quot;&gt;Deciding On A Design&lt;&#x2F;h2&gt;
&lt;p&gt;Before you can start building, you have to know what you&#x27;ll build. You could design your own board from scratch, but I haven&#x27;t yet done that, so I can&#x27;t help you with that. However, there are hundreds of designs out there that you can steal.&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-1-1&quot;&gt;&lt;a href=&quot;#fn-1&quot;&gt;1&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt; Take some time browsing &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;kbd.news&#x2F;&quot;&gt;kbd.news&lt;&#x2F;a&gt;, and &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;lemmy.world&#x2F;c&#x2F;ergomechkeyboards&quot;&gt;c&#x2F;ErgoMechKeyboards&lt;&#x2F;a&gt;, and &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;reddit.com&#x2F;r&#x2F;ErgoMechKeyboards&#x2F;&quot;&gt;r&#x2F;ErgoMechKeyboards&lt;&#x2F;a&gt;. Get an idea of what people are building and what they&#x27;re prioritizing.&lt;&#x2F;p&gt;
&lt;p&gt;For your first build, I&#x27;d recommend staying within the following boundaries:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Wireless Split Keyboard&lt;&#x2F;em&gt;. This means that the two halves communicate via Bluetooth with each other, and they&#x27;ll communicate via Bluetooth to the machine you&#x27;re typing on. But if your PC (or laptop) does not have Bluetooth capabilities, you can still plug one of the halves in using USB-C and use it that way.&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-2-1&quot;&gt;&lt;a href=&quot;#fn-2&quot;&gt;2&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt; You&#x27;ll need to solder a battery, but with a wired board, you&#x27;d have to solder the wires, so there&#x27;s not much difference in difficulty.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;em&gt;36 to 42 keys&lt;&#x2F;em&gt;. 36 keys is 3 keys per finger (including thumbs), plus an inner column of 3 keys per index finger. 42 adds another column to each pinky on the outside. Even with just 36 keys, you are able to preserve a lot of the original typing habits, such as keeping all alpha keys (the letters and a few symbols) where you&#x27;d expect. Going lower will make this difficult. Going higher than 42 keys similarly doesn&#x27;t really seem an improvement, as the additional keys will be further and further away from your fingers.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;em&gt;No Pointing Devices&lt;&#x2F;em&gt;. Some designs add little touchpads or trackballs into the keyboard design. People generally agree that these cannot fully replace a dedicated pointing device, like a mouse or touchpad. For a first build, I think it&#x27;d just make things unnecessarily complicated to add these.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;em&gt;No Rotary Encoders&lt;&#x2F;em&gt;. Rotary encoders—these things that look like radio knobs—are a similar gimmick to the pointing devices. In limited use cases, there is a point to them. If you do a lot of video or audio editing, for example, you could use them to scrub the timeline. If you&#x27;re not doing any of that, don&#x27;t bother with encoders.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;em&gt;Hotswappable&lt;&#x2F;em&gt;. Instead of soldering the switches directly to the board, you can solder these little thingies on and plug your switches in and out as you want. These are so cheap and nifty that I wouldn&#x27;t build a board without them.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;ordering-parts&quot;&gt;Ordering Parts&lt;&#x2F;h2&gt;
&lt;p&gt;So you&#x27;ve selected some design and found the repo where the creator is kindly sharing all the files and instructions that will enable you to build your board. So, go on and order the parts. But how and where?&lt;&#x2F;p&gt;
&lt;p&gt;While the specific parts vary, here&#x27;s what you&#x27;ll probably need:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Microcontrollers&lt;&#x2F;em&gt;: Depending on the type you need, these will run you 15€ to 25€ each, and you should probably order them on AliExpress, but do check other sellers as well.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;em&gt;Tiny Electronics Parts&lt;&#x2F;em&gt;: Your list will probably include a whole bunch of &lt;em&gt;Diodes&lt;&#x2F;em&gt;, two &lt;em&gt;On-&#x2F;Off-Switches&lt;&#x2F;em&gt; and &lt;em&gt;Reset Buttons&lt;&#x2F;em&gt;, &lt;em&gt;Hotswap Sockets&lt;&#x2F;em&gt;, and &lt;em&gt;Batteries&lt;&#x2F;em&gt;. This stuff is best ordered on AliExpress and will come out to about 15€.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;em&gt;Key Switches&lt;&#x2F;em&gt;: This is what you&#x27;ll be interacting with all the time. Switches are a science unto themselves, and people have… opinions. Since you&#x27;re using Hotswap Sockets, you won&#x27;t forever be stuck with the switches you select here, but for your first board, I&#x27;d recommend getting the lightest linear switches you can find. The price for these will be pretty equal no matter where you order, but you could go with AliExpress or find a more local vendor on &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;kbd.news&#x2F;vendors&quot;&gt;kbd.news&#x2F;vendors&lt;&#x2F;a&gt;. They&#x27;ll run you around 40€&lt;&#x2F;li&gt;
&lt;li&gt;&lt;em&gt;Key Caps&lt;&#x2F;em&gt;: Again, there are options, and opinions on those options. But you&#x27;re also able to swap these out later. Order where you are ordering the switches as well, so AliExpress or some other vendor. Don&#x27;t just order the same plain caps here. Also throw in some different home keys to try out. You&#x27;ll come up to another 35€&lt;&#x2F;li&gt;
&lt;li&gt;&lt;em&gt;PCB&lt;&#x2F;em&gt;: You&#x27;ll get some Gerber files that you can use to order a custom-etched PCB. Everyone&#x27;s ordering at JLC for good reason: It&#x27;s quick, cheap, and even allows some nice customization. You&#x27;ll pay 15€ to 25€ here, depending on whether the design is reversible.&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-3-1&quot;&gt;&lt;a href=&quot;#fn-3&quot;&gt;3&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;em&gt;Case&lt;&#x2F;em&gt;: Somewhat optional, but you&#x27;ll probably want to get a casing 3D printed. These typically come in two parts per side: A top plate which sits between the PCB and switches, and a bottom plate on the… bottom. JLC can also print these, but I didn&#x27;t check the prices as I printed mine in Germany at &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.3ddesign24.de&#x2F;produkt&#x2F;3d-druck-service&#x2F;&quot;&gt;3DDesign24&lt;&#x2F;a&gt;. This cost 40€. You can also check AliExpress or Etsy. People are selling printed cases for more popular keyboard models there.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;I don&#x27;t know the board you selected, so you might need some more parts like screws or additional electronics, etc. But what we end up with here is somewhere around 170€ to maybe 200€.&lt;&#x2F;p&gt;
&lt;p&gt;The expensive stuff here definitely are the caps and switches. Luckily, you can swap them out. If your first board just straight up sucks, you could probably build a second one for a bit under 100€ and plug the switches in there instead. On the other hand, you can always get some different switches and caps and see how those work for you.&lt;&#x2F;p&gt;
&lt;p&gt;Lastly, if you&#x27;ve selected a &lt;em&gt;really&lt;&#x2F;em&gt; popular model, you might not even need to look for all these pieces by hand. You might be able to just order a &quot;kit.&quot; Like a LEGO set, these kits contain all the parts that you&#x27;ll need to build the board. Well, all but the switches and caps in most cases. You can check Etsy or AliExpress and will probably pay something close to what you&#x27;d have paid if you&#x27;d sourced all the parts yourself.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;tools&quot;&gt;Tools&lt;&#x2F;h2&gt;
&lt;p&gt;We&#x27;re not ready to start building just yet. We will also need some tools to solder and assemble the board. Here&#x27;s the minimum that you&#x27;ll need:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Soldering Iron&lt;&#x2F;em&gt;: No need to get one of those bigger &quot;stations,&quot; a simple 15€ piece will work. A dial to adjust power (or temperature) is enough.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;em&gt;Tin&lt;&#x2F;em&gt;: The stuff you&#x27;ll solder with. I don&#x27;t know anything about these, but I wouldn&#x27;t cheap out on this: We want this to last.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;em&gt;Soldering Iron Cleaner&lt;&#x2F;em&gt;: Anything (meant for cleaning the tip) will work. I&#x27;ve got sponges.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;em&gt;Tweezers&lt;&#x2F;em&gt;: You&#x27;ll need a pointy tip and a bend to properly hold the electronics in place. If you are buying these anyway, consider getting reverse-action ones. These are closed by default and require pressure to open. I had regular ones, and reverse action would&#x27;ve made a couple of solders a bit easier.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;em&gt;Flux&lt;&#x2F;em&gt;: Get some.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;em&gt;Desoldering Pump or Wick&lt;&#x2F;em&gt;: You&#x27;ll make some mistakes and you&#x27;ll need to fix them.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;em&gt;Electrical Tape&lt;&#x2F;em&gt;: You&#x27;ll be soldering battery wires, and you&#x27;ll want a quick and easy way to insulate them.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;em&gt;Wire Strippers&lt;&#x2F;em&gt;: You&#x27;ll be working a bit with wires, and you&#x27;ll need a way to strip them. Scissors or pliers will do in a pinch, but if you don&#x27;t have spare wire to fix your mistakes after, maybe just get a wire stripper.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;em&gt;Desk Lamp&lt;&#x2F;em&gt;: The diodes you&#x27;ll be soldering are tiny. You&#x27;ll need good light and maybe even a magnifying glass to align them correctly.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;em&gt;Multimeter&lt;&#x2F;em&gt;: Look, if everything goes fine, you won&#x27;t need this at all. But if you try turning the finished board on and it doesn&#x27;t start, you&#x27;ll need some way to identify the problem.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;This is the minimum you&#x27;ll need. Go borrow or buy the stuff you don&#x27;t yet own.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;preparation&quot;&gt;Preparation&lt;&#x2F;h2&gt;
&lt;p&gt;I&#x27;m no expert on soldering, plus I don&#x27;t even know the board you are trying to build. So I won&#x27;t tell you how to solder or the specific steps you need to follow. But while you wait for all the parts and tools to arrive, you could already watch a couple of videos on &quot;soldering basics&quot; and &quot;soldering tips.&quot;&lt;&#x2F;p&gt;
&lt;p&gt;Next, since the process for all boards is quite similar, you should read a detailed build guide like &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;docs.splitkb.com&#x2F;product-guides&#x2F;aurora-series&#x2F;build-guide&quot;&gt;SplitKB&#x27;s on the Aurora Series&lt;&#x2F;a&gt;. That way, you&#x27;ll have a decent idea of what to do even if the instructions for your particular board aren&#x27;t as detailed.&lt;&#x2F;p&gt;
&lt;p&gt;If the parts still haven&#x27;t already arrived yet, you can get a head start on the firmware by reading &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;zmk.dev&#x2F;docs&#x2F;keymaps&quot;&gt;its documentation&lt;&#x2F;a&gt;. The idea is not to understand everything and remember all the parameters, but to get an idea of what kinds of settings are available and what kinds of features are possible.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;interlude-my-experience&quot;&gt;Interlude: My Experience&lt;&#x2F;h2&gt;
&lt;p&gt;If you don&#x27;t care about my personal journey, skip to the &lt;a href=&quot;https:&#x2F;&#x2F;blog.optional.page&#x2F;misc&#x2F;better-keyboard&#x2F;#firmware&quot;&gt;next section&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;I became interested in split keyboards through a friend who was kind enough to relay most of what I&#x27;ve repeated here for your benefit. Furthermore, he also lent me a Corne board to try out for a while. It wasn&#x27;t the perfect board for me, but I liked it well enough. I flashed the popular &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;manna-harbour&#x2F;miryoku_zmk&quot;&gt;Miryoku Layout&lt;&#x2F;a&gt; and got used to that while looking for what I&#x27;d build myself.&lt;&#x2F;p&gt;
&lt;p&gt;Three things led to the decision: First, I was still overwhelmed with all the parts I&#x27;d need to order, so I thought it&#x27;d be good to choose something popular enough to be sold as a kit. Second, I thought that my first build would suck anyway, so it wouldn&#x27;t matter too much what I chose. Lastly, I already had some experience with a board that fit these criteria—so I ended up ordering a Corne kit.&lt;&#x2F;p&gt;
&lt;p&gt;The build was actually quite easy, and everything worked out well, though I&#x27;m &lt;em&gt;still&lt;&#x2F;em&gt; waiting for the batteries to arrive for that one.&lt;&#x2F;p&gt;
&lt;p&gt;Shortly after I had ordered the Corne I stumbled onto the &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;ctranstrum&#x2F;lintilla&#x2F;?tab=readme-ov-file&quot;&gt;Lintilla&lt;&#x2F;a&gt;. All the design decisions were speaking to me: I thought the Corne column stagger was not aggressive enough. Miryoku does not use the outer three keys on 42-key boards, and Lintilla&#x27;s arrangement of them seemed more sensible with one of these three raised outside the main cluster. Lastly, the Corne thumb keys are really tugged in. I did see potential for moving them out.&lt;&#x2F;p&gt;
&lt;p&gt;So, just a few days after I&#x27;d soldered my own Corne, I had already put in the order for all the parts for the Lintilla. The soldering for that similarly went well. I had a near miss when I accidentally cut one of the battery wires while trying to strip it. Luckily, it was still &lt;em&gt;just&lt;&#x2F;em&gt; long enough to work. Once done and assembled, though, I found out that something had gone wrong with the right half and the battery power was not working. So I pulled off all the key caps and switches to remove the top plate, only to find that the soldering all sits on the bottom, which I could&#x27;ve accessed by removing just a few screws.&lt;&#x2F;p&gt;
&lt;p&gt;Finally, I was looking at my soldering job. But what now? If it wasn&#x27;t clear until now: I&#x27;m not great with electronics. I don&#x27;t really get how they work. So for a second, I was pretty devastated. I did a quick web search for how to check a battery circuit with a multimeter, but that didn&#x27;t provide the quick and easy answer I was looking for. But then I realized: 1) The internet is actually filled with know-how on these kinds of electronics and 2) I&#x27;m only looking for a way to analyse the problem and will probably be able to follow and verify someone else&#x27;s explanation.&lt;&#x2F;p&gt;
&lt;p&gt;These two facts combined marked it as the perfect use case for an LLM. I spun up &lt;a href=&quot;https:&#x2F;&#x2F;blog.optional.page&#x2F;misc&#x2F;kagi&#x2F;&quot;&gt;kagi&lt;&#x2F;a&gt; assistant and described my circuit. It was able to describe to me exactly what setting I needed to dial my multimeter to and where to place its little… antennas—I did say I&#x27;m bad with electronics, didn&#x27;t I?—and it told me what readings to expect where. I did the measurements and reported back. It told me the on-&#x2F;off-switch was probably broken, so I switched it out. And that was it, actually.&lt;&#x2F;p&gt;
&lt;a href=&quot;https:&#x2F;&#x2F;blog.optional.page&#x2F;posts&#x2F;img&#x2F;keyboard_Lintilla.jpeg&quot; target=&quot;_blank&quot;&gt;
    &lt;picture&gt;
        &lt;source srcset=&quot;https:&amp;#x2F;&amp;#x2F;blog.optional.page&amp;#x2F;processed_images&amp;#x2F;keyboard_Lintilla.443178dc586216a3.webp&quot; type=&quot;image&#x2F;webp&quot;&gt;
        &lt;img src=&quot;https:&#x2F;&#x2F;blog.optional.page&#x2F;posts&#x2F;img&#x2F;keyboard_Lintilla.jpeg&quot; alt=&quot;Low-profile keyboard with white casing and mostly black keycaps. The top outer corners have keys that sit a bit apart from the rest of the keys. They are white, and the one on the right half has Bongo Cat printed on it. The home keys of the pinkies have a nub on them. The home keys of the thumbs are white. To better display it, the left half is slightly raised using a magnetic phone holder.&quot;&gt;
    &lt;&#x2F;picture&gt;
&lt;&#x2F;a&gt;
&lt;p&gt;So now I&#x27;ve been using my Lintilla for about a week. And it&#x27;s… pretty darn good. The angles aren&#x27;t all perfect, and the thumb keys are just a bit too far out, but overall it&#x27;s much nicer than the Corne. I think I&#x27;ll need a bit of a break now, not just from building, but also to better identify what I do and don&#x27;t like about it. But I am almost certain that I&#x27;ll tweak the design and build a v2 that&#x27;s closer to my own hand anatomy.&lt;&#x2F;p&gt;
&lt;p&gt;That&#x27;s that. Let&#x27;s close this post out with some general advice on the firmware.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;firmware&quot;&gt;Firmware&lt;&#x2F;h2&gt;
&lt;p&gt;So you&#x27;ve built and assembled your board. Now it&#x27;s time to throw ZMK on there. Again, other people have already done a good job explaining this step, and you&#x27;ll hopefully have some guidance from the creator of your particular board as well.&lt;&#x2F;p&gt;
&lt;p&gt;But what layout will you throw on there? First, you are now stuck with fewer keys, so you won&#x27;t be able to reproduce a full layout like you&#x27;re used to. Nor should you want to. I&#x27;d recommend starting with the &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;manna-harbour&#x2F;miryoku_zmk&quot;&gt;Miryoku Layout&lt;&#x2F;a&gt;. It&#x27;s a decent layout, provides access to all keys you&#x27;d reasonably need, uses a diverse set of features, and is already available for a wide range of boards.&lt;&#x2F;p&gt;
&lt;p&gt;Miryoku is configurable and comes with many configurations for the alpha keys, but its default is Colemak-DH. I&#x27;d actually recommend trying that out.&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-4-1&quot;&gt;&lt;a href=&quot;#fn-4&quot;&gt;4&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt; It will be some mental effort anyway to learn to use this new physical layout, plus the different layers, so why not do it all in one go? If you keep your old keyboard available at the same time, you can still switch back to that and its qwerty layout when you become fatigued or need to be quick with something. In a few weeks, you should be quite comfortable with the new layout, and after a few months, you should be up to a good speed.&lt;&#x2F;p&gt;
&lt;p&gt;Even though Miryoku comes in its own fancy repository which allows for easy switching between its settings, I&#x27;d recommend for you to also rebuild your version in a clean zmk-config repo using &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;nickcoutsos.github.io&#x2F;keymap-editor&#x2F;&quot;&gt;Nick&#x27;s Keymap Editor&lt;&#x2F;a&gt;. This is a really approachable way to start editing and customizing the config yourself and will allow you to go beyond what Miryoku provides.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;&#x2F;h2&gt;
&lt;p&gt;Building your own keyboard might seem intimidating and difficult. Design, electronics soldering, and firmware flashing all intersect. Some components like key switches and caps are a science unto themselves. And even though it&#x27;s a niche hobby, there are loads of custom designs, which might be overwhelming.&lt;&#x2F;p&gt;
&lt;p&gt;I hope that I could provide you a good overview and starting point to take you a step closer to your own better keyboard. If this post actually has some part in you building a keyboard, please let me know! You can find ways to contact me at the bottom of this page. I&#x27;d love to see some pictures of your board!&lt;&#x2F;p&gt;
&lt;section class=&quot;footnotes&quot;&gt;
&lt;ol class=&quot;footnotes-list&quot;&gt;
&lt;li id=&quot;fn-1&quot;&gt;
&lt;p&gt;Well, they&#x27;re mostly open hardware, so it&#x27;s actually not stealing. &lt;a href=&quot;#fr-1-1&quot;&gt;↩&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li id=&quot;fn-2&quot;&gt;
&lt;p&gt;Of course, you will be able to use the full keyboard even if you only plug in one half. Between themselves, the halves will still use Bluetooth. &lt;a href=&quot;#fr-2-1&quot;&gt;↩&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li id=&quot;fn-3&quot;&gt;
&lt;p&gt;You&#x27;ll need two PCBs, one for each half. But JLC forces you to buy at least 5 of each board that you print. So if the design allows you to use the same print on its backside, then you&#x27;ll only need these 5 boards. If the left and right boards are different files, you&#x27;ll need to order 10 boards total: 5 of the left variant and 5 of the right variant. &lt;a href=&quot;#fr-3-1&quot;&gt;↩&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li id=&quot;fn-4&quot;&gt;
&lt;p&gt;Try it if you aren&#x27;t already on some other optimized layout like Workman or Newman. &lt;a href=&quot;#fr-4-1&quot;&gt;↩&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;&#x2F;section&gt;
</content>
    </entry><entry xml:lang="en">
        <title>Keyboards Are Terrible</title>
        <published>2025-03-23T00:00:00+00:00</published>
        <updated>2025-03-23T00:00:00+00:00</updated>
        <author><name>Optional</name></author>
        <link rel="alternate" type="text/html" href="https://blog.optional.page/misc/qwerty/"/>
        <id>https://blog.optional.page/misc/qwerty/</id>
        <content type="html" xml:base="https://blog.optional.page/misc/qwerty/">
        &lt;p&gt;A standard ANSI or ISO qwerty keyboard is a terrible design from beginning to end. Place your hands on your knees, relax your wrists, and follow me, as we explore the individual problems in hardware, software, and layout, and look at alternatives to them all.&lt;&#x2F;p&gt;
&lt;span id=&quot;continue-reading&quot;&gt;&lt;&#x2F;span&gt;
&lt;p&gt;You might have already heard of alternative layouts to the qwerty arrangement, so let&#x27;s actually start instead with talking about hardware.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;hardware&quot;&gt;Hardware&lt;&#x2F;h2&gt;
&lt;p&gt;Did you ever wonder about the benefit of the diagonal alignment of keys? Why &lt;kbd&gt;W&lt;&#x2F;kbd&gt; sits atop &lt;kbd&gt;S&lt;&#x2F;kbd&gt;, but also slightly edges over to the &lt;kbd&gt;A&lt;&#x2F;kbd&gt;? Well, that&#x27;s called row stagger and it&#x27;s not for any ergonomic reasons. If it were it would&#x27;ve made sense to mirror the stagger for the other hand. The real reason is the hardware limitations of typewriters. Those needed their type bars not to overlap. The hardware fix is to remove this row stagger, resulting in an &quot;ortholinear&quot; or &quot;matrix layout&quot; (which looks like a chessboard).&lt;&#x2F;p&gt;
&lt;p&gt;Instead of row stagger, we can add column stagger (referred to as a &quot;columnar layout&quot;). We can move the columns for our middle fingers up a bit and the pinkie columns down. This fits their different lengths much better and allows them to rest easier.&lt;&#x2F;p&gt;
&lt;p&gt;Imagining our keyboard now, you might be thinking that it&#x27;s a disaster for the wrists. Without row stagger we want to come in at a straight angle, but with the keyboard placed right in front we have to bend our arms and—crucially—our wrists at unnatural angles. But there&#x27;s nothing forcing us to place all the keys right at the center. A &quot;split keyboard&quot; can either mean that the middle of it is just an empty piece of plastic, or that it&#x27;s literally split into two halves. We can place these comfortably right where our hands naturally want to sit.&lt;&#x2F;p&gt;
&lt;p&gt;To make this even more comfortable on the wrists, we can &quot;tent&quot; the halves. This means that we&#x27;re raising them up at an angle—like a tent. The inner sides (where the index fingers are) are raised to a level that&#x27;s comfortable. Some people even go up to 90°, but most people are happy somewhere between 10° and 50°.&lt;&#x2F;p&gt;
&lt;p&gt;Next, let us consider our thumbs. They&#x27;re our strongest fingers. On a traditional layout they also get the most important key, the &lt;kbd&gt;Space Bar&lt;&#x2F;kbd&gt;. But it&#x27;s pretty sad that both thumbs have to share one key, when the index fingers are responsible for six letter keys (and two number keys) each! Placing a couple extra keys for the thumbs is called a &quot;thumb cluster&quot; and utilizes our strongest fingers appropriately.&lt;&#x2F;p&gt;
&lt;p&gt;Finally, we can add some diagonal rotation to the columns to fit better with the direction that our fingers naturally curl. That&#x27;s kind of like what the staggered rows sometimes unintentionally did for one of the hands, but this time it&#x27;s intentional. This is called &quot;splay.&quot;&lt;&#x2F;p&gt;
&lt;p&gt;Whew, our keyboard looks quite different now. More like a snow angel, but instead of an angel it&#x27;s our hands, and instead of snow it&#x27;s a keyboard. Maybe it&#x27;s not really like a snow angel after all…&lt;&#x2F;p&gt;
&lt;h2 id=&quot;layout&quot;&gt;Layout&lt;&#x2F;h2&gt;
&lt;p&gt;After taking a look at the physical shape of the keyboard, let&#x27;s look at its spiritual shape: its layout.&lt;&#x2F;p&gt;
&lt;p&gt;There exists lots of controversy and mystery around the origin of the qwerty layout. Last I heard, the idea that it should slow down typing on typewriters has been called into question. Luckily, we don&#x27;t need to know how qwerty originated to know that it is deeply flawed.&lt;&#x2F;p&gt;
&lt;p&gt;Qwerty has lots of common same-finger bigrams (two consecutive letters typed with the same finger). It&#x27;s also prone to scissoring (requiring two fingers next to each other to move apart vertically, by requiring a letter from the top row followed by one from the bottom row). The letters on the home row (which don&#x27;t require moving fingers) aren&#x27;t all that common.&lt;&#x2F;p&gt;
&lt;p&gt;Actually, there&#x27;s an awesome document online, explaining how these stats are measured and how they can be compared across different layouts. It also has such comparisons for quite a number of layouts. You can find the document &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;docs.google.com&#x2F;document&#x2F;d&#x2F;1W0jhfqJI2ueJ2FNseR4YAFpNfsUM-_FlREHbpNGmC2o&quot;&gt;here&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Layouts always have to choose what stats to optimize for, and some of the stats just come down to personal preference. My personal recommendation would be the &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;colemak.com&#x2F;&quot;&gt;Colemak layout&lt;&#x2F;a&gt;. It&#x27;s not too far from qwerty, it&#x27;s got very decent stats, and it&#x27;s got excellent multi-language support, if you need an Umlaut (like &lt;kbd&gt;Ä&lt;&#x2F;kbd&gt;) or similar.&lt;&#x2F;p&gt;
&lt;p&gt;Colemak also comes with an interesting modification, which I&#x27;ll talk about in our last section, &quot;Software.&quot;&lt;&#x2F;p&gt;
&lt;h2 id=&quot;software&quot;&gt;Software&lt;&#x2F;h2&gt;
&lt;p&gt;The process of &quot;rebinding&quot; allows you to change the function of keys. This means you can place often-used functions to keys that are closer physically. On a standard keyboard, for example, the &lt;kbd&gt;CAPS LOCK&lt;&#x2F;kbd&gt; key is quite reachable by the left pinkie, but probably doesn&#x27;t see much use. Meanwhile, the &lt;kbd&gt;Backspace&lt;&#x2F;kbd&gt; key is far away and seeing a lot of use now that you&#x27;re trying out a new layout. If only—Colemak &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;forum.colemak.com&#x2F;topic&#x2F;1621-colemak-for-windows-with-capslock-to-backspace&#x2F;&quot;&gt;has a version&lt;&#x2F;a&gt; that swaps the functionality of these two keys.&lt;&#x2F;p&gt;
&lt;p&gt;Upper case letters are called that, because early printers (the occupation, not the machine) had the iron blocks with these capital letters in a literal case that was placed above the lower case containing the non-capital letters. Thanks to &lt;em&gt;layers&lt;&#x2F;em&gt; we don&#x27;t need to have different keys for lower and upper case letters. We hold down the &lt;kbd&gt;Shift&lt;&#x2F;kbd&gt; key and all the letters get swapped out as if by magic. We might think about placing layer swap functionality onto our new thumb clusters. We could have a layer that moves all the numbers right onto our home row, eliminating the need to travel up two rows.&lt;&#x2F;p&gt;
&lt;p&gt;Furthermore, there are some keys that only really make sense as being held down (e.g. &lt;kbd&gt;Alt&lt;&#x2F;kbd&gt;, &lt;kbd&gt;Ctrl&lt;&#x2F;kbd&gt;, &lt;kbd&gt;Shift&lt;&#x2F;kbd&gt;), while most others only make sense as quick taps. A popular modification taking advantage of this fact is called &quot;home row mods.&quot; It places the aforementioned held-down-keys, or simply &quot;modifier keys&quot; as hold functionality onto the home row. A quick tap on the &lt;kbd&gt;J&lt;&#x2F;kbd&gt; key (assuming qwerty layout) still results in a &lt;samp&gt;J&lt;&#x2F;samp&gt;, but holding it down activates &lt;kbd&gt;Shift&lt;&#x2F;kbd&gt;. The capital letter is then meant to be pressed on the left side of the keyboard. To type a capital letter on the right-hand side, the home row mods are mirrored. Holding the &lt;kbd&gt;F&lt;&#x2F;kbd&gt; key with the left index finger allows typing capital letters with the right hand.&lt;&#x2F;p&gt;
&lt;p&gt;Both of these strategies combine to move functionality from faraway keys directly beneath your fingertips. This results in a bit more mental load, especially in the beginning, but it can greatly reduce the strain on your fingers. You might end up only needing &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;youtu.be&#x2F;8wZ8FRwOzhU&quot;&gt;34 keys&lt;&#x2F;a&gt;!&lt;&#x2F;p&gt;
&lt;p&gt;But how do you actually do this? Well, there&#x27;s firmware for custom keyboards that allows you to flash all this functionality onto your keyboard. For wired keyboards that&#x27;s &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;qmk.fm&#x2F;&quot;&gt;QMK&lt;&#x2F;a&gt;, and for wireless it&#x27;s &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;zmk.dev&#x2F;&quot;&gt;ZMK&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;If you don&#x27;t have a custom keyboard, all&#x27;s not lost. The tool &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;jtroo&#x2F;kanata&quot;&gt;kanata&lt;&#x2F;a&gt; allows most of the same functionality as the firmwares and it can rebind any keyboard as long as kanata is running on the same machine the keyboard is being used on. Even the built-in laptop ones.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;&#x2F;h2&gt;
&lt;p&gt;A standard qwerty keyboard does everything wrong a keyboard can do wrong. Different hardware can fit our natural hand shapes better, while different layout and key behaviours can move frequent functionality to the keys our fingers are closest to.&lt;&#x2F;p&gt;
&lt;p&gt;Following up on the strategies laid out in this post will not only result in a more comfortable typing experience, but also a more compact keyboard which might even afford more desk space.&lt;&#x2F;p&gt;
&lt;p&gt;But how do you build a keyboard yourself? Read my &lt;a href=&quot;https:&#x2F;&#x2F;blog.optional.page&#x2F;misc&#x2F;better-keyboard&#x2F;&quot;&gt;follow-up on building a better keyboard&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
</content>
    </entry><entry xml:lang="en">
        <title>You Need An Email Aliasing Service</title>
        <published>2025-03-15T00:00:00+00:00</published>
        <updated>2025-03-15T00:00:00+00:00</updated>
        <author><name>Optional</name></author>
        <link rel="alternate" type="text/html" href="https://blog.optional.page/misc/email-alias/"/>
        <id>https://blog.optional.page/misc/email-alias/</id>
        <content type="html" xml:base="https://blog.optional.page/misc/email-alias/">
        &lt;p&gt;I&#x27;ve been using &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;simplelogin.io&#x2F;&quot;&gt;SimpleLogin&lt;&#x2F;a&gt; for two years now, but there&#x27;s also &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;addy.io&quot;&gt;addy.io&lt;&#x2F;a&gt;. You probably don&#x27;t know what email aliasing is, because otherwise you&#x27;d already be using it. So let me explain.&lt;&#x2F;p&gt;
&lt;span id=&quot;continue-reading&quot;&gt;&lt;&#x2F;span&gt;
&lt;p&gt;An email aliasing service is kind of like a PO box, in that it sits between you and the people or companies that you communicate with. Instead of giving out your real address, you give out the alias. The stranger sends an email and it arrives with the aliasing service. Unlike a PO box, you don&#x27;t have to manually pick up your mail, but instead get it delivered to your real email address.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;multiple-aliases&quot;&gt;Multiple Aliases&lt;&#x2F;h2&gt;
&lt;p&gt;Okay, right now it just sounds like an extra unnecessary step in the middle, right? Well, here comes the kicker: The aliasing service allows you to quickly and easily create new aliases.&lt;&#x2F;p&gt;
&lt;p&gt;Let&#x27;s say your real email is real@example.com. You want to sign up with some online service and do so by generating the alias service1@alias.com. Then you sign up with a different service and generate the alias service2@alias.com to use there. When company one sends you email to service1@alias.com it is being forwarded into your inbox at real@example.com. And company two sends mails to service2@alias.com, which end up in the same spot.&lt;&#x2F;p&gt;
&lt;p&gt;The immediate win here is some anonymity. Most people have some identifying information in their email address, like their name. The aliases contain no information about you, except that you are using an aliasing service. Additionally, these two companies won&#x27;t be able to figure out that these different emails refer to the same person.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;retiring-aliases&quot;&gt;Retiring Aliases&lt;&#x2F;h2&gt;
&lt;p&gt;That&#x27;s a small gain already, but there&#x27;s more. The aliasing service also allows you to easily switch off an alias temporarily, or delete it permanently. Maybe you decide to cancel your account with company one. After doing so, you can also delete the service1@alias.com alias and won&#x27;t receive any annoying &quot;We&#x27;re sad to see you go&quot; emails.&lt;&#x2F;p&gt;
&lt;p&gt;Maybe company two gets hacked and all users&#x27; email addresses are leaked. When you start receiving spam on service2@alias.com you can simply change your email with that service to a new alias and switch off the old one.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;transparent-sources&quot;&gt;Transparent Sources&lt;&#x2F;h2&gt;
&lt;p&gt;Another benefit is even less obvious at first glance. The emails you receive in your inbox (real@example.com) will show the alias they were addressed to. This means it becomes much easier to spot phishing.&lt;&#x2F;p&gt;
&lt;p&gt;You might get an email that claims to be from your bank. But then you see that it was sent to service2@alias.com, rather than bank@alias.com. It&#x27;s pretty obvious that somebody found that first alias and is trying to phish you.&lt;&#x2F;p&gt;
&lt;p&gt;I get a decent amount of spam and scams sent to the email I publish at the bottom of every post here, &lt;a href=&quot;mailto:blog@optional.page&quot;&gt;blog@optional.page&lt;&#x2F;a&gt;. But I can safely ignore anything that claims to be a company or service I should be paying for.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;some-thorns&quot;&gt;Some Thorns&lt;&#x2F;h2&gt;
&lt;p&gt;Email Aliasing is not all roses, though. First, it requires you to pay a bit more attention when &lt;em&gt;sending&lt;&#x2F;em&gt; emails. You can&#x27;t just send an email to someone@example.com. This would skip the aliasing service and expose your real email address (which we don&#x27;t want!).&lt;&#x2F;p&gt;
&lt;p&gt;Instead, you want to send your email to the reverse alias with your aliasing service. Basically something like outgoing_someone_at_example_com@alias.com. This will arrive at the server of your aliasing service which will then forward it to your actual receiver using the correct alias as the sender.&lt;&#x2F;p&gt;
&lt;p&gt;Sending an email to a fresh receiver is annoying, because you have to go to your aliasing service and tell them to create this reverse alias, and then use what they generate. Replying, on the other hand, is a bit simpler. The aliasing service is already rewriting the sender and receiver fields in such a way that simply hitting &lt;kbd&gt;Reply&lt;&#x2F;kbd&gt; works.&lt;&#x2F;p&gt;
&lt;p&gt;But there&#x27;s a different thing that could trip you up with replies. Typically, a reply quotes the previous emails. In that quote, your email tool could be exposing your reverse alias by including it like so:
&lt;samp&gt;&amp;gt; on [date] outgoing_someone_at_example_com@alias.com wrote: …&lt;&#x2F;samp&gt;&lt;&#x2F;p&gt;
&lt;p&gt;All email services should have an option to customize or remove this text, though.&lt;&#x2F;p&gt;
&lt;p&gt;Another tiny complaint is that the aliases don&#x27;t look pretty. Because all users of an aliasing service sit on the same domain,&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-1-1&quot;&gt;&lt;a href=&quot;#fn-1&quot;&gt;1&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt; they all include some random letters or words, e.g. [custom_text].r0gq5@simplelogin.com. That&#x27;s no problem for use online, but when you have to give these aliases out on the phone or in person, it can be a bit annoying.&lt;&#x2F;p&gt;
&lt;p&gt;Lastly, you won&#x27;t be able to use these aliases everywhere. Mind you, this is not a problem with the aliasing services themselves. It&#x27;s just that some companies won&#x27;t accept emails from aliasing sites.&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-2-1&quot;&gt;&lt;a href=&quot;#fn-2&quot;&gt;2&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt; That&#x27;s mostly because they confuse them with ephemeral &quot;trash mails&quot; that are meant to be used once just to get over the email requirement. As we&#x27;ve seen, this is actually not really what an alias is for. But tell that to some company that wants to make money by selling off your email address!&lt;&#x2F;p&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;&#x2F;h2&gt;
&lt;p&gt;An email aliasing service like &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;simplelogin.io&#x2F;&quot;&gt;SimpleLogin&lt;&#x2F;a&gt; or &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;addy.io&quot;&gt;addy.io&lt;&#x2F;a&gt; will make sending emails slightly more annoying. But their apps and browser extensions do a good job of mitigating this, and especially help out when you need to enter an email address online. You gain a decent boost in privacy and security, and a huge amount of control over how different companies, services, and people are able to contact you.&lt;&#x2F;p&gt;
&lt;section class=&quot;footnotes&quot;&gt;
&lt;ol class=&quot;footnotes-list&quot;&gt;
&lt;li id=&quot;fn-1&quot;&gt;
&lt;p&gt;Actually not just one. SimpleLogin offers nine different ones. &lt;a href=&quot;#fr-1-1&quot;&gt;↩&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li id=&quot;fn-2&quot;&gt;
&lt;p&gt;The worst offenders don&#x27;t even keep a block list of &quot;bad&quot; email providers, but rather a very tiny allow list that contains Gmail and maybe two other popular providers. Super annoying! &lt;a href=&quot;#fr-2-1&quot;&gt;↩&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;&#x2F;section&gt;
</content>
    </entry><entry xml:lang="en">
        <title>Why You Should Give Kagi A Try</title>
        <published>2025-03-04T00:00:00+00:00</published>
        <updated>2025-03-04T00:00:00+00:00</updated>
        <author><name>Optional</name></author>
        <link rel="alternate" type="text/html" href="https://blog.optional.page/misc/kagi/"/>
        <id>https://blog.optional.page/misc/kagi/</id>
        <content type="html" xml:base="https://blog.optional.page/misc/kagi/">
        &lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;kagi.com&#x2F;&quot;&gt;Kagi&lt;&#x2F;a&gt; is the hip new player entering the search engine market. I&#x27;ve been using it for a bit more than a year now. And though it&#x27;s very unlike me, I want to promote their service and get you to try them out.&lt;&#x2F;p&gt;
&lt;p&gt;I&#x27;m not being paid for this or anything, so why am I such a fan girl—for a search engine of all things!? I typically don&#x27;t gush about any TV shows or films, and especially not about (tech!) companies, but Kagi just does some things so right that I want to support them by advertising their product.&lt;&#x2F;p&gt;
&lt;span id=&quot;continue-reading&quot;&gt;&lt;&#x2F;span&gt;&lt;h2 id=&quot;wait-it-s-paid&quot;&gt;Wait, It&#x27;s Paid?&lt;&#x2F;h2&gt;
&lt;p&gt;Let&#x27;s talk about the elephant in the room. Kagi is a paid search engine. They&#x27;ll set you back about 10€ per month on the &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;kagi.com&#x2F;pricing?plan=individual&amp;amp;period=annual&quot;&gt;annual plan&lt;&#x2F;a&gt;.&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-1-1&quot;&gt;&lt;a href=&quot;#fn-1&quot;&gt;1&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt; That&#x27;s probably 10€&#x2F;month more than you are paying right now. Compared to streaming services it&#x27;s an okay price, but it&#x27;s &quot;just&quot; search. Is it really worth that? What can they offer that free search can&#x27;t?&lt;&#x2F;p&gt;
&lt;p&gt;The main selling points I&#x27;ve heard around Kagi don&#x27;t seem worth the price: privacy and an ad-free experience. Sure, if you&#x27;ve been using Google, then you might be swayed by this, but I had been using DuckDuckGo for years already. They put privacy first and my ad blocker successfully hid all the ads. And all that was free.&lt;&#x2F;p&gt;
&lt;p&gt;But the thing that convinces me to pay for Kagi is a direct result of it being a paid search engine: It is putting users first.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;user-centric-design&quot;&gt;User-Centric Design&lt;&#x2F;h2&gt;
&lt;p&gt;You&#x27;ve heard it a million times: If you don&#x27;t pay for the product, you&#x27;re the product. Sure. But when using DuckDuckGo, I did not really experience myself being productized. That&#x27;s why I thought that I would feel no difference switching to Kagi. How wrong I was!&lt;&#x2F;p&gt;
&lt;p&gt;Paying for a product means that the product is tailored to you. Kagi receives regular updates that are transparently communicated in &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;kagi.com&#x2F;changelog&quot;&gt;their changelog&lt;&#x2F;a&gt;. If the product doesn&#x27;t serve you, either because there&#x27;s a bug or because there&#x27;s a feature missing, you can open &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;kagifeedback.org&#x2F;&quot;&gt;an issue&lt;&#x2F;a&gt;. And the team will actually join the discussion, will fix bugs, and might implement your feature request.&lt;&#x2F;p&gt;
&lt;p&gt;You are a customer, and the team at Kagi is working to keep &lt;em&gt;you&lt;&#x2F;em&gt; happy.&lt;&#x2F;p&gt;
&lt;p&gt;When I signed up, their basic search was already decent, and they had some nice features which I will highlight in a moment. But since then, they&#x27;ve also added some filtering to image results that tries to remove &quot;AI&quot; generated images. They&#x27;ve improved video search on TikTok. They&#x27;ve developed &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;translate.kagi.com&#x2F;&quot;&gt;Kagi translate&lt;&#x2F;a&gt; and added a link to translate search results. They&#x27;ve introduced the option to display video titles in all lowercase rather than the often all-caps clickbait.&lt;&#x2F;p&gt;
&lt;p&gt;That&#x27;s not all they did in the year—there&#x27;s lots more—so let me highlight a couple of killer features that make using Kagi not only productive, but also a joy to use.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;the-really-good-stuff&quot;&gt;The Really Good Stuff&lt;&#x2F;h2&gt;
&lt;p&gt;As I alluded to earlier, my personal favorite features do not follow the same order as Kagi&#x27;s own marketing materials or what others write about.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;bangs-snaps&quot;&gt;Bangs &amp;amp; Snaps&lt;&#x2F;h3&gt;
&lt;p&gt;The first feature that I use multiple times a day is &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;help.kagi.com&#x2F;kagi&#x2F;features&#x2F;bangs.html&quot;&gt;bangs&lt;&#x2F;a&gt; and &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;help.kagi.com&#x2F;kagi&#x2F;features&#x2F;snaps.html&quot;&gt;snaps&lt;&#x2F;a&gt;. These can be added to any query to specify a site (or multiple sites) to search. Let&#x27;s say you&#x27;re looking for information on the film &quot;Harakiri.&quot; Instead of simply searching for &lt;kbd&gt;Harakiri&lt;&#x2F;kbd&gt;, you can include a bang in your search like this: &lt;kbd&gt;Harakiri !imdb&lt;&#x2F;kbd&gt;. This will open the IMDb search results for the query &lt;kbd&gt;Harakiri&lt;&#x2F;kbd&gt;. Obviously, it doesn&#x27;t have to be &lt;kbd&gt;!imdb&lt;&#x2F;kbd&gt;. There&#x27;s literally &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;raw.githubusercontent.com&#x2F;kagisearch&#x2F;bangs&#x2F;refs&#x2F;heads&#x2F;main&#x2F;data&#x2F;bangs.json&quot;&gt;thousands of bangs&lt;&#x2F;a&gt; for all kinds of different sites: &lt;kbd&gt;!r&lt;&#x2F;kbd&gt; for Reddit, &lt;kbd&gt;!yt&lt;&#x2F;kbd&gt; for YouTube, etc.&lt;&#x2F;p&gt;
&lt;p&gt;Searching for &lt;kbd&gt;Harakiri !wiki&lt;&#x2F;kbd&gt; (for Wikipedia) does not work as we&#x27;d like, though. It brings up Wikipedia&#x27;s &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Seppuku&quot;&gt;entry on Seppuku&lt;&#x2F;a&gt;, redirected from Harakiri. We wanted the movie, but Wikipedia&#x27;s search (unlike IMDb) will always open the top result. That&#x27;s where snaps come in. When we search for &lt;kbd&gt;Harakiri @wiki&lt;&#x2F;kbd&gt; (with an @ instead of a !), Kagi returns &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;kagi.com&#x2F;search?q=Harakiri+site%3Aen.wikipedia.org&amp;amp;r=no_region&amp;amp;sh=rNdVjuXDCb906FM5OtgQwQ&quot;&gt;this page&lt;&#x2F;a&gt;. It&#x27;s their own search, confined to the domain associated with the bang. Here we can find the film we&#x27;re looking for as the second result.&lt;&#x2F;p&gt;
&lt;p&gt;Is this impossible in other search engines? Not really. The whole idea was stolen from DuckDuckGo (&lt;kbd&gt;!ddg&lt;&#x2F;kbd&gt;), who came up with bangs. Mozilla Firefox natively allows you to add &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;brettterpstra.com&#x2F;2024&#x2F;06&#x2F;02&#x2F;adding-custom-search-shortcuts-in-firefox&#x2F;&quot;&gt;custom search shortcuts&lt;&#x2F;a&gt;. Using a redirect extension, you could parse the search URLs of any search site and redirect them to other sites. So it&#x27;s not impossible. Where Kagi has a leg up is that their bangs are already there and that you can easily add your own.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;domain-ranking&quot;&gt;Domain Ranking&lt;&#x2F;h3&gt;
&lt;p&gt;The second exciting feature is the ability to rank domains. Next to each search result is a little shield icon that brings up some information when clicked. One point in there is your personal ranking of that domain.&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-2-1&quot;&gt;&lt;a href=&quot;#fn-2&quot;&gt;2&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt; The two extreme options are to block the domain completely from showing up in results or to pin it to always show up on top. Then there&#x27;s weaker versions of both that lower or raise results from that domain in your future searches.&lt;&#x2F;p&gt;
&lt;p&gt;The &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;kagi.com&#x2F;stats?stat=leaderboard&quot;&gt;Leaderboard&lt;&#x2F;a&gt; can give you a good idea for what might be useful to pin or block. Commonly blocked sites include &quot;social media&quot; like TikTok, Facebook, or Pinterest, &quot;news&quot; sites ranging from racist (Breitbart) to plain bad (MSN), and sites infamous for terrible content like Quora, Wikihow, or w3schools. On the other hand, commonly raised or pinned sites include Wikipedia, Reddit, IMDb (or other movie sites), and lots of coding blogs and forums—this really shows us what kind of person the early adopter of Kagi is.&lt;&#x2F;p&gt;
&lt;p&gt;Personally, I&#x27;ve blocked zola.com because it kept showing up when I was searching for documentation around my blogging software &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.getzola.org&#x2F;&quot;&gt;zola&lt;&#x2F;a&gt;. I&#x27;ve pinned &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;merriam-webster.com&quot;&gt;Merriam Webster&lt;&#x2F;a&gt; because it&#x27;s my favorite dictionary. I&#x27;ve raised premium news sites that I own a subscription to, as I&#x27;d obviously want to read relevant news from them over other sites.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;lenses&quot;&gt;Lenses&lt;&#x2F;h3&gt;
&lt;p&gt;In other lists, this is often very high up. I don&#x27;t really agree, but I recently found a good use for them. But first, what is a &quot;Lens&quot;?&lt;&#x2F;p&gt;
&lt;p&gt;A lens is a list of (up to 10) websites to include in search results.&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-3-1&quot;&gt;&lt;a href=&quot;#fn-3&quot;&gt;3&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt; So you turn on the lens, type your search, and are served with results from your predefined list. Kagi&#x27;s predefined lenses are categories like &quot;Recipes,&quot; &quot;Academic,&quot; or &quot;Programming.&quot; But basic search is already so good that I did not really see the point in using lenses. Either I&#x27;ll include a keyword like &lt;kbd&gt;recipe&lt;&#x2F;kbd&gt; in the query, or, if I want to be very specific, I&#x27;ll include a bang.&lt;&#x2F;p&gt;
&lt;p&gt;But then I had an aha-moment: This feature is great for sites that don&#x27;t have their own search and are too niche to show up high in regular results. The first one for me was to create a lens called &quot;me&quot; that&#x27;s just my own websites. If I want to link someone to a post of mine, I can simply search &lt;kbd&gt;Pen and Paper !me&lt;&#x2F;kbd&gt; and find &lt;a href=&quot;https:&#x2F;&#x2F;blog.optional.page&#x2F;misc&#x2F;pnp-intro&#x2F;&quot;&gt;my&lt;&#x2F;a&gt; &lt;a href=&quot;https:&#x2F;&#x2F;blog.optional.page&#x2F;misc&#x2F;calibration-tools&#x2F;&quot;&gt;posts&lt;&#x2F;a&gt; and &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;optional.games&#x2F;lav&#x2F;?lang=en&quot;&gt;web-apps&lt;&#x2F;a&gt;. Similarly, I can create a lens for the blogs I regularly read to re-find links to their posts or discover whether they&#x27;ve previously written about a topic I&#x27;m newly interested in.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;no-ai&quot;&gt;(No) &quot;AI&quot;&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.wheresyoured.at&#x2F;wheres-the-money&#x2F;&quot;&gt;&quot;AI&quot; is a fake industry&lt;&#x2F;a&gt;. Most people don&#x27;t care for it. And while Kagi does have some &quot;AI&quot; powered functionality, it&#x27;s never forced upon you and always hidden behind at least one extra click.&lt;&#x2F;p&gt;
&lt;p&gt;If you want a shortened version&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-4-1&quot;&gt;&lt;a href=&quot;#fn-4&quot;&gt;4&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt; of a website, you click the three-dot menu next to the result and select &quot;Summarize Page&quot;. If you want an &quot;AI&quot; assisted translation of a site, that&#x27;s also a button next to the result. From other search engines, you might know the generated &quot;quick answer&quot; that sits at the top of each result page. If you want it, you can invoke it by ending your &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;kagi.com&#x2F;search?q=Do+people+like+AI+in+their+search+engine%3F&amp;amp;r=no_region&amp;amp;sh=AJvML6qpPGtytHm7drSa3w&quot;&gt;Kagi search query with a question mark&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;In my view, this is the best way to handle it. Every couple of weeks I have a sort of tip-of-the-tongue search query, where I think &quot;AI&quot; really excels, like &quot;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;kagi.com&#x2F;search?q=pc+game+rpg+with+mobile+phone+as+controller+with+information+asymmetry%3F&amp;amp;r=no_region&amp;amp;sh=K8eqNS1zaBWX7UafNhwENA&quot;&gt;pc game rpg with mobile phone as controller with information asymmetry?&lt;&#x2F;a&gt;&quot;&lt;&#x2F;p&gt;
&lt;p&gt;And all the rest of the time it&#x27;s out of sight.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;doggo&quot;&gt;Doggo&lt;&#x2F;h3&gt;
&lt;a href=&quot;https:&#x2F;&#x2F;blog.optional.page&#x2F;posts&#x2F;img&#x2F;kagi_doggo.png&quot; class=&quot;half-width&quot; target=&quot;_blank&quot;&gt;
    &lt;picture&gt;
        &lt;source srcset=&quot;https:&amp;#x2F;&amp;#x2F;blog.optional.page&amp;#x2F;processed_images&amp;#x2F;kagi_doggo.62b43357b560821a.webp&quot; type=&quot;image&#x2F;webp&quot;&gt;
        &lt;img src=&quot;https:&#x2F;&#x2F;blog.optional.page&#x2F;posts&#x2F;img&#x2F;kagi_doggo.png&quot; alt=&quot;Digital rendering of Kagi&amp;#x27;s mascot. A white dog with a round nose sitting next to a tennis ball. He looks annoyed.&quot;&gt;
    &lt;&#x2F;picture&gt;
&lt;&#x2F;a&gt;
&lt;p&gt;He&#x27;s just so cute!&lt;&#x2F;p&gt;
&lt;h3 id=&quot;search&quot;&gt;Search&lt;&#x2F;h3&gt;
&lt;p&gt;Lastly, the search itself. When I switched from DuckDuckGo, I did not immediately notice a huge difference. If you&#x27;re not used to the first results being sponsored ads, you might have a similarly underwhelming experience. It&#x27;s decent, and always getting better, but if you aren&#x27;t utilizing the features above, you&#x27;ll not be blown away and might question the 10€&#x2F;month investment.&lt;&#x2F;p&gt;
&lt;p&gt;But Kagi&#x27;s search is a very solid base that can be expanded and customized through bangs, snaps, ranking domains, custom lenses, and very selective use of &quot;AI&quot; here and there. It&#x27;s being actively developed in &lt;em&gt;your&lt;&#x2F;em&gt; interest and the changes are communicated transparently.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;&#x2F;h2&gt;
&lt;p&gt;Paying for search does not mean that you get the same experience as a free search engine, but now it also costs you money. No. Paying for search changes the whole relationship between user, provider, search, and advertisers (the latter now being completely absent). It changes whom the provider is beholden to, their priorities, and ultimately search itself.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;p&gt;Will Kagi last forever? Probably not. But right now, they are here and they are really good. Search is still &lt;em&gt;the&lt;&#x2F;em&gt; gateway to the internet, why not pay for it? And if you&#x27;re quick, you might get in in time for the &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;kagi.com&#x2F;stats&quot;&gt;50k Kagi surprise&lt;&#x2F;a&gt;. At &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;blog.kagi.com&#x2F;celebrating-20k&quot;&gt;the 20k milestone&lt;&#x2F;a&gt; every paying member got a &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;store.kagi.com&#x2F;products&#x2F;doggo-t-shirt-1&quot;&gt;T-shirt&lt;&#x2F;a&gt; for free. And I&#x27;m not kidding when I say it&#x27;s &lt;em&gt;so&lt;&#x2F;em&gt; good. It&#x27;s got the cute doggo and is easily the comfiest T-shirt I own.&lt;&#x2F;p&gt;
&lt;section class=&quot;footnotes&quot;&gt;
&lt;ol class=&quot;footnotes-list&quot;&gt;
&lt;li id=&quot;fn-1&quot;&gt;
&lt;p&gt;That&#x27;s for their &quot;Professional&quot; Tier, which includes unlimited searches. The &quot;Starter&quot; Tier has—in my opinion—not enough searches (300&#x2F;month). The &quot;Ultimate&quot; Tier grants access to the AI Assistant, which is completely unnecessary. &lt;a href=&quot;#fr-1-1&quot;&gt;↩&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li id=&quot;fn-2&quot;&gt;
&lt;p&gt;See &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;help.kagi.com&#x2F;kagi&#x2F;features&#x2F;website-info-personalized-results.html#website-info-personalized-results&quot;&gt;this page&lt;&#x2F;a&gt; if you can&#x27;t imagine what I&#x27;m trying to describe. &lt;a href=&quot;#fr-2-1&quot;&gt;↩&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li id=&quot;fn-3&quot;&gt;
&lt;p&gt;It can do &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;help.kagi.com&#x2F;kagi&#x2F;features&#x2F;lenses.html&quot;&gt;a bit more&lt;&#x2F;a&gt;, but that&#x27;s probably the most common use case. &lt;a href=&quot;#fr-3-1&quot;&gt;↩&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li id=&quot;fn-4&quot;&gt;
&lt;p&gt;Called &quot;Summary,&quot; even though that&#x27;s &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;pivot-to-ai.com&#x2F;2024&#x2F;09&#x2F;04&#x2F;dont-use-ai-to-summarize-documents-its-worse-than-humans-in-every-way&#x2F;&quot;&gt;not what an LLM does&lt;&#x2F;a&gt;. &lt;a href=&quot;#fr-4-1&quot;&gt;↩&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;&#x2F;section&gt;
</content>
    </entry><entry xml:lang="en">
        <title>That Study About AI is Making People Dumber</title>
        <published>2025-02-11T00:00:00+00:00</published>
        <updated>2025-02-11T00:00:00+00:00</updated>
        <author><name>Optional</name></author>
        <link rel="alternate" type="text/html" href="https://blog.optional.page/misc/dumb-ai/"/>
        <id>https://blog.optional.page/misc/dumb-ai/</id>
        <content type="html" xml:base="https://blog.optional.page/misc/dumb-ai/">
        &lt;figure&gt;&lt;blockquote&gt;
    &lt;p&gt;The problem with reading the study that everyone is talking about, is realizing that everybody else is an idiot.&lt;&#x2F;p&gt;

&lt;&#x2F;blockquote&gt;&lt;figcaption&gt;Sun Tzu, probably&lt;&#x2F;figcaption&gt;&lt;&#x2F;figure&gt;
&lt;span id=&quot;continue-reading&quot;&gt;&lt;&#x2F;span&gt;
&lt;p&gt;Everybody&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-1-1&quot;&gt;&lt;a href=&quot;#fn-1&quot;&gt;1&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt; has been talking about this Microsoft study titled &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.microsoft.com&#x2F;en-us&#x2F;research&#x2F;uploads&#x2F;prod&#x2F;2025&#x2F;01&#x2F;lee_2025_ai_critical_thinking_survey.pdf&quot;&gt;&quot;The Impact of Generative AI on Critical Thinking: Self-Reported Reductions in Cognitive Effort and Confidence Effects From a Survey of Knowledge Workers&quot;&lt;&#x2F;a&gt;, or &quot;AI makes you dumb&quot; for short. At least, that&#x27;s what people are taking away from it.&lt;&#x2F;p&gt;
&lt;p&gt;So does it? Does using Generative AI tools make the user dumber? Maybe. Or maybe not. The study doesn&#x27;t say. So what does it say? And is that enough for you and me to point and laugh at all the users of GenAI?&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-2-1&quot;&gt;&lt;a href=&quot;#fn-2&quot;&gt;2&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Let&#x27;s take a look.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;the-study&quot;&gt;The Study&lt;&#x2F;h2&gt;
&lt;p&gt;What did they actually do in this study? Well, they asked 319 knowledge workers&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-3-1&quot;&gt;&lt;a href=&quot;#fn-3&quot;&gt;3&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt; about their use of GenAI on the job. In total, these people described 936 cases, ranging from generating an image for a presentation, through summarizing texts, to generating &quot;recommendations for new resources and strategies to explore to hone my trading skills.&quot;&lt;&#x2F;p&gt;
&lt;p&gt;The participants self-reported data about themselves and their use of GenAI tools. The questions are provided in the appendix of the survey, so I grabbed those that were responsible for the most interesting findings:&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;To what extent do you agree with the following statements, regarding your daily work? (1: Strongly disagree; 5: Strongly agree)
&lt;ol&gt;
&lt;li&gt;I sometimes question the way others (e.g., your colleagues) do something and try to think of a better way.&lt;&#x2F;li&gt;
&lt;li&gt;I like to think over what I have been doing and consider alternative ways of doing it.&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;[Rate 1 (Strongly disagree) to 5 (Strongly agree)]
&lt;ol&gt;
&lt;li&gt;Generally, I trust GenAI.&lt;&#x2F;li&gt;
&lt;li&gt;GenAI helps me solve many problems.&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;Have you ever done any reflective&#x2F;critical thinking (e.g., reflect on your use and the outputs you got from LLM tools) when doing this task with GenAI tool?&lt;&#x2F;li&gt;
&lt;li&gt;How confident are you in your ability to do this task with-out GenAI?&lt;&#x2F;li&gt;
&lt;li&gt;How confident are you in the ability of GenAI to do this task?&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;p&gt;Questions (1) and (2) are about the user in general, while (3) to (5) are about a specific task.
The answers to these questions get turned into cold hard numbers:&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;the user&#x27;s general &lt;em&gt;tendency to reflect&lt;&#x2F;em&gt; on their work&lt;&#x2F;li&gt;
&lt;li&gt;the user&#x27;s general &lt;em&gt;trust in GenAI&lt;&#x2F;em&gt;&lt;&#x2F;li&gt;
&lt;li&gt;the user&#x27;s &lt;em&gt;perceived enaction of critical thinking&lt;&#x2F;em&gt;&lt;&#x2F;li&gt;
&lt;li&gt;the user&#x27;s &lt;em&gt;confidence in AI for the specific task&lt;&#x2F;em&gt;&lt;&#x2F;li&gt;
&lt;li&gt;the user&#x27;s &lt;em&gt;confidence in themselves for this specific task&lt;&#x2F;em&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;p&gt;In the study, they mapped the (3) &lt;em&gt;perceived enaction of critical thinking&lt;&#x2F;em&gt; against the others and looked for correlations.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;the-findings&quot;&gt;The Findings&lt;&#x2F;h2&gt;
&lt;p&gt;So what did they find? First, users that scored high on a &lt;em&gt;tendency to reflect&lt;&#x2F;em&gt;, also did a lot of &lt;em&gt;perceived critical thinking&lt;&#x2F;em&gt;. Okay. The thinkers be thinking. I guess we wouldn&#x27;t really expect anything else, but it&#x27;s good to see that people don&#x27;t lose their tendency to think (or not think) just because there&#x27;s a chatbot present.&lt;&#x2F;p&gt;
&lt;p&gt;Next, the amount that users generally &lt;em&gt;trust in GenAI&lt;&#x2F;em&gt; does not correlate with &lt;em&gt;perceived critical thinking&lt;&#x2F;em&gt; at all. That&#x27;s actually kind of interesting. Whether you&#x27;re an AI super fan or a skeptic&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-4-1&quot;&gt;&lt;a href=&quot;#fn-4&quot;&gt;4&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt; doesn&#x27;t really play a role in how much you critical thinking you do. But only kind of. That&#x27;s because of the next correlation.&lt;&#x2F;p&gt;
&lt;p&gt;A user&#x27;s &lt;em&gt;confidence in the AI for the specific task&lt;&#x2F;em&gt; is negatively correlated with the users &lt;em&gt;perceived enaction of critical thinking&lt;&#x2F;em&gt;. This means that in cases where the user was confident in the AI they did little critical thinking themselves, while in cases where they were not confident in the AI, they did more thinking.&lt;&#x2F;p&gt;
&lt;p&gt;This is the finding that everybody has been misinterpreting or misrepresenting, claiming that trusting AI or merely using it causes you to stop thinking. All that this is &lt;em&gt;actually&lt;&#x2F;em&gt; saying is that when a person approaches the AI with some task and they are confident that the AI can do the task well, then they will not doublecheck what the AI has done. It starts and ends with the specific task. The variable that could be interpreted in any way to say something about the intelligence of a user away from the specific AI task is &lt;em&gt;tendency to reflect&lt;&#x2F;em&gt;. And we already saw that &quot;the thinkers be thinking.&quot; AI didn&#x27;t stop these people from thinking.&lt;&#x2F;p&gt;
&lt;p&gt;Let&#x27;s do some thinking of our own. The study asked people to rate how confident they were in AI for a specific task. In other words: How well do you think the AI will do the job? It then asked the same people for the same task to rate their own perceived enaction of critical thinking, or did you independently verify what the AI did? And—lo and behold—when people thought the AI would do a good job, they did not expend extra effort in checking the result.&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-5-1&quot;&gt;&lt;a href=&quot;#fn-5&quot;&gt;5&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Let me spell it out more with some other examples. Let&#x27;s say a person needs to know the birthday of Ada Lovelace. That person is confident that Wikipedia will provide reliable information on the topic. They check Wikipedia and then they do nothing more. They do not consult another page or book.&lt;br &#x2F;&gt;
Or let&#x27;s take a parent who&#x27;s asking their child whether they have cleaned up all the toys. The child says yes, but the parent is not confident in the child, so they go and check for themselves.&lt;br &#x2F;&gt;
I hope that spelling it out like this reveals the banality of this finding: People will check what they aren&#x27;t confident in and won&#x27;t check what they are confident in.&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-6-1&quot;&gt;&lt;a href=&quot;#fn-6&quot;&gt;6&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Whew. Okay, let&#x27;s quickly close this out with the last correlation the study found. People&#x27;s &lt;em&gt;confidence in themselves&lt;&#x2F;em&gt; for the task is correlated with &lt;em&gt;perceived enaction of critical thinking&lt;&#x2F;em&gt;. Put differently: A person who believes they themselves could do a bang-up job at a task will think about it when they get some AI output. On the flip-side, a person who does not think that they could perform the task well, won&#x27;t even try to check the AI&#x27;s work. This is common sense. It&#x27;s not news worthy.&lt;&#x2F;p&gt;
&lt;p&gt;To wrap this section up, let&#x27;s recap the findings:&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;Thinkers be thinking. People who think about everything also think about GenAI output. Those who don&#x27;t, don&#x27;t.&lt;&#x2F;li&gt;
&lt;li&gt;General trust in AI doesn&#x27;t matter. Whether people generally have high or low trust in AI doesn&#x27;t tell us anything about how much they&#x27;ll trust AI for a specific task. I&#x27;ll come back to that in a hot sec.&lt;&#x2F;li&gt;
&lt;li&gt;People will double-check what they aren&#x27;t confident in. They won&#x27;t double-check what they are confident in.&lt;&#x2F;li&gt;
&lt;li&gt;When people don&#x27;t think they can check something they won&#x27;t. And vice versa.&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;h2 id=&quot;a-small-detour&quot;&gt;A Small Detour&lt;&#x2F;h2&gt;
&lt;p&gt;I&#x27;ve said most of what I wanted to say. But there&#x27;s one thing I&#x27;ve been ignoring. And that&#x27;s to do with how the 319 participants and their 936 cases have been selected. Participation hinged upon people &quot;using GenAI tools at work at least once per week.&quot; That means we don&#x27;t have hard core skeptics, or even soft core skeptics.&lt;&#x2F;p&gt;
&lt;p&gt;And these people are asked about their own uses of GenAI. We can imagine a person with generally low trust in AI, because they are concerned about factual accuracy. But this person might still use it for generating an image for a presentation.&lt;&#x2F;p&gt;
&lt;p&gt;Here it becomes clear why &lt;em&gt;general trust in AI&lt;&#x2F;em&gt; did not show strong correlation either way, but &lt;em&gt;confidence in the AI for the specific task&lt;&#x2F;em&gt; did. If all users had been asked to complete the same task using AI then &lt;em&gt;general trust in AI&lt;&#x2F;em&gt; would probably have shown stronger correlation.&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-7-1&quot;&gt;&lt;a href=&quot;#fn-7&quot;&gt;7&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;&lt;&#x2F;p&gt;
&lt;h2 id=&quot;wrapping-up&quot;&gt;Wrapping Up&lt;&#x2F;h2&gt;
&lt;p&gt;So why am I even writing this? It seems the paper was just a long way to say some really banal things.&lt;&#x2F;p&gt;
&lt;p&gt;Well, like I briefly got into already, people have been misrepresenting, or misinterpreting this study. Or they simply projected their own ideas onto it to dunk on GenAI users whom they perceive to be intellectually lesser. And I&#x27;m not gonna lie, I wanted that too. I&#x27;ve been fed up with people showing me the &quot;art&quot; they &quot;made,&quot; or telling me how easy it is to &quot;code&quot; an &quot;app,&quot; or telling me to &quot;look something up on chatGPT.&quot; I&#x27;d love to be able to point at a paper and say &quot;there it is: You&#x27;re dumb and I&#x27;m not!&quot;&lt;&#x2F;p&gt;
&lt;p&gt;But this is not that paper.&lt;&#x2F;p&gt;
&lt;p&gt;It does not measure how much thinking people do or do not do.&lt;br &#x2F;&gt;
It does not measure short-, medium-, nor long-term effects of using GenAI on critical thinking.&lt;br &#x2F;&gt;
It does not measure short-, medium-, nor long-term effects of anything—full stop.&lt;br &#x2F;&gt;
It does not show that thinking less about a task is &lt;em&gt;causing&lt;&#x2F;em&gt; higher confidence in AI.&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-8-1&quot;&gt;&lt;a href=&quot;#fn-8&quot;&gt;8&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;&lt;br &#x2F;&gt;
It does not show that AI is making people dumber.&lt;&#x2F;p&gt;
&lt;p&gt;They can do that all by themselves.&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;Have you ever done any reflective&#x2F;critical thinking (e.g., reflect on the headlines you got from social media) when encountering this paper?&lt;br &#x2F;&gt;
&lt;cite&gt;—Adapted from Appendix A.1: Survey Questions&lt;&#x2F;cite&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;section class=&quot;footnotes&quot;&gt;
&lt;ol class=&quot;footnotes-list&quot;&gt;
&lt;li id=&quot;fn-1&quot;&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;pivot-to-ai.com&#x2F;2025&#x2F;02&#x2F;09&#x2F;microsoft-research-use-ai-chatbots-and-turn-yourself-into-a-dumbass&#x2F;&quot;&gt;Pivot to AI&lt;&#x2F;a&gt; and &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.404media.co&#x2F;microsoft-study-finds-ai-makes-human-cognition-atrophied-and-unprepared-3&#x2F;&quot;&gt;404media&lt;&#x2F;a&gt;, that&#x27;s two places! &lt;a href=&quot;#fr-1-1&quot;&gt;↩&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li id=&quot;fn-2&quot;&gt;
&lt;p&gt;I&#x27;m using the term &quot;GenAI,&quot; because that&#x27;s the term they use in their study. It refers to text and image generation tools, such as chatGPT and DALL-E. This is not about protein folding or whatever. &lt;a href=&quot;#fr-2-1&quot;&gt;↩&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li id=&quot;fn-3&quot;&gt;
&lt;p&gt;Knowledge worker here refers to a variety of jobs such as nurses, teachers, coders, or sales people. People that could conceivably use GenAI for work-related tasks. &lt;a href=&quot;#fr-3-1&quot;&gt;↩&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li id=&quot;fn-4&quot;&gt;
&lt;p&gt;As much a skeptic as you can be and still participate. We&#x27;ll get back to that. &lt;a href=&quot;#fr-4-1&quot;&gt;↩&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li id=&quot;fn-5&quot;&gt;
&lt;p&gt;&quot;Perceived enaction of critical thinking&quot; does not only refer to &quot;checking the results,&quot; as I call it here. It could also be prompt engineering or editing and adapting AI output. &lt;a href=&quot;#fr-5-1&quot;&gt;↩&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li id=&quot;fn-6&quot;&gt;
&lt;p&gt;If you really need it, let&#x27;s do another example that&#x27;s not about &quot;checking the result.&quot; A person needs to be driven to the hospital. They enter a cab and are confident in the driver. They only provide the address and do not &quot;enact more critical thinking&quot; by describing the complete route. &lt;a href=&quot;#fr-6-1&quot;&gt;↩&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li id=&quot;fn-7&quot;&gt;
&lt;p&gt;Truth be told, there was some correlation with other variables I haven&#x27;t talked about here, but I&#x27;m not gonna get into that. &lt;a href=&quot;#fr-7-1&quot;&gt;↩&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li id=&quot;fn-8&quot;&gt;
&lt;p&gt;I&#x27;ve seen people say this. It does not make any sense to me. If anything, I&#x27;d see the causation going the other way: High confidence causing less thinking. The study itself only shows correlation. &lt;a href=&quot;#fr-8-1&quot;&gt;↩&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;&#x2F;section&gt;
</content>
    </entry><entry xml:lang="en">
        <title>Why I switched from writefreely to zola</title>
        <published>2025-01-28T12:54:00+00:00</published>
        <updated>2025-01-28T12:54:00+00:00</updated>
        <author><name>Optional</name></author>
        <link rel="alternate" type="text/html" href="https://blog.optional.page/misc/zola/"/>
        <id>https://blog.optional.page/misc/zola/</id>
        <content type="html" xml:base="https://blog.optional.page/misc/zola/">
        &lt;p&gt;If you&#x27;re reading this, my move from &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;writefreely.org&#x2F;&quot;&gt;writefreely&lt;&#x2F;a&gt;, a simple CMS, to &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.getzola.org&#x2F;&quot;&gt;zola&lt;&#x2F;a&gt;, an SSG, has worked out. But why did I move?&lt;&#x2F;p&gt;
&lt;span id=&quot;continue-reading&quot;&gt;&lt;&#x2F;span&gt;&lt;h2 id=&quot;writefreely&quot;&gt;writefreely&lt;&#x2F;h2&gt;
&lt;p&gt;Since starting the blog three years ago, I&#x27;ve had it running on writefreely. The setup was easy and what really sold me at the time was the integration with the Fediverse and the option to have multiple users contribute. I had high hopes of friends joining in and sparking interesting long form conversations online. Alas, this never materialized.&lt;&#x2F;p&gt;
&lt;p&gt;But once set up, I started posting. writefreely is very minimalistic. I liked the distraction-free backend and slick theming. But, over time, I got frustrated with the things I couldn&#x27;t do: writefreely doesn&#x27;t allow you to upload images, doesn&#x27;t let you customize the html or javascript, and has only a limited way of ordering the list of your posts.&lt;&#x2F;p&gt;
&lt;p&gt;Add to that, that it&#x27;s a CMS (content management system), which means that it&#x27;s an interactive service running on the server. It stores the posts in a database and can thus rebuild the site on the fly. This makes adding posts simple for non-coding people, but is overkill for me, when I just want to post once every couple of weeks.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;zola&quot;&gt;zola&lt;&#x2F;h2&gt;
&lt;p&gt;So I started looking around for alternatives. Because the main hassle was customizability, I started by looking at more robust CMSs. I almost went with &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;getkirby.com&#x2F;&quot;&gt;Kirby&lt;&#x2F;a&gt;. But then I asked myself what I was actually looking for. I need a site that:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;allows me to adjust HTML, css, and js&lt;&#x2F;li&gt;
&lt;li&gt;has decent blogging support (i.e. serialized posts and &lt;a href=&quot;https:&#x2F;&#x2F;blog.optional.page&#x2F;feeds&#x2F;&quot;&gt;rss feeds&lt;&#x2F;a&gt;)&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;And keeping with &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;KISS_principle&quot;&gt;KISS&lt;&#x2F;a&gt;, there shouldn&#x27;t be too many additional bells and whistles. With just the occasional post, a CMS is definitely overkill. The simpler alternative is an SSG (static site generator).&lt;&#x2F;p&gt;
&lt;p&gt;An SSG is a tool that does what it says on the tin: It takes some input and generates a static site. Typically, that means there are some markdown files that get converted to HTML according to some templates. You specify some js and css on top of that and it all gets thrown into an output directory that you point your reverse proxy at.&lt;&#x2F;p&gt;
&lt;p&gt;SSG it is, then. But why zola? Well, I&#x27;d already used it previously and found nothing wrong with it.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;what-does-it-mean-moving-forward&quot;&gt;What does it mean moving forward?&lt;&#x2F;h2&gt;
&lt;p&gt;Like you might have noticed, it means that I am free to customize the way the site looks. There&#x27;s a toggle for dark&#x2F;light mode and one to toggle between a serif and sans-serif font. What I was most excited about, was to alter the way my &lt;a href=&quot;https:&#x2F;&#x2F;blog.optional.page&#x2F;books&#x2F;&quot;&gt;book reviews&lt;&#x2F;a&gt; look. But now that it&#x27;s done, I don&#x27;t expect to do much more visual changes for the time being.&lt;&#x2F;p&gt;
&lt;p&gt;Other than this, I&#x27;m now free to place interactive elements into my posts. I don&#x27;t have any concrete plans for this, but it&#x27;s an option.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;p&gt;PS: I&#x27;m sorry if this move forced a RSS refresh that flooded you with old posts.&lt;&#x2F;p&gt;
</content>
    </entry><entry xml:lang="en">
        <title>Some Thoughts on Managing Personal Projects</title>
        <published>2024-07-13T12:38:29+00:00</published>
        <updated>2024-07-13T12:38:29+00:00</updated>
        <author><name>Optional</name></author>
        <link rel="alternate" type="text/html" href="https://blog.optional.page/misc/managing-personal-projects/"/>
        <id>https://blog.optional.page/misc/managing-personal-projects/</id>
        <content type="html" xml:base="https://blog.optional.page/misc/managing-personal-projects/">
        &lt;p&gt;A friend asked me about how I manage personal projects. Stuff like learning skills and building small apps. I don&#x27;t have all the answers. But I did start out struggling with this a lot and have since reached a point where I do have more peace of mind and am happier with how I&#x27;m managing my efforts.&lt;&#x2F;p&gt;
&lt;span id=&quot;continue-reading&quot;&gt;&lt;&#x2F;span&gt;
&lt;p&gt;To get a better picture of what kinds of project I&#x27;m talking about here, I&#x27;ll describe the life cycle of an archetypal &lt;em&gt;successful&lt;&#x2F;em&gt; project. Successful, because it actually reaches the end. A &lt;em&gt;failed&lt;&#x2F;em&gt; project may fail at any one step along the way.&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;Some form of &lt;em&gt;inspiration or motivation&lt;&#x2F;em&gt; strikes!&lt;&#x2F;li&gt;
&lt;li&gt;You gather the &lt;em&gt;prerequisites&lt;&#x2F;em&gt; for the projects. This may be tools, material and&#x2F;or resources, either for the aim of the project itself, or for the process of the project.&lt;&#x2F;li&gt;
&lt;li&gt;You formulate &lt;em&gt;a plan&lt;&#x2F;em&gt;, define &lt;em&gt;a process&lt;&#x2F;em&gt;, or just start and establish the plan and process while executing them.&lt;&#x2F;li&gt;
&lt;li&gt;You accomplish a &lt;em&gt;result&lt;&#x2F;em&gt;. This may mark the end of the project, or it is just one &lt;em&gt;milestone&lt;&#x2F;em&gt;, or one of many results that you hope to achieve as part of this project.&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;p&gt;Anything missing? Sure, some people will quote me some stuff like &quot;But projects that don&#x27;t have &lt;em&gt;goals&lt;&#x2F;em&gt; are just hobbies!&quot; and &quot;If your project doesn&#x27;t have a &lt;em&gt;deadlines&lt;&#x2F;em&gt; that means it&#x27;s okay to &lt;em&gt;never&lt;&#x2F;em&gt; do it!&quot;. But no time to think about that now! Let&#x27;s just ignore that and dive right in!&lt;&#x2F;p&gt;
&lt;h2 id=&quot;inspiration-and-motivation&quot;&gt;Inspiration And Motivation&lt;&#x2F;h2&gt;
&lt;p&gt;There&#x27;s two kinds of inspiration: You can be inspired &lt;em&gt;by&lt;&#x2F;em&gt; something or inspired &lt;em&gt;to&lt;&#x2F;em&gt; do something. I&#x27;ll just call the latter motivation and the former inspiration.
Inspiration and motivation are often the very first things that start us off on our projects. So we have to know how to effectively work with these two kinds of sparks.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;inspiration&quot;&gt;Inspiration&lt;&#x2F;h3&gt;
&lt;p&gt;Being inspired (by something) means we found something that resonates with us deeply. Maybe it is a piece of art that has made us feel a way that we want to make others feel with our own art. Maybe we encounter a problem that we feel well situated to tackle. But without also being motivated (to act) we can&#x27;t do much with this inspiration.&lt;&#x2F;p&gt;
&lt;p&gt;As such it is best to collect these sources of inspiration for when we need them. Capturing them should serve us two functions: Providing peace, and providing future inspiration.&lt;&#x2F;p&gt;
&lt;p&gt;Because stumbling upon inspiration often coincides with some burst of emotion we need to deal with this emotion. Of course, if it&#x27;s a big emotion—like us breaking down crying at the cinema—then we first finish that in a way that&#x27;s healthy to us. But the remaining little excitement that&#x27;s got us itching in our fingertips to do something should be quieted for now. Otherwise we just jump from one thing to the next.&lt;&#x2F;p&gt;
&lt;p&gt;The second goal, &quot;providing future inspiration,&quot; just means that this filing away should be done in a manner as to possibly resurface the inspiration later. At a future time—maybe one where we are motivated without inspiration, we can look at our personal little archive of inspiration and find just the thing to work on.&lt;&#x2F;p&gt;
&lt;p&gt;Okay, but &quot;HOW do you capture your inspiration?&quot; I hear you scream. Well, just do what works for you. Maybe you like a physical journal where you write with fancy and colourful gel pens. Maybe you like to dump everything into some notes app. Or you are often inspired by visuals and photograph them all so they show up in your phone&#x27;s gallery. I have some special formatting with which I place these things into my &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;obsidian.md&#x2F;&quot;&gt;Obsidian vault&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;If you already have some place where you save your favorite quotes, images and film snippets you might think that you&#x27;re done here. But I want you to take a moment and think whether this place of yours truly serves &lt;em&gt;both&lt;&#x2F;em&gt; purposes I defined above. It probably does provide peace of mind, but does it also resurface old inspiration?&lt;&#x2F;p&gt;
&lt;p&gt;Inspiration is such a quirky little thing that you don&#x27;t need an advanced database and tagging system to always be able to retrieve some exact piece from years ago. Serendipity is often enough. It can even lead to interesting crossover when two seemingly disconnected pieces collide. If you collect a lot of stuff as digital pictures, you might think about getting one of those &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.amazon.com&#x2F;Digital-Picture-Frames&#x2F;b?node=525460&quot;&gt;digital picture frames&lt;&#x2F;a&gt; and having your inspirations be shuffled on there. If you write in a journal, you could think about getting a &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.leuchtturm1917.us&#x2F;some-lines-a-day.html&quot;&gt;5 lines journal&lt;&#x2F;a&gt; where you are reminded of what you wrote exactly one, two, (..), and five years ago. Even without wanting to work on projects it is enriching to shape your environment in a way that continuously inspires you.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;motivation&quot;&gt;Motivation&lt;&#x2F;h3&gt;
&lt;p&gt;Motivation often coincides with inspiration. When inspiration makes us dream of a goal we want to achieve, we often also feel an impulse to start working on that goal. But motivation will almost certainly run out somewhere along the way. Especially if the goal is big and far away motivation can be at its cruellest: We invest a lot of energy into the foundation of this amazing big thing and after a couple of weeks when motivation runs out we realize that we haven&#x27;t achieved anything at all. This isn&#x27;t even a milestone worth preserving because in all our lifetime we will never be able to complete this project and reach the goal that so inspired and motivated us.&lt;&#x2F;p&gt;
&lt;p&gt;What are we to do then? The &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;reddit.com&#x2F;r&#x2F;GetMotivated&#x2F;&quot;&gt;r&#x2F;GetMotivated&lt;&#x2F;a&gt; subreddit has a rival subreddit called &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;reddit.com&#x2F;r&#x2F;GetDisciplined&#x2F;&quot;&gt;r&#x2F;GetDisciplined&lt;&#x2F;a&gt;. Is the answer to not count on motivation (meaning to &lt;em&gt;want&lt;&#x2F;em&gt; to put in the effort), but instead to place our bets on discipline (meaning to &lt;em&gt;force&lt;&#x2F;em&gt; ourselves to put in the effort)? Wait a minute—&quot;forcing ourselves&quot; sounds pretty bad here. I thought we wanted to have some fun working on our personal projects!&lt;&#x2F;p&gt;
&lt;p&gt;Well, you might say, maybe I just worded it badly. You might point out that we can just say that disciplining ourselves is about using some tricks of psychology to get ourselves to do what we actually already want to do. Our long-term-planning part of the brain has picked out a goal and now we have to dangle a carrot in front of our short-term-gratification part of the brain to get it to comply. And maybe also use a bit of the stick. Some delayed gratification, some pomodoros, building a couple habits, etc.&lt;&#x2F;p&gt;
&lt;p&gt;Hm, that does indeed sound a bit nicer. But to be quite honest with you, it&#x27;s not for me. Instead, I try to bring these two parts of my brain into better alignment. And I can tell you, when your short-term-gratification part of the brain simply &lt;em&gt;wants&lt;&#x2F;em&gt; to work on a project, it&#x27;s amazing. To get there we run a two-pronged attack: On one side we try to remove bad motivation and on the other we try to transform bad motivation into good motivation.&lt;&#x2F;p&gt;
&lt;p&gt;Deleting your social media should give you back &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.statista.com&#x2F;statistics&#x2F;433871&#x2F;daily-social-media-usage-worldwide&#x2F;&quot;&gt;about 2 hours per day&lt;&#x2F;a&gt; which your brain will want to use to do some stuff. Spend that time cutting your short film. Deleting Netflix from your phone could free up some time that you can spend sketching out your next airbrush piece. But I want to make one thing crystal clear:&lt;&#x2F;p&gt;
&lt;p class=&quot;highlight-block&quot;&gt;
I am &lt;em&gt;not&lt;&#x2F;em&gt; advocating to replace your favorite downtime activities with hustle. Instead, I want you to do a fun activity &lt;em&gt;you like&lt;&#x2F;em&gt; instead of a &lt;em&gt;convenient&lt;&#x2F;em&gt; activity you &lt;em&gt;don&#x27;t actually like&lt;&#x2F;em&gt;.
&lt;&#x2F;p&gt;
&lt;p&gt;If your &quot;relaxing activity&quot; after a tough day at work is 3 hours of tv, it isn&#x27;t actually a relaxing activity. It&#x27;s convenient to get into, but it is obviously not recharging you. Instead, if the work you need to recover from was predominantly mentally straining, you might try some physical activity like going for a walk, or even yoga or a workout session. Or just sitting on a bench peoplewatching. After 30 to 90 minutes of that you might be surprised how energized you find yourself again, ready to finish &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;youtu.be&#x2F;aAqQnXHd7qk&quot;&gt;constructing that crossword puzzle&lt;&#x2F;a&gt; of yours.&lt;&#x2F;p&gt;
&lt;p&gt;This all was on the topic of removing bad motivation (or, more accurately, bad habits). On the topic of turning bad motivation into good motivation I will say this: If there&#x27;s some things that you just like too much for you to quit, then turn these into productive activities. If you just can&#x27;t quit listening to podcasts then find a way to &lt;em&gt;do&lt;&#x2F;em&gt; something with that. I love movies, so I take every film as an opportunity to look for interesting plot or character ideas that I can recycle in my own storytelling.&lt;&#x2F;p&gt;
&lt;p&gt;Again, &lt;em&gt;don&#x27;t turn your fun hobbies into stressful obligations for your projects&lt;&#x2F;em&gt;. Even after adding your ulterior motive to your activity it should remain fun and enriching. If your approach to broaden the gain from your activity stresses you out, immediately drop that approach.&lt;&#x2F;p&gt;
&lt;p&gt;Okay, that&#x27;s all on the topic of motivation, I think. What&#x27;s with that look on your face? You don&#x27;t seem convinced yet. Oh, you think I haven&#x27;t given you all the tools to motivate yourself to follow through with &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=j_a0s0wowhE&amp;amp;list=PLwYL9_SRAk8EXSZPSTm9lm2kD_Z1RzUgm&quot;&gt;learning a new language&lt;&#x2F;a&gt;? All I did was say that motivation is fleeting and discipline is some productivity-cult mumbo-jumbo?&lt;&#x2F;p&gt;
&lt;p&gt;Look, I don&#x27;t have the answer on how to always make that short-term-gratification part of your brain roll over and get with it. But I have found that through connecting with that part of myself and being okay with the conflict between that part and the long-term-planning part I have become much more at peace. And in the end I still do stuff and finish projects. Without ever forcing myself, just by wanting and then doing.&lt;&#x2F;p&gt;
&lt;p&gt;That&#x27;s all, okay? I know you want more, and you want it now. Connect with that part of yourself. Explore it and make peace with it. Not by giving it what it wants, but by accepting that while it would be nice, it won&#x27;t happen. And I do promise to make a couple more references to motivation in the next sections as well, okay? Okay.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;prerequisites&quot;&gt;Prerequisites&lt;&#x2F;h2&gt;
&lt;p&gt;As explained in the introduction, I define prerequisites as the tools and materials that you (can) collect at the beginning of your project. They might be necessary for the finished project (like the bottle for your &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;youtu.be&#x2F;7Lg4tzkHgVo&quot;&gt;bottle terrarium&lt;&#x2F;a&gt;) or they just might be the explanation based on which you work on your project (like the &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;automatetheboringstuff.com&#x2F;&quot;&gt;python guide&lt;&#x2F;a&gt; helping you script a &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;botsin.space&#x2F;@thursday&quot;&gt;Mastodon bot that posts the &quot;Thursday. What a concept.&quot; still&lt;&#x2F;a&gt;).&lt;&#x2F;p&gt;
&lt;p&gt;Sometimes, coming across these resources is the first step in a project. They are the thing that first inspires you to do that project. Sometimes you come across a resource that, even though you don&#x27;t want to do that project, is &lt;em&gt;so&lt;&#x2F;em&gt; good that you have to save it somewhere. Just like with inspiration before, do it! Save it. Again, in a way that gives you peace of mind, but also in a way that will help in future.&lt;&#x2F;p&gt;
&lt;p&gt;With resources, this second requirement (resurfacing) looks a little different though. For an inspiration it&#x27;s okay to resurface somewhat randomly. A resource on the other hand needs to resurface exactly when you need it. This could mean placing these resources where you are likely to look when beginning work on a project related to them. Like placing crafting materials on your workbench. Or placing links to the software libraries you want to use for a project in that project&#x27;s readme file.&lt;&#x2F;p&gt;
&lt;p&gt;It could instead (or additionally) mean to file the resources away in such a manner that you will be able to find them again when you need them. Some people manage to place &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.amazon.com&#x2F;book-tabs&#x2F;s?k=book+tabs&quot;&gt;color-coded book tabs&lt;&#x2F;a&gt; in every book they read. Others have a bunch of binders where they collect articles on topics. Online you can, of course, bookmark things you come across. Or throw them into &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;getpocket.com&#x2F;home&quot;&gt;Pocket&lt;&#x2F;a&gt;, &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;wallabag.org&#x2F;&quot;&gt;Wallabag&lt;&#x2F;a&gt;, &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;readwise.io&#x2F;&quot;&gt;Readwise&lt;&#x2F;a&gt;, and tag them. Everyone is different and will find a different way to do it.&lt;&#x2F;p&gt;
&lt;p&gt;There are four things to watch out for here: Over-collecting (broadly and narrowly), over-organizing, and losing things.&lt;&#x2F;p&gt;
&lt;p&gt;With &quot;over-collecting broadly&quot; I&#x27;m referring to the practice of saving everything that &quot;might be useful someday.&quot; Spend some time listening inward. Yes, that&#x27;s a great guide on how to do a &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;youtu.be&#x2F;NUSfT9Qspvc&quot;&gt;hammer-on&lt;&#x2F;a&gt;, but you don&#x27;t own a guitar and never have. Do you &lt;em&gt;really&lt;&#x2F;em&gt; need to save this for a &quot;later&quot; that we both know will never come?&lt;&#x2F;p&gt;
&lt;p&gt;&quot;Over-collecting narrowly&quot; is the same thing, but this time you &lt;em&gt;do&lt;&#x2F;em&gt; own a guitar. And you already have 153 bookmarks of cool &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;chordify.net&#x2F;chords&#x2F;mike-oldfield-songs&#x2F;moonlight-shadow-5-chords&quot;&gt;sites to practice&lt;&#x2F;a&gt; and you found 14 books with guitar tabs on a flea market. And you just DuckDuckWent &quot;top 50 guides to learn the guitar&quot;. If this is all hitting close to home, let me assure you that I&#x27;m not saying this to bully you. I&#x27;ve done this myself. A lot. But at some point it&#x27;s enough. At some point you have to actually read one of those articles, you have to pick up your guitar and follow along with a tutorial. Or you have to give up the dream of playing guitar and make &quot;putting together a collection of resources on guitar playing&quot; your project.&lt;&#x2F;p&gt;
&lt;p&gt;&quot;Over-organizing&quot; and &quot;losing things&quot; are obviously two opposite ends of a spectrum. If you throw all resources you come across into &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Evernote&quot;&gt;one big heap, you will lose things&lt;&#x2F;a&gt;. If you spend time tagging everything to hell and filing it into folders and emailing them to yourself scheduled with &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;ncase.me&#x2F;remember&#x2F;&quot;&gt;spaced repetition&lt;&#x2F;a&gt; to memorize the existence of the resource, you are again becoming an archivist instead of somebody actually doing the thing.&lt;&#x2F;p&gt;
&lt;p&gt;Finding the right balance of how much to annotate the resources you find is a skill learned with practice. And part of that practice requires you to &lt;em&gt;retrieve&lt;&#x2F;em&gt; your filed-away resources, which you can only do when you have stopped over-collecting and started actually working on your projects. It&#x27;s tough the first couple of times, but it will become a virtuous cycle: The better this system works, the more fun it is to use, the better it works.&lt;&#x2F;p&gt;
&lt;p&gt;As I&#x27;ve never personally experienced &quot;under-collecting&quot; or not being able to find at least &lt;em&gt;some&lt;&#x2F;em&gt; satisfactory resources for my needs I can&#x27;t talk to that and will just move on.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;plan-and-process&quot;&gt;Plan and Process&lt;&#x2F;h2&gt;
&lt;p&gt;We have some idea of what we &lt;em&gt;want&lt;&#x2F;em&gt; to do. We have all the stuff that we need &lt;em&gt;to&lt;&#x2F;em&gt; do it. And we hopefully have some motivation to &lt;em&gt;follow through&lt;&#x2F;em&gt;. But &lt;em&gt;how&lt;&#x2F;em&gt; do we do it? That&#x27;s where our plan and process come in.&lt;&#x2F;p&gt;
&lt;p&gt;The plan is an overview of the steps that need to be taken to reach our goal. Or maybe it&#x27;s just a sketch of the goal. I&#x27;m not being too precise here.&lt;&#x2F;p&gt;
&lt;p&gt;The process, on the other hand, is the way we approach the project. It&#x27;s the way we make time for it, the way we work through our plan and the way we distribute our efforts.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;plan&quot;&gt;Plan&lt;&#x2F;h3&gt;
&lt;p&gt;What a plan should look like is really dependent on the project. More complicated or complex projects should probably have some documented plan, even just to prevent you from starting from scratch every time. Projects that will probably take a long time should also have some documentation. For example, if you were trying to watch &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Academy_Award_for_Best_Picture#Winners_and_nominees&quot;&gt;every Best Picture winning film&lt;&#x2F;a&gt; it&#x27;d probably be helpful to keep track of what you already own and what you&#x27;ve already seen to make it easier to continue after a break. On the other hand, when you&#x27;re doing a jigsaw puzzle it&#x27;s probably keeping enough track of itself.&lt;&#x2F;p&gt;
&lt;p&gt;A thing to watch out for, is to not lose yourself in the planning. Certain kinds of people (e.g. me) can easily get lost in thinking high-level and just sketching out every corner of an idea without ever &lt;em&gt;actually&lt;&#x2F;em&gt; taking a step to implement that idea. In these cases it might be helpful to remind yourself that &lt;em&gt;Design is Iteration&lt;&#x2F;em&gt; and maybe you should just build an imperfect first version. Or try to create some kind of prototype (which is just a fancy word for what I just said).&lt;&#x2F;p&gt;
&lt;p&gt;&quot;Sure!&quot;, I hear you say, &quot;But this advice can&#x27;t be applied to &lt;em&gt;my&lt;&#x2F;em&gt; particular project! I&#x27;m doing something without a tangible result, something which can&#x27;t prototyped. Something like learning a new skill.&quot; First of all, I&#x27;d ask you what exactly it is that you are planning then and why you haven&#x27;t started yet.&lt;&#x2F;p&gt;
&lt;p&gt;I &lt;em&gt;suspect&lt;&#x2F;em&gt; that the thing you are planning is the &lt;em&gt;way&lt;&#x2F;em&gt; you will go about your project. You might be scheduling practice sessions, planning out which courses to start with and what material to read when. In that case I&#x27;d advise you to &lt;em&gt;prototype your plan&lt;&#x2F;em&gt;. Try a week with your schedule and see how that fits. Read the first articles in that series and see if they are fit for your level. &lt;em&gt;Stop procrastaplanning!&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;h3 id=&quot;process&quot;&gt;Process&lt;&#x2F;h3&gt;
&lt;p&gt;Much more important than planning, in my eyes, is the process. A process can be planned and thought about, but, again, you should be enacting and living it.&lt;&#x2F;p&gt;
&lt;p&gt;What works for me is something you probably have already gathered from the section on motivation: I don&#x27;t force myself to do anything. Even though it&#x27;s common to have a regular release schedule for podcasts and blogs, I don&#x27;t adhere to one with my own writing or podcast.&lt;&#x2F;p&gt;
&lt;p&gt;Is that hurting my reach? Could I gain more readers and listeners if I had a regular schedule? Could I even turn this into a side hustle and make some money? Yeah, maybe. But this is my personal side project. Not my job. Not my hustle. This should be fun, not &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;youtu.be&#x2F;DYvhC_RdIwQ&quot;&gt;&quot;growing KPI&quot;, &quot;delivering value&quot; or &quot;satisfying stakeholders&quot;&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;I do try to make my process easy. I have templates for common tasks and have a cheat sheet for deploying new web-apps. I also don&#x27;t sweat it when I don&#x27;t finish something. Even before I started working on my &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;optional.games&#x2F;lav&quot;&gt;Lines and Veils app&lt;&#x2F;a&gt; I&#x27;ve had a feature in mind that&#x27;d be cool to have. And now, almost two years later I still haven&#x27;t added it. Does that mean I will never add it? No, actually. I often go back to some of my older stuff and just keep tinkering with it. Should I have waited with publishing the app because it&#x27;s not feature complete? That&#x27;s a &quot;no&quot; as well. I&#x27;ve been able to get great use out of what is there already. I&#x27;ve also gotten feedback from other people that enjoyed using it. And every time I use it I am reminded of the feature I&#x27;d like to add. And every time my motivation builds. All until one day, when I will finally add it. No need to rush.&lt;&#x2F;p&gt;
&lt;p&gt;Keeping work on my projects &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;my.optional.page&quot;&gt;optional&lt;&#x2F;a&gt; has greatly reduced the stress I used to feel around them. Making it super easy to dip in and out of projects at all different stages of completion means that even when I am stuck at (or just sick of) one thing I can move on to another. And that other thing is still some cool project of mine that I want to work on. And with time, that leads to results.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;result-and-milestone&quot;&gt;Result and Milestone&lt;&#x2F;h2&gt;
&lt;p&gt;Much of what could be said here, I have already mentioned in previous sections. I&#x27;ll just quickly reiterate those points, before moving on to one last new one.&lt;&#x2F;p&gt;
&lt;p&gt;Setting too big a goal will lead to quickly running out of motivation. Desired results should thus be set small. If you still want to dream big, you can instead set a small milestone goal while still telling yourself that you will one day reach that big and lofty dream goal of yours.&lt;&#x2F;p&gt;
&lt;p&gt;In general, it is helpful to have milestones or intermediate results, as this helps with motivation and planning (&quot;Design is Iteration&quot;). It also helps with process, because returning after a break is easier when you can just build on some existing result, rather than finding your way back into the middle of a mess.&lt;&#x2F;p&gt;
&lt;p&gt;Lastly, if you love working on a project, you might just set new goals and achieve results that you didn&#x27;t even set or expect at the beginning. You might start by writing a couple of short stories and find yourself with a &lt;a href=&quot;https:&#x2F;&#x2F;blog.optional.page&#x2F;creative&#x2F;2023&#x2F;&quot;&gt;whole anthology eBook&lt;&#x2F;a&gt; on your hands at the end! And then you toy with the idea of also turning that into an audiobook. And you never actually started with that, but the idea keeps returning to you and you just &lt;em&gt;know&lt;&#x2F;em&gt; that you will do that one day. And it won&#x27;t be a thing you planned, nor a thing you forced yourself to do. It will just be the thing you wanted to do so bad that you just couldn&#x27;t not do it.&lt;&#x2F;p&gt;
</content>
    </entry><entry xml:lang="en">
        <title>What&#x27;s so Great About «the forest jar»?</title>
        <published>2024-05-14T11:26:00+00:00</published>
        <updated>2024-05-14T11:26:00+00:00</updated>
        <author><name>Optional</name></author>
        <link rel="alternate" type="text/html" href="https://blog.optional.page/misc/the-forest-jar/"/>
        <id>https://blog.optional.page/misc/the-forest-jar/</id>
        <content type="html" xml:base="https://blog.optional.page/misc/the-forest-jar/">
        &lt;p&gt;This is a review in the form of fan fiction. &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=2Fb9czOxJvY&amp;amp;list=PLB32jU2MhQwWPCi53uwDZFLEC8p96fTIn&quot;&gt;Click here for context&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;p&gt;&lt;strong&gt;Witch&lt;&#x2F;strong&gt;: What do you think of my videos?&lt;br &#x2F;&gt;
&lt;strong&gt;Ouroboros&lt;&#x2F;strong&gt;: I like that on some platforms these videos automatically loop. Because of their density they are highly rewatchable.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;p&gt;&lt;strong&gt;Witch&lt;&#x2F;strong&gt;: What do you think of my videos?&lt;br &#x2F;&gt;
&lt;strong&gt;Mermaid&lt;&#x2F;strong&gt;: When I am caught in a cycle of scrolling through feeds I am delighted to find your videos in between them. On the surface they seem like any other quick and easy-to-consume content, but there&#x27;s much more going on below.&lt;&#x2F;p&gt;
&lt;span id=&quot;continue-reading&quot;&gt;&lt;&#x2F;span&gt;
&lt;p&gt;&lt;strong&gt;Witch&lt;&#x2F;strong&gt;: What do you think of my videos?&lt;br &#x2F;&gt;
&lt;strong&gt;Genie&lt;&#x2F;strong&gt;: I wish there&#x27;d be more of them.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;p&gt;&lt;strong&gt;Witch&lt;&#x2F;strong&gt;: What do you think of my videos?&lt;br &#x2F;&gt;
&lt;strong&gt;Yeti&lt;&#x2F;strong&gt;: Objectively, they aren&#x27;t pretty. The art style is reminiscent of MS Paint, the animation has few frames and some things can be interpreted as &quot;mistakes&quot;, like the mouths of Cerberus staying on screen after they have spoken for the first time in &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;youtu.be&#x2F;eo9oXdc8P7I&amp;amp;t=400&quot;&gt;this clip&lt;&#x2F;a&gt; while they got removed &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;youtu.be&#x2F;2Fb9czOxJvY&amp;amp;t=200&quot;&gt;here&lt;&#x2F;a&gt;. But it is precisely the fact that your videos exist despite all these &quot;flaws&quot; that they fascinate me. When I watch them I get drawn in, I enjoy them immensely, and I feel connected. This gives me strength to stop focussing on my own flaws and to put myself out there.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;p&gt;&lt;strong&gt;Witch&lt;&#x2F;strong&gt;: What do you think of my videos?&lt;br &#x2F;&gt;
&lt;strong&gt;Cerberus Head 1&lt;&#x2F;strong&gt;: Our attention span isn&#x27;t that great.&lt;br &#x2F;&gt;
&lt;strong&gt;Cerberus Head 2&lt;&#x2F;strong&gt;: We&#x27;re a dog after all.&lt;br &#x2F;&gt;
&lt;strong&gt;Cerberus Head 3&lt;&#x2F;strong&gt;: But watching your videos fits well into our day.&lt;br &#x2F;&gt;
&lt;strong&gt;Cerberus Head 2&lt;&#x2F;strong&gt;: They are a real treat.&lt;br &#x2F;&gt;
&lt;strong&gt;Cerberus Head 1&lt;&#x2F;strong&gt;: And they make for good thinking and discussion afterwards.&lt;br &#x2F;&gt;
&lt;strong&gt;Cerberus Head 3&lt;&#x2F;strong&gt;: Very thought provoking.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;p&gt;&lt;strong&gt;Witch&lt;&#x2F;strong&gt;: What do you think of my videos?&lt;br &#x2F;&gt;
&lt;strong&gt;Frankenstein&lt;&#x2F;strong&gt;:&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-1-1&quot;&gt;&lt;a href=&quot;#fn-1&quot;&gt;1&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt; Any creation full of life is a win in my book. I just hope that you continue to invest in it and don&#x27;t abandon it.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;p&gt;&lt;strong&gt;Witch&lt;&#x2F;strong&gt;: What do you think of my videos?&lt;br &#x2F;&gt;
&lt;strong&gt;Gargoyle&lt;&#x2F;strong&gt;: It&#x27;s the first media since that Disney show from the mid &#x27;90s that&#x27;s given us Gargoyles such positive representation.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;p&gt;&lt;strong&gt;Witch&lt;&#x2F;strong&gt;: What do you think of my videos?&lt;br &#x2F;&gt;
&lt;strong&gt;Bigfoot&lt;&#x2F;strong&gt;: When I feel lonely out here in the forest I can take out my phone and feel connected again, just by watching them. It&#x27;s not that I agree with every creature you interview, but the plurality you present is in itself testament to how unique and wonderful we all are.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;p&gt;&lt;strong&gt;Witch&lt;&#x2F;strong&gt;: What do you think of my videos?&lt;br &#x2F;&gt;
&lt;strong&gt;Nessie&lt;&#x2F;strong&gt;: It&#x27;s tough to watch them as I always have to be really careful not to drop my phone into the water.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;p&gt;&lt;strong&gt;Witch&lt;&#x2F;strong&gt;: What do you think of my videos?&lt;br &#x2F;&gt;
&lt;strong&gt;King Kong&lt;&#x2F;strong&gt;: I enjoy them. You pick relatable topics and explore them in an entertaining manner. You have improved a lot, and it&#x27;s only been a couple of months!&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;p&gt;&lt;strong&gt;Godzilla&lt;&#x2F;strong&gt;: King Kong said that? Well I guess it&#x27;s true. It feels like you have been doing this for longer. This short a time span makes it difficult to extrapolate into the future, but what is here already is great. I have high hopes.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;p&gt;&lt;strong&gt;Witch&lt;&#x2F;strong&gt;: What do you think of my videos?&lt;br &#x2F;&gt;
&lt;strong&gt;Death&lt;&#x2F;strong&gt;: Some characters or jokes in there are a bit one dimensional, don&#x27;t you think? For example, I&#x27;m always just &quot;the end&quot;.&lt;&#x2F;p&gt;
&lt;section class=&quot;footnotes&quot;&gt;
&lt;ol class=&quot;footnotes-list&quot;&gt;
&lt;li id=&quot;fn-1&quot;&gt;
&lt;p&gt;Commonly called &quot;Frankenstein&#x27;s Monster&quot;, but &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;youtu.be&#x2F;HXyq46ZqPdQ&amp;amp;t=104&quot;&gt;as he said himself&lt;&#x2F;a&gt; that&#x27;s not very nice. Maybe he could accurately be described as &quot;the creature once created by Frankenstein&quot;. &lt;a href=&quot;#fr-1-1&quot;&gt;↩&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;&#x2F;section&gt;
</content>
    </entry><entry xml:lang="en">
        <title>Installing Castopod 1.6.5 w&#x2F; MySQL and behind Caddy</title>
        <published>2023-11-10T16:53:08+00:00</published>
        <updated>2023-11-10T16:53:08+00:00</updated>
        <author><name>Optional</name></author>
        <link rel="alternate" type="text/html" href="https://blog.optional.page/misc/castopod-caddy/"/>
        <id>https://blog.optional.page/misc/castopod-caddy/</id>
        <content type="html" xml:base="https://blog.optional.page/misc/castopod-caddy/">
        &lt;p&gt;I recently set up the self-hosted podcasting solution &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;castopod.org&quot;&gt;Castopod&lt;&#x2F;a&gt;. Here&#x27;s a quick rundown. It&#x27;s closely based on &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;docs.castopod.org&#x2F;getting-started&#x2F;install.html&quot;&gt;official instructions&lt;&#x2F;a&gt; though.&lt;&#x2F;p&gt;
&lt;span id=&quot;continue-reading&quot;&gt;&lt;&#x2F;span&gt;&lt;h2 id=&quot;dependencies&quot;&gt;Dependencies&lt;&#x2F;h2&gt;
&lt;p&gt;I already had the necessary dependencies installed, but it should be these commands:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo z-code&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-comment&quot;&gt;#&lt;&#x2F;span&gt;&lt;span class=&quot;z-comment&quot;&gt; Caddy (see https:&#x2F;&#x2F;caddyserver.com&#x2F;docs&#x2F;install#debian-ubuntu-raspbian)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-entity z-name&quot;&gt;sudo&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; apt&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; install&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other&quot;&gt; -&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other&quot;&gt;y&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; debian-keyring&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; debian-archive-keyring&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; apt-transport-https&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-entity z-name&quot;&gt;curl&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other&quot;&gt; -&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other&quot;&gt;1sLf&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;https:&#x2F;&#x2F;dl.cloudsmith.io&#x2F;public&#x2F;caddy&#x2F;stable&#x2F;gpg.key&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator&quot;&gt; |&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name&quot;&gt; sudo&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; gpg&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other&quot;&gt; -&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other&quot;&gt;-dearmor&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other&quot;&gt; -&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other&quot;&gt;o&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; &#x2F;usr&#x2F;share&#x2F;keyrings&#x2F;caddy-stable-archive-keyring.gpg&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-entity z-name&quot;&gt;curl&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other&quot;&gt; -&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other&quot;&gt;1sLf&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;https:&#x2F;&#x2F;dl.cloudsmith.io&#x2F;public&#x2F;caddy&#x2F;stable&#x2F;debian.deb.txt&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator&quot;&gt; |&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name&quot;&gt; sudo&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; tee&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; &#x2F;etc&#x2F;apt&#x2F;sources.list.d&#x2F;caddy-stable.list&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-entity z-name&quot;&gt;sudo&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; apt&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; update&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-entity z-name&quot;&gt;sudo&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; apt&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; install&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; caddy&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-comment&quot;&gt;#&lt;&#x2F;span&gt;&lt;span class=&quot;z-comment&quot;&gt; MySQL (see https:&#x2F;&#x2F;www.digitalocean.com&#x2F;community&#x2F;tutorials&#x2F;how-to-install-mysql-on-ubuntu-18-04)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-entity z-name&quot;&gt;sudo&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; apt&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; install&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; mysql-server&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; mysql-client&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; php-mysql&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-entity z-name&quot;&gt;systemctl&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; start&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; mysql.service&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-entity z-name&quot;&gt;service&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; mysql-server&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; start&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-entity z-name&quot;&gt;mysql_secure_installation&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-entity z-name&quot;&gt;service&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; mysql-server&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; restart&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-entity z-name&quot;&gt;mysql&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other&quot;&gt; -&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other&quot;&gt;u&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; root&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other&quot;&gt; -&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other&quot;&gt;p&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-comment&quot;&gt;#&lt;&#x2F;span&gt;&lt;span class=&quot;z-comment&quot;&gt; PHP&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-entity z-name&quot;&gt;sudo&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; apt&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; install&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; php-fpm&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; php-curl&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; php-mbstring&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; php-xml&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; php-mysql&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Also, add a DNS entry pointing your (sub-)domain to your server IP.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;preparing-the-mysql-db&quot;&gt;Preparing the MySQL DB&lt;&#x2F;h2&gt;
&lt;p&gt;Next, we create a DB user called castopod and a database of the same name. We then grant the user full access to the database:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo z-code&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-comment&quot;&gt;#&lt;&#x2F;span&gt;&lt;span class=&quot;z-comment&quot;&gt; Login&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-entity z-name&quot;&gt;mysql&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other&quot;&gt; -&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other&quot;&gt;p&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-comment&quot;&gt;#&lt;&#x2F;span&gt;&lt;span class=&quot;z-comment&quot;&gt; Replace &amp;#39;PASSWORD&amp;#39; on the next line&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-entity z-name&quot;&gt;create&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; user&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;castopod&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;@&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;%&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; identified&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; by&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;PASSWORD&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-terminator&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-entity z-name&quot;&gt;create&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; database&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; castopod&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-terminator&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-entity z-name&quot;&gt;grant&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; all&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; privileges&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; on&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; castopod.&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-language&quot;&gt;*&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; to&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;castopod&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;@&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;%&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-terminator&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-support z-function&quot;&gt;exit&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h2 id=&quot;installing-castopod&quot;&gt;Installing Castopod&lt;&#x2F;h2&gt;
&lt;p&gt;We install Castopod to the caddy user home directory:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo z-code&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-support z-function&quot;&gt;cd&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; &#x2F;home&#x2F;caddy&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-entity z-name&quot;&gt;wget&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; https:&#x2F;&#x2F;code.castopod.org&#x2F;adaures&#x2F;castopod&#x2F;uploads&#x2F;fe7be588c53a9e1ed63af47e6e624ad1&#x2F;castopod-1.6.5.zip&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-entity z-name&quot;&gt;unzip&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; castopod-1.6.5.zip&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-comment&quot;&gt;#&lt;&#x2F;span&gt;&lt;span class=&quot;z-comment&quot;&gt; All files are now unzipped in the folder .&#x2F;castopod&#x2F;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-entity z-name&quot;&gt;chmod&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric&quot;&gt; 774&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other&quot;&gt; -&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other&quot;&gt;R&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; castopod&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-entity z-name&quot;&gt;chown&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; caddy:www-data&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other&quot;&gt; -&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other&quot;&gt;R&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; castopod&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-comment&quot;&gt;#&lt;&#x2F;span&gt;&lt;span class=&quot;z-comment&quot;&gt; We link the folder out to where caddy will look&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-entity z-name&quot;&gt;mkdir&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other&quot;&gt; -&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other&quot;&gt;p&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; &#x2F;usr&#x2F;share&#x2F;caddy&#x2F;YOUR.DOMAIN&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-entity z-name&quot;&gt;chown&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; caddy:caddy&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other&quot;&gt; -&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other&quot;&gt;R&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; &#x2F;usr&#x2F;share&#x2F;caddy&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-entity z-name&quot;&gt;ln&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other&quot;&gt; -&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other&quot;&gt;s&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; &#x2F;home&#x2F;caddy&#x2F;castopod&#x2F;public&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; &#x2F;usr&#x2F;share&#x2F;caddy&#x2F;YOUR.DOMAIN&#x2F;html&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Now we enable a cronjob that handles stuff like fediverse integration.&lt;&#x2F;p&gt;
&lt;p&gt;Run &lt;code&gt;crontab -e&lt;&#x2F;code&gt; and add the following line to the bottom of it:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo z-code&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;* * * * * &#x2F;path&#x2F;to&#x2F;php &#x2F;path&#x2F;to&#x2F;castopod&#x2F;spark tasks:run &amp;gt;&amp;gt; &#x2F;dev&#x2F;null 2&amp;gt;&amp;amp;1&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;We probably also want to be able to upload files bigger than the default 2MB, so we open up the php configuration with our favourite text editor. It&#x27;s located at &lt;code&gt;&#x2F;etc&#x2F;php&#x2F;8.1&#x2F;fpm&#x2F;php.ini&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Search for these three values and update them, e.g. to these:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo z-code&quot;&gt;&lt;code data-lang=&quot;toml&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-variable&quot;&gt;post_max_size&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator&quot;&gt; =&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric&quot;&gt; 200&lt;&#x2F;span&gt;&lt;span class=&quot;z-invalid&quot;&gt;M&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-variable&quot;&gt;memory_limit&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator&quot;&gt; =&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric&quot;&gt; 256&lt;&#x2F;span&gt;&lt;span class=&quot;z-invalid&quot;&gt;M&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-variable&quot;&gt;post_max_size&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator&quot;&gt; =&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric&quot;&gt; 200&lt;&#x2F;span&gt;&lt;span class=&quot;z-invalid&quot;&gt;M&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h2 id=&quot;pointing-caddy&quot;&gt;Pointing Caddy&lt;&#x2F;h2&gt;
&lt;p&gt;Update the Caddyfile (&lt;code&gt;&#x2F;etc&#x2F;caddy&#x2F;Caddyfile&lt;&#x2F;code&gt;):&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo z-code&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;YOUR.DOMAIN {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  encode zstd gzip&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  root * &#x2F;usr&#x2F;share&#x2F;caddy&#x2F;YOUR.DOMAIN&#x2F;html&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  php_fastcgi unix&#x2F;&#x2F;run&#x2F;php&#x2F;php8.1-fpm.sock&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  file_server&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h2 id=&quot;re-starting-everything&quot;&gt;(Re-)starting Everything&lt;&#x2F;h2&gt;
&lt;p&gt;Now we need to reload all our services to use the new configurations.&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo z-code&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-entity z-name&quot;&gt;systemctl&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; restart&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; php8.1-fpm.service&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-entity z-name&quot;&gt;systemctl&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; restart&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; caddy&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-comment&quot;&gt;#&lt;&#x2F;span&gt;&lt;span class=&quot;z-comment&quot;&gt; or&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-entity z-name&quot;&gt;caddy&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; reload&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other&quot;&gt; -&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other&quot;&gt;-config&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; &#x2F;etc&#x2F;caddy&#x2F;Caddyfile&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;All you need to do now is visit YOUR.DOMAIN&#x2F;cp-wizard to finish the setup wizard.&lt;&#x2F;p&gt;
&lt;p&gt;If you have any questions please refer to official documentation or Castopod support. I will not help you debug your installation.&lt;&#x2F;p&gt;
</content>
    </entry><entry xml:lang="en">
        <title>Optional&#x27;s Guide to Custom Emoji in Obsidian</title>
        <published>2023-09-25T11:44:45+00:00</published>
        <updated>2023-09-25T11:44:45+00:00</updated>
        <author><name>Optional</name></author>
        <link rel="alternate" type="text/html" href="https://blog.optional.page/misc/obsidian-emoji/"/>
        <id>https://blog.optional.page/misc/obsidian-emoji/</id>
        <content type="html" xml:base="https://blog.optional.page/misc/obsidian-emoji/">
        &lt;a href=&quot;https:&#x2F;&#x2F;blog.optional.page&#x2F;posts&#x2F;img&#x2F;Obsidian_twemoji.png&quot; target=&quot;_blank&quot;&gt;
    &lt;picture&gt;
        &lt;source srcset=&quot;https:&amp;#x2F;&amp;#x2F;blog.optional.page&amp;#x2F;processed_images&amp;#x2F;Obsidian_twemoji.a32114ae07034d6b.webp&quot; type=&quot;image&#x2F;webp&quot;&gt;
        &lt;img src=&quot;https:&#x2F;&#x2F;blog.optional.page&#x2F;posts&#x2F;img&#x2F;Obsidian_twemoji.png&quot; alt=&quot;Twemoji in Obsidian&quot;&gt;
    &lt;&#x2F;picture&gt;
&lt;&#x2F;a&gt;
&lt;p&gt;I&#x27;ve spent literal &lt;strong&gt;YEARS&lt;&#x2F;strong&gt; trying to change the way Obsidian renders Emoji, from the hideous Windows Emoji to the beautiful &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;jdecked&#x2F;twemoji&#x2F;&quot;&gt;Twemoji&lt;&#x2F;a&gt;. But this isn&#x27;t a recipe, so let&#x27;s get right to it!&lt;&#x2F;p&gt;
&lt;span id=&quot;continue-reading&quot;&gt;&lt;&#x2F;span&gt;
&lt;p&gt;Download the latest &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;mozilla&#x2F;twemoji-colr&#x2F;releases&#x2F;latest&quot;&gt;Twemoji font &quot;in COLR&#x2F;CPAL layered format&quot;&lt;&#x2F;a&gt; (provided by Mozilla). Or the latest &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;googlefonts&#x2F;noto-emoji&#x2F;releases&#x2F;latest&quot;&gt;Noto Emoji&lt;&#x2F;a&gt;. Once downloaded, right-click the font file and click &quot;Install&quot; (For Twemoji the file is &lt;code&gt;Twemoji.Mozilla.ttf&lt;&#x2F;code&gt;, for Noto it&#x27;s &lt;code&gt;fonts&#x2F;NotoColorEmoji_WindowsCompatible.ttf&lt;&#x2F;code&gt;).&lt;&#x2F;p&gt;
&lt;p&gt;Now that the font is installed on your Computer you have to tell Obsidian to use it. Refer to the image below for the following steps: Inside Obsidian open the DOM inspector by pressing &lt;kbd&gt;&lt;kbd&gt;Ctrl&lt;&#x2F;kbd&gt;+&lt;kbd&gt;Shift&lt;&#x2F;kbd&gt;+&lt;kbd&gt;i&lt;&#x2F;kbd&gt;&lt;&#x2F;kbd&gt;. Switch to the &lt;kbd&gt;Elements&lt;&#x2F;kbd&gt;-Tab and select the element that starts&lt;code&gt;&amp;lt;body class=&quot;...&lt;&#x2F;code&gt; (it should be one of the first). On the other half of the inspector make sure you&#x27;re on the &lt;kbd&gt;Styles&lt;&#x2F;kbd&gt;-Tab. Under &lt;kbd&gt;Filter&lt;&#x2F;kbd&gt; search for &quot;&lt;kbd&gt;--font&lt;&#x2F;kbd&gt;&quot;.&lt;&#x2F;p&gt;
&lt;a href=&quot;https:&#x2F;&#x2F;blog.optional.page&#x2F;posts&#x2F;img&#x2F;Obsidian_font_guide.png&quot; target=&quot;_blank&quot;&gt;
    &lt;picture&gt;
        &lt;source srcset=&quot;https:&amp;#x2F;&amp;#x2F;blog.optional.page&amp;#x2F;processed_images&amp;#x2F;Obsidian_font_guide.4fa6c11d96faef9a.webp&quot; type=&quot;image&#x2F;webp&quot;&gt;
        &lt;img src=&quot;https:&#x2F;&#x2F;blog.optional.page&#x2F;posts&#x2F;img&#x2F;Obsidian_font_guide.png&quot; alt=&quot;Obsidian Inspector Guide&quot;&gt;
    &lt;&#x2F;picture&gt;
&lt;&#x2F;a&gt;
&lt;p&gt;What we&#x27;re looking for are the lines that define the &lt;em&gt;theme&lt;&#x2F;em&gt;-fonts. These might look different on your end, but here&#x27;s what mine look like:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo z-code&quot;&gt;&lt;code data-lang=&quot;css&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-entity z-name z-tag&quot;&gt;body&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-section&quot;&gt; {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-variable&quot;&gt;    --font-text-theme&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator&quot;&gt;:&lt;&#x2F;span&gt;&lt;span class=&quot;z-support z-constant&quot;&gt; -apple-system&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; BlinkMacSystemFont&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;Segoe UI&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; Roboto&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; Inter&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; Ubuntu&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-support z-constant&quot;&gt; sans-serif&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-terminator&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-variable&quot;&gt;    --font-editor-theme&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator&quot;&gt;:&lt;&#x2F;span&gt;&lt;span class=&quot;z-support z-constant&quot;&gt; -apple-system&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; BlinkMacSystemFont&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;Segoe UI&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; Roboto&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; Inter&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; Ubuntu&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-support z-constant&quot;&gt; sans-serif&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-terminator&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-variable&quot;&gt;    --font-monospace-theme&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator&quot;&gt;:&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;JetBrains Mono&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;Fira Code&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; Menlo&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; SFMono-Regular&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; Consolas&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;Roboto Mono&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-support z-constant&quot;&gt; monospace&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-terminator&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-variable&quot;&gt;    --font-interface-theme&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator&quot;&gt;:&lt;&#x2F;span&gt;&lt;span class=&quot;z-support z-constant&quot;&gt; -apple-system&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; BlinkMacSystemFont&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;Segoe UI&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; Roboto&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; Inter&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; Ubuntu&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-support z-constant&quot;&gt; sans-serif&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-terminator&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-punctuation z-section&quot;&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Copy these (yours) somewhere. You can now close the Obsidian console (again via &lt;kbd&gt;&lt;kbd&gt;Ctrl&lt;&#x2F;kbd&gt;+&lt;kbd&gt;Shift&lt;&#x2F;kbd&gt;+&lt;kbd&gt;i&lt;&#x2F;kbd&gt;&lt;&#x2F;kbd&gt; or the little &lt;kbd&gt;x&lt;&#x2F;kbd&gt;). Open your Obsidian Settings (default:&lt;kbd&gt;&lt;kbd&gt;Ctrl&lt;&#x2F;kbd&gt;+&lt;kbd&gt;,&lt;&#x2F;kbd&gt;&lt;&#x2F;kbd&gt;), go to &lt;kbd&gt;Appearance&lt;&#x2F;kbd&gt;, scroll down to &lt;kbd&gt;CSS Snippets&lt;&#x2F;kbd&gt; and click the little folder icon. This opens up the Snippets Folder in Windows where you now create a file called something like &lt;code&gt;twemoji.css&lt;&#x2F;code&gt; (The name doesn&#x27;t matter, the file extension &lt;code&gt;.css&lt;&#x2F;code&gt; does). Open that file in your favourite text editor and paste the CSS you found earlier. But also place &lt;code&gt;&#x27;Twemoji Mozilla&#x27;&lt;&#x2F;code&gt; (or &lt;code&gt;&#x27;Noto Color Emoji&#x27;&lt;&#x2F;code&gt; if you want that one) somewhere among the existing Fonts—right behind &lt;code&gt;&#x27;Segoe UI&#x27;&lt;&#x2F;code&gt; is what works for me. So here is what it could look like:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo z-code&quot;&gt;&lt;code data-lang=&quot;css&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-entity z-name z-tag&quot;&gt;body&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-section&quot;&gt; {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-variable&quot;&gt;  --font-text-theme&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator&quot;&gt;:&lt;&#x2F;span&gt;&lt;span class=&quot;z-support z-constant&quot;&gt; -apple-system&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; BlinkMacSystemFont&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;Segoe UI&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;Twemoji Mozilla&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; Roboto&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  Inter&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; Ubuntu&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-support z-constant&quot;&gt; sans-serif&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-terminator&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-variable&quot;&gt;  --font-editor-theme&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator&quot;&gt;:&lt;&#x2F;span&gt;&lt;span class=&quot;z-support z-constant&quot;&gt; -apple-system&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; BlinkMacSystemFont&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;Segoe UI&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;Twemoji Mozilla&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; Roboto&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  Inter&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; Ubuntu&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-support z-constant&quot;&gt; sans-serif&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-terminator&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-variable&quot;&gt;  --font-monospace-theme&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator&quot;&gt;:&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;JetBrains Mono&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;Fira Code&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; Menlo&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; SFMono-Regular&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  Consolas&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;Roboto Mono&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;Twemoji Mozilla&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-support z-constant&quot;&gt; monospace&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-terminator&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-variable&quot;&gt;  --font-interface-theme&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator&quot;&gt;:&lt;&#x2F;span&gt;&lt;span class=&quot;z-support z-constant&quot;&gt; -apple-system&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; BlinkMacSystemFont&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;Segoe UI&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;Twemoji Mozilla&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; Roboto&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  Inter&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; Ubuntu&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-support z-constant&quot;&gt; sans-serif&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-terminator&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-punctuation z-section&quot;&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Enable the snippet. You can do that by saving your &lt;code&gt;.css&lt;&#x2F;code&gt;-file, going back to the Obsidian settings, back to &lt;kbd&gt;&lt;kbd&gt;Appearance&lt;&#x2F;kbd&gt;&amp;gt;&lt;kbd&gt;CSS Snippets&lt;&#x2F;kbd&gt;&lt;&#x2F;kbd&gt;. Hit the little refresh arrows and your new snippet should show up. Toggle it on. Then open a file with some emojis to test your snippet.&lt;&#x2F;p&gt;
&lt;p&gt;If it doesn&#x27;t work as intended (the emojis are still the old font &lt;em&gt;or&lt;&#x2F;em&gt; the font of the regular text has also changed) try a different ordering of fonts. They get applied from left to right until one is able to provide the required glyph. You might have to play around with the ordering to get the desired results. Just saving the &lt;code&gt;.css&lt;&#x2F;code&gt; should get Obsidian to reload and re-apply the snippet, you don&#x27;t need to restart it every time.&lt;&#x2F;p&gt;
</content>
    </entry><entry xml:lang="en">
        <title>New Sub-Blog for Book Reviews</title>
        <published>2023-08-16T15:46:29+00:00</published>
        <updated>2023-08-16T15:46:29+00:00</updated>
        <author><name>Optional</name></author>
        <link rel="alternate" type="text/html" href="https://blog.optional.page/misc/new-books-section/"/>
        <id>https://blog.optional.page/misc/new-books-section/</id>
        <content type="html" xml:base="https://blog.optional.page/misc/new-books-section/">
        &lt;p&gt;There&#x27;s a new section on this blog called &lt;a href=&quot;https:&#x2F;&#x2F;blog.optional.page&#x2F;books&#x2F;&quot;&gt;&#x2F;books&lt;&#x2F;a&gt;, where I share reviews of the books I&#x27;m reading.&lt;&#x2F;p&gt;
&lt;span id=&quot;continue-reading&quot;&gt;&lt;&#x2F;span&gt;
&lt;p&gt;I&#x27;ve imported my old reviews (from &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;joinbookwyrm.com&#x2F;&quot;&gt;Bookwyrm&lt;&#x2F;a&gt;) and will from now on post reviews only on this section here. If you&#x27;re following the main feed of this instance (&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;blog.optional.page&#x2F;atom.xml&quot;&gt;https:&#x2F;&#x2F;blog.optional.page&#x2F;atom.xml&lt;&#x2F;a&gt;) instead of this section specifically (&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;blog.optional.page&#x2F;misc&#x2F;atom.xml&quot;&gt;https:&#x2F;&#x2F;blog.optional.page&#x2F;misc&#x2F;atom.xml&lt;&#x2F;a&gt;) you will already have noticed that.&lt;&#x2F;p&gt;
&lt;p&gt;Just a quick FYI for what&#x27;s happening :)&lt;&#x2F;p&gt;
</content>
    </entry><entry xml:lang="en">
        <title>An Optional selection of Calibration Tools for Pen and Paper Sessions</title>
        <published>2023-07-07T14:01:55+00:00</published>
        <updated>2023-07-07T14:01:55+00:00</updated>
        <author><name>Optional</name></author>
        <link rel="alternate" type="text/html" href="https://blog.optional.page/misc/calibration-tools/"/>
        <id>https://blog.optional.page/misc/calibration-tools/</id>
        <content type="html" xml:base="https://blog.optional.page/misc/calibration-tools/">
        &lt;p&gt;When &lt;a href=&quot;https:&#x2F;&#x2F;blog.optional.page&#x2F;misc&#x2F;pnp-intro&#x2F;&quot;&gt;playing Pen and Paper games&lt;&#x2F;a&gt; I highly recommend the use of &quot;Calibration Tools&quot;. These are more commonly known under the name &quot;Safety Tools&quot;, but since they enable more than just &quot;safe&quot; play, I prefer &quot;Calibration Tools&quot;. These tools take the form of additional rules and&#x2F;or processes that formalise the process of finding common ground on what stories we want to tell at the table.&lt;&#x2F;p&gt;
&lt;span id=&quot;continue-reading&quot;&gt;&lt;&#x2F;span&gt;
&lt;p&gt;No tool is perfect and no collection of tool is perfect for every table. The choice of tool(s) is dependent on whether you play with a fixed group, re-use systems or whether you play a campaign or a one shot. With the name &quot;Safety Tool&quot; you might think that it&#x27;s only important when you play potentially triggering genres like horror, but they still hold much value even when you play tamer games, like &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;temporalhiccup.itch.io&#x2F;cozy-town&quot;&gt;Cozy Town&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Before I go through the tools that I use, I&#x27;ll point you in the direction of the &lt;a rel=&quot;external&quot; href=&quot;http:&#x2F;&#x2F;bit.ly&#x2F;ttrpgsafetytoolkit&quot;&gt;Safety Toolkit&lt;&#x2F;a&gt;, which lists even more tools you might find more fitting than what I use. My selection of tools is based on the fact that I often play with new players, always play new game systems and only play one shots.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;before-the-game&quot;&gt;Before the Game&lt;&#x2F;h2&gt;
&lt;p&gt;Before we begin playing I use &quot;CATS&quot; as a guideline to introduce everything about how the session will go. Part of CATS is introducing the other tools we&#x27;ll use, one of which also happens before the game, namely &quot;Lines and Veils&quot;.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;cats&quot;&gt;CATS&lt;&#x2F;h3&gt;
&lt;p&gt;The &quot;CATS&quot; acronym stands for &quot;Concept, Aim, Tone, Subject Matter.&quot;&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-1-1&quot;&gt;&lt;a href=&quot;#fn-1&quot;&gt;1&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt; This list is just a reminder for all the topics I want to explain before we get further into it. You can also look at the &lt;a rel=&quot;external&quot; href=&quot;http:&#x2F;&#x2F;proleary.com&#x2F;2016&#x2F;04&#x2F;25&#x2F;the-cats-method-a-story-telling-game-opening-ritual&#x2F;&quot;&gt;original explanation of this tool&lt;&#x2F;a&gt;, but here&#x27;s my explanation:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Concept&lt;&#x2F;strong&gt;: Pitch the game. &lt;em&gt;Example&lt;&#x2F;em&gt;: &quot;Trophy Dark is a horror game where treasure hunters enter &#x27;the forest&#x27; out of complete desperation to find some treasure. It&#x27;s &#x27;play-to-lose&#x27;, so expect for your characters to find a terrible death by the end. It uses a &#x27;writers-room-approach&#x27; where we all will have great influence on how the world acts and what events will happen to your characters.&quot;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Aim&lt;&#x2F;strong&gt;: Pitch the session and schedule. &lt;em&gt;Example&lt;&#x2F;em&gt;: &quot;After I&#x27;m done with CATS we&#x27;ll make characters. After a quick break we&#x27;ll play the game and take 5 minute breaks every hour. Like I said, you&#x27;ll all die. The game is split into 5 parts, called &#x27;rings&#x27;. Some of your characters will find their end in ring 4, and the survivors in ring 5. If it fits, those of you without a character can take control of the forest for ring 5. Afterwards we&#x27;ll order take out and do Stars and Wishes while we wait for the food. Sound good?&quot;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Tone&lt;&#x2F;strong&gt;: Pitch the tone&#x2F;genre. &lt;em&gt;Example&lt;&#x2F;em&gt;: &quot;We&#x27;ll be playing the incursion &#x27;A Warm and Pleasant Hum&#x27;, which means we&#x27;ll have lots of insects and body horror. I&#x27;d like for us to remain serious, even when we are discussing things out of character. Trophy excels at symbolism so it&#x27;d be cool if we can weave that in. But I&#x27;m open to focus more on psychological horror or anything else you are interested in, what do you think?&quot;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Subject Matter&lt;&#x2F;strong&gt;: Discuss ideas and boundaries that might come up. Also introduce and explain other calibration tools. &lt;em&gt;Example&lt;&#x2F;em&gt;: &quot;The incursion lists the following content warnings: Cannibalism, Insects, […] and Eye Trauma, but Jenny already said that she doesn&#x27;t want that in, so we&#x27;ll avoid it. To make it easier for us to set more boundaries, we&#x27;ll also do Lines and Veils next. And during the game we&#x27;ll be using […]&quot;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;lines-and-veils&quot;&gt;Lines and Veils&lt;&#x2F;h3&gt;
&lt;p&gt;With Lines and Veils everyone gets the chance to mark certain content as &quot;Line&quot; or &quot;Veil&quot;. Most people also add the categories &quot;Ask First&quot; and &quot;Interested&quot;. The more severe categories overwrite votes in the less severe categories. If a person marks something as a Veil and someone else marks the same thing as a Line it is now a Line.&lt;&#x2F;p&gt;
&lt;p&gt;Anything marked as a &lt;strong&gt;Line&lt;&#x2F;strong&gt; is a hard limit and will simply not appear in the story or discussion at the table. Things marked as a &lt;strong&gt;Veil&lt;&#x2F;strong&gt; will be &quot;hidden behind a veil&quot;, meaning that it will not appear directly, but might be hinted at. For example, veiling the topic of death might allow us to describe a man lying in a hospital bed and as we leave the room we know that he&#x27;s not going to make it. We don&#x27;t say that he dies, but he does not reappear in our story. &lt;strong&gt;Ask First&lt;&#x2F;strong&gt; means exactly that, to ask before introducing something. This might be used if it&#x27;s very context dependent whether you like the content to be in the story. &lt;strong&gt;Interested&lt;&#x2F;strong&gt; just tells everyone that this is a topic you&#x27;re interested in. Anyone might try to push the narrative into a direction where these topics can be explored together.&lt;&#x2F;p&gt;
&lt;p&gt;To decide on Lines and Veils, it helps to have a list of possible triggers beforehand. You can come up with them yourself, sometimes the rules of the game or adventure provides them, or you can find generic lists online. In the best case it would also be possible for everyone to anonymously provide their choices, which is why I wrote a &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;optional.games&#x2F;lav&#x2F;?lang=en&quot;&gt;WebApp to do just that&lt;&#x2F;a&gt;. The idea is that one person opens it on their phone, defines a list of content that might show up in the session and then hands their phone around and everyone fills the form with the option to add new content as well. It&#x27;s then summarized and anonymized.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;during-the-game&quot;&gt;During The Game&lt;&#x2F;h2&gt;
&lt;p&gt;Since you can&#x27;t think of everything beforehand and some new things will come up during play, you&#x27;ll probably want to use another tool during the game. I use the &quot;Open Door Policy&quot; and part of &quot;Script Change&quot;.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;open-door-policy&quot;&gt;Open Door Policy&lt;&#x2F;h3&gt;
&lt;p&gt;I explicitly state, that &quot;If you need to leave for any reason, you can leave without explaining why.&quot; This is quite easy online, but that&#x27;s why I find it so important to highlight it in person as well. I also want to point out that you can apply this policy to the rest of your life as well.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;script-change&quot;&gt;Script Change&lt;&#x2F;h3&gt;
&lt;p&gt;Script Change frames the whole gaming session as a movie. It&#x27;s a very extensive tool that has ideas for what to do before, during and after a game. I only use part of what it suggests, so do check out &lt;a rel=&quot;external&quot; href=&quot;http:&#x2F;&#x2F;briebeau.com&#x2F;thoughty&#x2F;script-change&#x2F;.&quot;&gt;the full explanation&lt;&#x2F;a&gt; to see if there&#x27;s stuff you like.&lt;&#x2F;p&gt;
&lt;p&gt;What I do during the game is to lay out a bunch of index cards with different symbols and commands that should be familiar from TV remotes. During play anyone can either tap these cards or say the command to use them. None of these require justification to use. These are the &quot;buttons&quot; and their functions:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Rewind&lt;&#x2F;strong&gt;: Like &lt;a rel=&quot;external&quot; href=&quot;http:&#x2F;&#x2F;tinyurl.com&#x2F;x-card-rpg&quot;&gt;the X-Card&lt;&#x2F;a&gt;, you name what you would like to have edited out and we rewind to before that and continue on an alternate path where that thing does not happen. Other than for triggering topics this can be used for things that don&#x27;t fit the tone or are just plain boring. &lt;em&gt;Examples&lt;&#x2F;em&gt;: &quot;Rewind. The werewolf does not wear a top hat and a tie.&quot; &lt;em&gt;or&lt;&#x2F;em&gt; &quot;Rewind. My character&#x27;s best friend does not die. Instead they are banished from this plane.&quot;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Pause&lt;&#x2F;strong&gt;: Pause the game and talk out of character. This can be to clarify or change game rules, to take a breather, or to talk about the content of the game. It&#x27;s also the default option to use, if you don&#x27;t know which other Script Change button you should use. &lt;em&gt;Examples&lt;&#x2F;em&gt; &quot;Pause. I got to go use the bathroom.&quot; &lt;em&gt;or&lt;&#x2F;em&gt; &quot;Pause. Can we talk about this Luck mechanic? I feel like it diminishes the strategy aspect too much.&quot; &lt;em&gt;or&lt;&#x2F;em&gt; &quot;Pause. I don&#x27;t like this scene. I guess it&#x27;s okay to have it in the story, but which of these buttons allowed us to go to the next one? Fast-Forward?&quot;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Fast-Forward&lt;&#x2F;strong&gt;: Fade to black and move to the next scene. This can be used in the same way that a Veil is used as it leaves the content up to here in the story, but tells us to move on to something else. To make my examples interesting, I&#x27;ll add elaboration, but since it&#x27;s very clear what to do when someone hits &quot;Fast-Forward&quot; it generally doesn&#x27;t need any elaboration. &lt;em&gt;Examples&lt;&#x2F;em&gt;: &quot;Fast-Forward. I get that these two characters are about to have sex and don&#x27;t need any more elaboration.&quot; &lt;em&gt;or&lt;&#x2F;em&gt; &quot;Fast-Forward. These are just two NPCs talking and I want to see what Jenny&#x27;s character is doing while this is happening.&quot;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Instant Replay&lt;&#x2F;strong&gt;: Go over what just happened out of character. If things are unclear or deserve more time in the spotlight. &lt;em&gt;Examples&lt;&#x2F;em&gt;: &quot;Instant Replay. My character was lying during that whole conversation. Does your character know that? Do you know that?&quot; &lt;em&gt;or&lt;&#x2F;em&gt; &quot;Instant Replay. Jenny, your character just killed the big bad and you&#x27;re just telling us &#x27;17 fire damage&#x27;! Please tell us again what exactly your character is casting, what that looks like and what your character is feeling while they kill the big bad!&quot;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Frame-by-Frame&lt;&#x2F;strong&gt;: Take it slow from here. Either to give a scene more weight or to leave enough time to hit any other button should need arise. &lt;em&gt;Examples&lt;&#x2F;em&gt;: &quot;Frame-by-Frame. Remember that &#x27;Harm to Animals&#x27; is a Veil. Proceed cautiously.&quot; &lt;em&gt;or&lt;&#x2F;em&gt; &quot;Frame-by-Frame. I want to hear how you manage to run through the collapsing mine shaft in as much detail as possible!&quot;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;after-the-game&quot;&gt;After The Game&lt;&#x2F;h2&gt;
&lt;p&gt;After the main story wraps I often allow players to narrate the &quot;Movie Credits&quot;, which is my very simplified version of the Script Change Reels. After that I love to wrap with &quot;Stars And Wishes&quot;.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;movie-credits&quot;&gt;Movie Credits&lt;&#x2F;h3&gt;
&lt;p&gt;It depends on the kind of game we played what exactly I ask for here. Most often it&#x27;s vignettes and sometimes also bloopers.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Vignettes&lt;&#x2F;strong&gt;: These are tiny scenes or still images. Like an epilogue, mid-credit-scene or &quot;where are they now&quot;. Mostly, I leave the floor open for anyone with an idea, but sometimes I ask specific questions. &lt;em&gt;Examples&lt;&#x2F;em&gt;: &quot;We see the big bad&#x27;s henchmen collect the ashes. Black. We see them collect herbs in the woods. Black. We see them mix a potion. Black. A drop of the potion hits the ashes. Black.&quot; &lt;em&gt;or&lt;&#x2F;em&gt; &quot;After this adventure the Barbarian returns to school to get his diploma. He sits on a tiny chair and still has his axe strapped to his back.&quot; &lt;em&gt;and&lt;&#x2F;em&gt; &quot;Two years later he sits nervously in an office and Maurice enters and says: &#x27;So you think you got what it takes to deliver chocolate?&#x27;&quot; &lt;em&gt;Example questions&lt;&#x2F;em&gt;: &quot;How does your character&#x27;s family react when they return home?&quot; &lt;em&gt;or&lt;&#x2F;em&gt; &quot;After your character died, who holds out hope the longest?&quot;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Bloopers&lt;&#x2F;strong&gt;: Alternative scenes. This is very comedic, so it only really fits with those kinds of games. &lt;em&gt;Example&lt;&#x2F;em&gt;: &quot;In one take when the big bad activates the trap door below the heroes he actually pulls the wrong lever and Maurice drops from the ceiling.&quot;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;stars-and-wishes&quot;&gt;Stars And Wishes&lt;&#x2F;h3&gt;
&lt;p&gt;Finally, I end my sessions with Stars and Wishes, or Roses and Thornes (or Buds and Thornes). This gives everyone opportunity to award &quot;Stars&quot; (or &quot;Roses&quot;) and talk about &quot;Wishes&quot; or &quot;Thornes&quot;. &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.gauntlet-rpg.com&#x2F;blog&#x2F;stars-and-wishes&quot;&gt;Here&#x27;s the original source for Stars and Wishes&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Stars&lt;&#x2F;strong&gt; (or &lt;strong&gt;Roses&lt;&#x2F;strong&gt;): Simply things you enjoyed. This can be moments, characters, plot points, etc. &lt;em&gt;Examples&lt;&#x2F;em&gt;: &quot;I want to give a star to Jenny&#x27;s character. He was such a lovable idiot, but when he came through at the end… That was epic!&quot; &lt;em&gt;or&lt;&#x2F;em&gt; &quot;A rose to Jenny. This was your first game and you committed to that crazy character voice! So great!&quot; &lt;em&gt;or&lt;&#x2F;em&gt; &quot;A star for pausing before the big fight. It was good to talk about the Luck mechanic and the rule changes we came up with worked really well!&quot;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Wishes&lt;&#x2F;strong&gt;: Things you hope to see next time. This can also be character things or meta things. It might be a good idea to repeat them before the next session to refresh everyone&#x27;s memory. &lt;em&gt;Examples&lt;&#x2F;em&gt;: &quot;As a wish, I&#x27;d like to see Maurice return next time. He was so funny and I really hope he didn&#x27;t die in that fire.&quot; &lt;em&gt;or&lt;&#x2F;em&gt; &quot;Another wish is to explore the relationship between Jenny&#x27;s character and my character more. It would be cool to have a scene with just the two of them.&quot; &lt;em&gt;or&lt;&#x2F;em&gt; &quot;I&#x27;d like to try something else with the Luck mechanic next time. Not the original rules, but also not what we came up with today. I&#x27;ll think about it and tell you next time what I came up with.&quot;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Thorns&lt;&#x2F;strong&gt;: Things that did not work so well. Again, story or on a meta level. This can be used instead of Wishes when there&#x27;s no next time. &lt;em&gt;Examples&lt;&#x2F;em&gt;: &quot;A thorn for me was when we skipped the second break. At the time I went along with everyone, but then we had to pause in the middle of the fight anyway.&quot; &lt;em&gt;or&lt;&#x2F;em&gt; &quot;A thorn was when the big bad trapped us. It was a bit annoying that we didn&#x27;t have any agency and had to wait for Maurice to free us.&quot;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;&#x2F;h2&gt;
&lt;p&gt;Phew, that was a lot to get through! But remember: These tools—just like the rules of the games themselves—were developed by people to fit their needs and be fun and usable for their groups. The way that I have explained the tools here is already different from how I first encountered them myself. I hope that you, too, take these as inspiration, try them out, and hack them to better suit your table&#x27;s needs.&lt;&#x2F;p&gt;
&lt;section class=&quot;footnotes&quot;&gt;
&lt;ol class=&quot;footnotes-list&quot;&gt;
&lt;li id=&quot;fn-1&quot;&gt;
&lt;p&gt;The German publisher System Matters translated it as &quot;GAST&quot;: Grundidee, Ablauf, Stimmung, Themen. &lt;a href=&quot;#fr-1-1&quot;&gt;↩&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;&#x2F;section&gt;
</content>
    </entry><entry xml:lang="en">
        <title>Only Bad Posts From Now On</title>
        <published>2023-06-24T10:53:53+00:00</published>
        <updated>2023-06-24T10:53:53+00:00</updated>
        <author><name>Optional</name></author>
        <link rel="alternate" type="text/html" href="https://blog.optional.page/misc/bad-posts/"/>
        <id>https://blog.optional.page/misc/bad-posts/</id>
        <content type="html" xml:base="https://blog.optional.page/misc/bad-posts/">
        &lt;p&gt;This is to tell you that there&#x27;ll only be bad blog posts from now on. &quot;So nothing changes?&quot;—Shut up! But… yeah.&lt;&#x2F;p&gt;
&lt;span id=&quot;continue-reading&quot;&gt;&lt;&#x2F;span&gt;
&lt;p&gt;You&#x27;re still here? Okay. I&#x27;ll go into a bit more detail.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;posts-until-now&quot;&gt;Posts Until Now&lt;&#x2F;h2&gt;
&lt;p&gt;I started this blog with the &lt;a href=&quot;https:&#x2F;&#x2F;blog.optional.page&#x2F;misc&#x2F;what-is-this-blog&#x2F;&quot;&gt;intention of having conversations in public&lt;&#x2F;a&gt;, but when that didn&#x27;t take I pivoted to the common blogging format of just sharing general thoughts. I barely reached my goal of publishing 12 posts in 2022. At the point of publication I was quite happy with all of them. I think they were all providing some unique perspectives that I hadn&#x27;t seen elsewhere. So why not continue this way?&lt;&#x2F;p&gt;
&lt;h2 id=&quot;good-posts&quot;&gt;Good Posts&lt;&#x2F;h2&gt;
&lt;p&gt;I still want to write good posts. But those of 2022 took a lot out of me. With loads of &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;ncase.me&#x2F;remember&#x2F;&quot;&gt;good&lt;&#x2F;a&gt;, &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.ted.com&#x2F;talks&#x2F;brene_brown_the_power_of_vulnerability&#x2F;c&quot;&gt;great&lt;&#x2F;a&gt; and even &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;vimeo.com&#x2F;639528236&quot;&gt;perfect&lt;&#x2F;a&gt; content online already, it&#x27;s difficult to find new and unique perspectives to share. And even when I find one, it&#x27;s a lot of work to polish them to a level able to compete with all these other great examples. So why are bad posts the solution?&lt;&#x2F;p&gt;
&lt;h2 id=&quot;bad-posts&quot;&gt;Bad Posts&lt;&#x2F;h2&gt;
&lt;p&gt;I don&#x27;t want to write bad posts. There&#x27;s more than enough of them and adding to that feels like making it even harder for people to find the good stuff. And still, the average quality of content on the internet can only ever improve when a thinking individual shares their thoughts. And to enable me to post anything at all I&#x27;ll pre-commit to calling them &quot;bad&quot;. Whether that actually makes me post more often remains to be seen.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;&#x2F;h2&gt;
&lt;p&gt;If writing good posts is hard right now, I can at least practice by writing a lot of bad posts. Walt Stanchfield once claimed: &quot;We all have 10,000 bad drawings in us. The sooner we get them out the better.&quot; So check back in 9,986 posts for my first good one or join me now on the journey there.&lt;&#x2F;p&gt;
</content>
    </entry><entry xml:lang="en">
        <title>You Can&#x27;t Learn From Outlier Events</title>
        <published>2023-06-23T12:47:45+00:00</published>
        <updated>2023-06-23T12:47:45+00:00</updated>
        <author><name>Optional</name></author>
        <link rel="alternate" type="text/html" href="https://blog.optional.page/misc/outlier/"/>
        <id>https://blog.optional.page/misc/outlier/</id>
        <content type="html" xml:base="https://blog.optional.page/misc/outlier/">
        &lt;p&gt;You&#x27;re learning to play darts. You don&#x27;t care about the actual rules, but just want to consistently hit the bullseye. You do a couple of throws, all somewhere around &quot;okay&quot;. Finally, you hit the bullseye! You try to remember exactly what it was that enabled you to hit it… You had your right foot in front! You try again, right foot out front. You hit the edge of the board. Left foot, same result.&lt;&#x2F;p&gt;
&lt;span id=&quot;continue-reading&quot;&gt;&lt;&#x2F;span&gt;
&lt;p&gt;It must&#x27;ve been something else. At least now you know that the legs don&#x27;t matter. You do more throws. You&#x27;re back to where you started, all of them okay-ish.&lt;&#x2F;p&gt;
&lt;p&gt;Now you do a throw that doesn&#x27;t even reach the wall with the board! What happened? You took a drink of water. Probably some residual water on your fingers making them slippery. You dry your hands on your shirt. Another throw. No bullseye, but at least it hit the board again. The next time you break for a drink you take care to dry your fingers again.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;did-you-spot-the-problem&quot;&gt;Did You Spot The Problem?&lt;&#x2F;h2&gt;
&lt;p&gt;The title states that we can&#x27;t learn from outlier events. Yet, you learned that the position of your legs does not matter and that it&#x27;s important to dry your hands after taking a drink. But since this example incorporates an element of luck, we expect a &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Regression_toward_the_mean&quot;&gt;Regression toward the mean&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;rolling-dice&quot;&gt;Rolling Dice&lt;&#x2F;h2&gt;
&lt;p&gt;When rolling dice, what do we expect to roll after rolling a 1? There&#x27;s a 1 in 6 chance for each side, so the chance to roll a 1 again is &lt;sup&gt;1&lt;&#x2F;sup&gt;⁄&lt;sub&gt;6&lt;&#x2F;sub&gt;, but a better roll is 5 times more likely. So if you were trying to &quot;get good&quot; at rolling dice, you might try blowing on the die before rolling it again. You roll a 3. But it was likely to be better than a 1 &lt;em&gt;regardless of your actions&lt;&#x2F;em&gt;. Unaware of this bias you now get in the habit of blowing on dice.&lt;&#x2F;p&gt;
&lt;p class=&quot;highlight-block&quot;&gt;
&lt;em&gt;Regression Toward The Mean&lt;&#x2F;em&gt; tells us that in a probability based sampling, we can expect a less extreme sample after an extreme sample.
&lt;&#x2F;p&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;&#x2F;h2&gt;
&lt;p&gt;When we are learning something new that has a component of luck to it we cannot really learn from isolated extreme cases that involve luck. This also applies to &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;youtu.be&#x2F;l_F9jxsfGCw&quot;&gt;playing the lottery of making online content&lt;&#x2F;a&gt; and our thinking about the effectiveness of &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Regression_toward_the_mean#Regression_fallacies&quot;&gt;punishment and reward in teaching&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Law_of_large_numbers&quot;&gt;Over a longer period of time&lt;&#x2F;a&gt; we can still take these extremes account, like hitting the bullseye 6% of the time with the right foot out front and 2% with the left foot, then keeping the right foot out front is definitely something to look into.&lt;&#x2F;p&gt;
</content>
    </entry><entry xml:lang="en">
        <title>AI-Assisted Learning</title>
        <published>2023-06-16T23:50:33+00:00</published>
        <updated>2023-06-16T23:50:33+00:00</updated>
        <author><name>Optional</name></author>
        <link rel="alternate" type="text/html" href="https://blog.optional.page/misc/ai-assisted-learning/"/>
        <id>https://blog.optional.page/misc/ai-assisted-learning/</id>
        <content type="html" xml:base="https://blog.optional.page/misc/ai-assisted-learning/">
        &lt;p&gt;&lt;strong&gt;TL;DR&lt;&#x2F;strong&gt;: I used chatGPT in some form of Socratic dialogue to aid in understanding a text I was reading. &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;chat.openai.com&#x2F;share&#x2F;89c24bc1-26a0-4aff-ae54-b11e01ae1e66&quot;&gt;Transcript&lt;&#x2F;a&gt;.
&lt;br&gt;&lt;br&gt;
Yes, AI is over-hyped and not actually (yet) capable of what many people claim it can do—or what people are already using it for. The best advice I&#x27;ve heard goes &quot;Treat it like a younger version of yourself or an assistant. Let it do busy-work which you could also do yourself and don&#x27;t trust it blindly.&quot;&lt;&#x2F;p&gt;
&lt;span id=&quot;continue-reading&quot;&gt;&lt;&#x2F;span&gt;
&lt;p&gt;Today I was reading &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;csmt.uchicago.edu&#x2F;glossary2004&#x2F;realityhyperreality.htm&quot;&gt;this text about &quot;Hyperrealism&quot;&lt;&#x2F;a&gt; for fun and—with no formal background in philosophy—I was having real trouble understanding it. So I turned to chatGPT. I had previously asked chatGPT and &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.perplexity.ai&#x2F;&quot;&gt;Perplexity&lt;&#x2F;a&gt; to explain Hyperrealism and give examples with limited success (especially since I couldn&#x27;t really verify what they were coming up with).&lt;&#x2F;p&gt;
&lt;p&gt;Instead I wanted to work on the basis of the text I had trouble with. &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;chat.openai.com&#x2F;share&#x2F;89c24bc1-26a0-4aff-ae54-b11e01ae1e66&quot;&gt;Here&#x27;s the full transcript&lt;&#x2F;a&gt; if you want to read it yourself.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;play-by-play&quot;&gt;Play-by-Play&lt;&#x2F;h2&gt;
&lt;p&gt;I start by pasting the full section that contained the part that gave me trouble. I lay out what specifically I&#x27;m having trouble with and make an attempt at answering my own question.&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-1-1&quot;&gt;&lt;a href=&quot;#fn-1&quot;&gt;1&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt; I then explicitly ask for feedback. After chatGPT&#x27;s answer I again take great effort to put it into my own words and come up with examples.&lt;&#x2F;p&gt;
&lt;p&gt;When I feel like I&#x27;ve finally grasped it I again quote the relevant part of the original text (to refresh chatGPT&#x27;s memory) and give my full understanding. I then ask for a rating 1-5 and feedback. After chatGPT reiterates a point that I had already found suspicious earlier, I explain my different understanding and ask chatGPT &quot;Do you not agree?&quot;. I think I should&#x27;ve gone with &quot;Why do you think differently?&quot; instead to not prime the answer too much.&lt;&#x2F;p&gt;
&lt;p&gt;After having worked through all my issues to my satisfaction I give a creative prompt &quot;Can you give me 5 bullet pointed questions that could broaden my understanding?&quot; They weren&#x27;t all great, but that&#x27;s why I asked for five. I gave them some thought and got some quick feedback, again asking for a 1-5 rating and some feedback.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;takeaways&quot;&gt;Takeaways&lt;&#x2F;h2&gt;
&lt;p&gt;I&#x27;d recommend using chatGPT to aid understanding texts that are slightly above your reading level. And here&#x27;s what works for me:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Provide the original text&lt;&#x2F;li&gt;
&lt;li&gt;Start off with your own understanding&lt;&#x2F;li&gt;
&lt;li&gt;Make gaps in your understanding explicit and ask questions&lt;&#x2F;li&gt;
&lt;li&gt;Ask for 1-5 ratings in specific categories (accuracy, completeness)&lt;&#x2F;li&gt;
&lt;li&gt;Ask to have these ratings followed up by reasons (flaws, missing information)&lt;&#x2F;li&gt;
&lt;li&gt;Do all of the above in one message. Few longer prompts work better than many short ones&lt;&#x2F;li&gt;
&lt;li&gt;Based on the feedback (and your own thinking!!) revise your summary&#x2F;example&lt;&#x2F;li&gt;
&lt;li&gt;OR: Explain why you disagree and ask chatGPT how it came to its conclusion&lt;&#x2F;li&gt;
&lt;li&gt;Do this until you feel like you grasp the original text (re-read it, don&#x27;t follow chatGPT too far off the beaten path)&lt;&#x2F;li&gt;
&lt;li&gt;Longer conversations make chatGPT more prone to hallucinations, so start a new conversation if the current one is getting too long&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;section class=&quot;footnotes&quot;&gt;
&lt;ol class=&quot;footnotes-list&quot;&gt;
&lt;li id=&quot;fn-1&quot;&gt;
&lt;p&gt;Basically &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Rubber_duck_debugging&quot;&gt;rubber duck debugging&lt;&#x2F;a&gt;. &lt;a href=&quot;#fr-1-1&quot;&gt;↩&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;&#x2F;section&gt;
</content>
    </entry><entry xml:lang="en">
        <title>Lasers &amp; Feelings Game Wrap</title>
        <published>2022-11-20T14:43:30+00:00</published>
        <updated>2025-09-01T00:00:00+00:00</updated>
        <author><name>Optional</name></author>
        <link rel="alternate" type="text/html" href="https://blog.optional.page/misc/lf/"/>
        <id>https://blog.optional.page/misc/lf/</id>
        <content type="html" xml:base="https://blog.optional.page/misc/lf/">
        &lt;p&gt;This week I finished a 3-shot of the excellent one-page RPG &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;johnharper.itch.io&#x2F;lasers-feelings&quot;&gt;Lasers &amp;amp; Feelings&lt;&#x2F;a&gt; by John Harper. L&amp;amp;F is not exactly meant to tell a story longer than a one-shot, but I wanted to challenge myself and try something different.&lt;&#x2F;p&gt;
&lt;span id=&quot;continue-reading&quot;&gt;&lt;&#x2F;span&gt;&lt;h2 id=&quot;the-goal&quot;&gt;The Goal&lt;&#x2F;h2&gt;
&lt;p&gt;After playing a couple of one-shots in different systems, I wanted to try something a little longer. I also wanted to bring some seriousness into the story, as we often tend to strike a comedic tone around my table. But I still wanted to run zero-prep and greatly share ownership of the story with all involved.&lt;&#x2F;p&gt;
&lt;p&gt;I decided to go with Lasers &amp;amp; Feelings as the system because it&#x27;s extremely simple and short. I&#x27;ve played two one-shots with it already, but those had turned into mostly comedy. That was fine then, but I knew I&#x27;d have to put in some effort to keep this story from spinning out into hilarity.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;the-setup&quot;&gt;The Setup&lt;&#x2F;h2&gt;
&lt;p&gt;I planned three sessions. We ended up with me as facilitator plus three players in the first session, minus one player for the remaining two sessions. Using &lt;a rel=&quot;external&quot; href=&quot;http:&#x2F;&#x2F;proleary.com&#x2F;2016&#x2F;04&#x2F;25&#x2F;the-cats-method-a-story-telling-game-opening-ritual&#x2F;&quot;&gt;CATS&lt;&#x2F;a&gt;, I set expectations: mainly to put heavier topics like war, slavery, violence, and oppression on the table. I also introduced the structure for the three-episode story:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Episode 1: Establishing the world in a somewhat &quot;classic&quot; one-shot&lt;&#x2F;li&gt;
&lt;li&gt;Episode 2: Establishing the main conflict and ending on a cliff-hanger&lt;&#x2F;li&gt;
&lt;li&gt;Episode 3: Resolution&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;the-story&quot;&gt;The Story&lt;&#x2F;h2&gt;
&lt;p&gt;Reading TTRPG stories of strangers can be boring, so feel free to skip to &lt;a href=&quot;https:&#x2F;&#x2F;blog.optional.page&#x2F;misc&#x2F;lf&#x2F;#the-conclusion&quot;&gt;the conclusion&lt;&#x2F;a&gt; for some takeaways.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;episode-one&quot;&gt;Episode One&lt;&#x2F;h3&gt;
&lt;p&gt;Aboard the ship &quot;Golem&quot; we meet our three main characters:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Reistrud Zeral&lt;&#x2F;em&gt;, a time traveller here for his own hidden reasons. He got aboard through some time-travel hijinks where he forged his own papers in the future.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;em&gt;James Hubble&lt;&#x2F;em&gt;, an envoy of the Consortium. This position uses religious imagery like robes and rituals. He&#x27;s also sworn to celibacy—at least for his time in office. A journalist is producing a documentary on him and his work, which is why he&#x27;s currently carrying a body cam.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;em&gt;Bog&lt;&#x2F;em&gt;, a weapons expert, currently employed as bodyguard to James. She&#x27;s a non-human with blue skin and a third eye on her forehead.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Consul &lt;em&gt;Kiev&lt;&#x2F;em&gt; sends an urgent message to this crew to investigate the planet Zeta3. The Alliance—a much smaller association than the powerful Consortium—has been buying more iron than the Consortium permits. This surplus is suspected to be located on Zeta3.&lt;&#x2F;p&gt;
&lt;p&gt;The crew arrive on Zeta3 and are greeted by &lt;em&gt;Zen&lt;&#x2F;em&gt;, an important figure in the Alliance. They are shown the iron-working facility, which—at first glance—seems to be in order.
With the help of a distraction by James, though, Bog and Reistrud find a secret second level below ground where weapons are being manufactured. When James&#x27; distraction is found out, he, with the words &quot;This may not be diplomatic,&quot; gives Zen an uppercut and knocks him out. Zen still manages to fire his pistol, which wrecks some critical systems of the facility, starting a chain reaction that sets the whole facility on a path to blow in a few minutes.&lt;&#x2F;p&gt;
&lt;p&gt;The workers of the facility start escaping through the escape pods, which fling themselves onto a neighbouring moon. The crew decide to save the knocked-out Zen by putting him into an escape pod before entering pods themselves and making it back to the Golem.&lt;&#x2F;p&gt;
&lt;p&gt;Aboard the ship, James realizes that the journalist has clipped the uppercut from his live stream and it&#x27;s gone viral. Reistrud whispers coordinates in time and space to Bog before disappearing through time.&lt;&#x2F;p&gt;
&lt;p&gt;During the credits&#x2F;epilogue, a creature twice the size of a human with superhuman strength is teased.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;episode-two&quot;&gt;Episode Two&lt;&#x2F;h3&gt;
&lt;p&gt;While the relationship between the Consortium and the Alliance is still strained, nothing can be done about it. James can&#x27;t be trusted and has overstepped many lines with his violent outburst. For this he&#x27;s also been relieved of his office and his status as a citizen of the Consortium.
He&#x27;s fled to Doron, a planet controlled by neither faction, full of criminals and fugitives. James has spent six months here trying to use his diplomacy skills to work his way up to find a way off the planet.&lt;&#x2F;p&gt;
&lt;p&gt;As we rejoin him six months after the events of the last episode, he&#x27;s trying to buy a spaceship that&#x27;s still registered with the Consortium. Just then the hangar is attacked by rebels. Simultaneously, the Golem crashes into the hangar&#x27;s roof.&lt;&#x2F;p&gt;
&lt;p&gt;This is the place and time Reistrud had given Bog. She jumps out of the Golem, runs through the battlefield, and grabs James off the floor. When they can&#x27;t make it back to the Golem, they instead get into a random ship parked here. They lift off and flee to the &quot;dark spot&quot; on the backside of the planet, instructing Golem&#x27;s AI to follow them.&lt;&#x2F;p&gt;
&lt;p&gt;Out of immediate danger, they land in the freezing wasteland of Doron&#x27;s dark spot. Plans to switch back to the Golem to get off-planet are thrown off when the ice below their feet gives way, sending them tumbling through the ice into a tunnel system. Following the tunnels down into the warmth, they find it lit by torches and end up on a balcony overlooking a ballroom.&lt;&#x2F;p&gt;
&lt;p&gt;They observe 21 pairs of Alliance civilians dancing to music emitted from four stone statues at the sides of the ballroom. At the far end, a priest is performing a sacrificial ritual at an altar. James remembers rumours of a &quot;Syndicate Z,&quot; a secret outgrowth of the Alliance rumoured to be based on Doron. The sacrificed creature confirms another rumour: it&#x27;s a Grobgron—a humanoid creature twice the size of a human.&lt;&#x2F;p&gt;
&lt;p&gt;Unnoticed by the people inside the ballroom, Bog and James make their way around the top floor and reach the central communications room. They split up as Bog calls for help from the Golem while James goes through the log of past communications. He finds out that important people from both the Consortium and the Alliance have had secret meetings here, cooperating in the shadows. One of them turns out to be Consul Kiev.&lt;&#x2F;p&gt;
&lt;p&gt;While James discovers this widespread corruption and secret cooperation, he unwittingly sends a &quot;Reply All&quot; message into space through an open microphone, which captured his mumblings to himself.&lt;&#x2F;p&gt;
&lt;p&gt;Golem promises to pick up Bog and James, but it can only get them at the centre of the ballroom. Of course, the statues come alive and try to stop the two from reaching the Golem. They&#x27;re partly successful as Bog makes it back on the ship while James is captured by Syndicate Z.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;episode-three&quot;&gt;Episode Three&lt;&#x2F;h3&gt;
&lt;p&gt;Bog commands the Golem to return for James, but Golem refuses as a meteoroid is quickly approaching. Someone, apparently unhappy with James&#x27; message, had flung it at the origin of the signal. The command centre ordering this strike was quickly blown up itself and a warring front formed between Alliance and Consortium.&lt;&#x2F;p&gt;
&lt;p&gt;James had, of course, survived and two weeks after the events of episode two made his way to a moon of Doron. Here, he sent a signal to Bog and the Golem requesting to meet at his childhood home on Marango.&lt;&#x2F;p&gt;
&lt;p&gt;Consul Kiev, in charge of the Zeta system, had trouble mobilizing his troops for the war at his front door. He thus required higher-ranking soldiers to whip civilians into shape to fight at the front, Bog among them. When she got James&#x27; message, she immediately deserted and made her way to Marango.&lt;&#x2F;p&gt;
&lt;p&gt;James had a tough time travelling through the war-torn system and, while hitching a ride, met another envoy, &lt;em&gt;Ellie&lt;&#x2F;em&gt;, who recognized him. Because Ellie was the reason James had been thrown out of his first school, she felt she owed him one. She promised to set up an audience with Prince Delphi, ruler of Marango and a rank up from Kiev but still below the King of the Consortium. Ellie obviously couldn&#x27;t set up the audience for James directly, as he was a fugitive, so she instead opted to set it up in her own name.&lt;&#x2F;p&gt;
&lt;p&gt;James and Bog meet up at James&#x27; childhood home and pick up a book from James&#x27; father, who had been an army general. They travel to Delphi&#x27;s palace and enter her throne room under the guise of Bog being Ellie and James being her guard. They&#x27;re shocked to find Kiev demanding military support from Delphi. When he becomes suspicious of Bog-as-&quot;Ellie&quot; for messing up some royal ritual, she strikes him down unconscious.&lt;&#x2F;p&gt;
&lt;p&gt;Delphi recognizes James and turns out to be sympathetic to their cause. She explains that the Alliance and Consortium are two sides of the same coin: the Alliance was conceived as an external threat to keep the people in the Consortium submissive and docile. While not everyone in important offices on either side might know this, there are enough people in the know for her herself to be powerless, even though she is one of the twenty Princes.&lt;&#x2F;p&gt;
&lt;p&gt;Going through James&#x27; dad&#x27;s book, Bog finds a military manoeuvre that might help them. They use Kiev&#x27;s equipment to send that command to both sides, which causes them to regroup at a rallying point. This way, both fronts retreat and cease fire for the time being.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;the-conclusion&quot;&gt;The Conclusion&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;the-play-by-play&quot;&gt;The Play-by-Play&lt;&#x2F;h3&gt;
&lt;p&gt;Episode one was pretty much what I&#x27;d hoped. We had established some religious themes, the Consortium vs. Alliance conflict, and gotten to know our characters, all while still telling a pretty classic Lasers &amp;amp; Feelings story. I was surprised and excited that a silly minor detail (James&#x27; body cam) would turn out to enable far-reaching consequences for that uppercut in the end. While originally only one of the players was up for all three sessions, this unexpected cliffhanger motivated the other two (one of whom successfully) to try to make it to the other two sessions as well.&lt;&#x2F;p&gt;
&lt;p&gt;In episode two, it took a while for me to find a plot. But once the characters were in the cave and I had &lt;em&gt;Indiana Jones and the Temple of Doom&lt;&#x2F;em&gt; in my head, we got the ball rolling (pun not intended). Syndicate Z and the Grobgron were ideas of the players when I asked them about rumours of Doron&#x27;s dark spot.
The &quot;success with complication&quot; for looking through the computer terminal leading to the &quot;Reply All&quot; was another incredible cliffhanger. That player later even sent that voice message into the group chat, making us hyped for the finale.&lt;&#x2F;p&gt;
&lt;p&gt;For the third episode I had different options of where we could go: another breaking-James-out-of-trouble episode, delivering a document, infiltrating the enemy, or stopping the war. After choosing the latter option, we quickly got into the flow and established a lot of James&#x27; backstory through his home and his meeting with Ellie.
We had a short hiccup when the PCs asked Delphi how to stop the war. As per the game mechanics, she should&#x27;ve known, since she was the answer to the Laser-Feelings question &quot;Who do we need to talk to stop this war?,&quot; but she couldn&#x27;t simply stop the war for multiple reasons. First of all, I can&#x27;t have an NPC deliver the plot resolution to the PCs. Secondly, the rest of the story was too realistic for Delphi to present a naïve solution like killing the King or Kiev, or offering a truce or whatever else. Instead, she gave the PCs information on the conflict and we together came up with the solution I described above. I was happy with that because it&#x27;s just a good short-term solution to stop people dying, but it also doesn&#x27;t simply resolve everything wrong with the Consortium or even just this conflict.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;the-learned&quot;&gt;The Learned&lt;&#x2F;h3&gt;
&lt;p&gt;Overall, what surprised me most was how my view of the Consortium shifted. In the beginning they&#x27;re just the employers of the PCs as per the rule page. It then was contrasted with the much smaller Alliance which it kind of also ruled over by regulating their trade and weapons manufacturing.
Then it turned out they had at least some corruption going on with Kiev working both sides. Only in the moment when I-as-Delphi said it did I myself finally realize that the Alliance is a creation of the Consortium.&lt;&#x2F;p&gt;
&lt;p&gt;While I expected some challenge in telling a compelling and cohesive story in this system, I did not expect to have to describe and solve corruption in a (seemingly?) democratic organization.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;the-end&quot;&gt;The End&lt;&#x2F;h3&gt;
&lt;p&gt;Overall, I&#x27;m immensely happy with how this turned out. I did indeed hit all the goals that I&#x27;d set myself when planning this mini-campaign. I ran with zero prep and it was incredible to find out the story together with my players. Tonally we also stayed exactly where I wanted to be: A serious and challenging story, but still lots of funny breather moments and quirky characters.&lt;&#x2F;p&gt;
</content>
    </entry><entry xml:lang="en">
        <title>That Username Is Taken</title>
        <published>2022-09-26T22:25:23+00:00</published>
        <updated>2022-09-26T22:25:23+00:00</updated>
        <author><name>Optional</name></author>
        <link rel="alternate" type="text/html" href="https://blog.optional.page/misc/that-username-is-taken/"/>
        <id>https://blog.optional.page/misc/that-username-is-taken/</id>
        <content type="html" xml:base="https://blog.optional.page/misc/that-username-is-taken/">
        &lt;p&gt;The longer a website exists the less usernames are still available on it. Also, the internet population is growing and everyone&#x27;s taking up some usernames here and there. Of course, having &lt;em&gt;no&lt;&#x2F;em&gt; usernames left is not a real threat, but not having the one you had on that other site available is quite possible.&lt;&#x2F;p&gt;
&lt;span id=&quot;continue-reading&quot;&gt;&lt;&#x2F;span&gt;
&lt;p&gt;Getting matching Twitter&#x2F;Instagram&#x2F;TikTok handles and a Gmail address is pretty tough these days if you don&#x27;t want to be called &lt;code&gt;Cp5Ndkgu&lt;&#x2F;code&gt; on all of them. And if you start out with some cool username on one platform and later find out it&#x27;s taken on another you have to start adding &lt;code&gt;x&lt;&#x2F;code&gt;&#x27;s, &lt;code&gt;69&lt;&#x2F;code&gt;&#x27;s and &lt;code&gt;_&lt;&#x2F;code&gt;&#x27;s at the start, middle and end.&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-1-1&quot;&gt;&lt;a href=&quot;#fn-1&quot;&gt;1&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt; And then you end up needing a linktr.ee to direct people between all your accounts.&lt;&#x2F;p&gt;
&lt;p&gt;So here&#x27;s what we want from our username:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Impersonal: I didn&#x27;t mention this before, but I&#x27;m assuming you don&#x27;t want to dox yourself by using your full legal name or SSN as a username.&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-2-1&quot;&gt;&lt;a href=&quot;#fn-2&quot;&gt;2&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Memorability: It should be something we – and more importantly our friends&#x2F;fans&#x2F;acquaintances – can easily remember&lt;&#x2F;li&gt;
&lt;li&gt;Non-Obvious: To prevent it from being already in use by others it has to be something non obvious. So nothing based on human names (&lt;code&gt;johnD&lt;&#x2F;code&gt;) and no conventional usernames (&lt;code&gt;xXSlayer69Xx&lt;&#x2F;code&gt;)&lt;&#x2F;li&gt;
&lt;li&gt;Cool: It should be something you can be proud of when your post hits the news. No &quot;User &lt;code&gt;johnyoloswagbrah&lt;&#x2F;code&gt; posted this picture from inside the bean volcano.&quot;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;what-to-do&quot;&gt;What To Do?&lt;&#x2F;h2&gt;
&lt;p&gt;Quick detour: On the platform side I think it&#x27;s pretty cool what Discord&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-3-1&quot;&gt;&lt;a href=&quot;#fn-3&quot;&gt;3&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt; is doing: Everybody gets the name they want, but a random four digit number is added at the end (&lt;code&gt;John#1234&lt;&#x2F;code&gt;). That number is only rarely displayed and when it is displayed, it&#x27;s greyed out. Everyone gets their username of choice while still being uniquely identifiable.&lt;&#x2F;p&gt;
&lt;p&gt;Okay, but what can &lt;em&gt;you&lt;&#x2F;em&gt; as a user do? Well, the attentive reader might have already spotted that the requirements are pretty similar to those of a password. And I would thus propose to come up with a username the same &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;xkcd.com&#x2F;936&#x2F;&quot;&gt;way you generate the password to your password manager&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Use a random word generator to come up with a random 2 to 3 word phrase: &lt;code&gt;SeasonalDivision&lt;&#x2F;code&gt;, &lt;code&gt;DramaticCrosswalk&lt;&#x2F;code&gt;, &lt;code&gt;SmallDayEcho&lt;&#x2F;code&gt;, &lt;code&gt;SummitFuneral&lt;&#x2F;code&gt;...
These examples are so cool already, I&#x27;m tempted to make accounts for them just to squat on the names!&lt;&#x2F;p&gt;
&lt;p&gt;For any service requiring a username that&#x27;s not visible to other users, like some e-shops, or on services where you don&#x27;t care about people&#x27;s ability to discover your account consider using a random string like what your password generator spits out. When I still used Spotify my account was something like &lt;code&gt;73T7VgmV8pyektJGxMj9&lt;&#x2F;code&gt;. Your password manager has got the username and password saved anyway, so why even look for something readable?&lt;&#x2F;p&gt;
&lt;h2 id=&quot;the-real-solution&quot;&gt;The Real Solution&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;smarturl.it&#x2F;QuittingSocialMedia&quot;&gt;You actually don&#x27;t need any social media&lt;&#x2F;a&gt;. Get a &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;sive.rs&#x2F;com&quot;&gt;cool domain&lt;&#x2F;a&gt; and get your own email address on that domain. And if you do want some social media, host your own instances of all the federated social media platforms (like Mastodon) and you have literally &lt;em&gt;all&lt;&#x2F;em&gt; the usernames to yourself.&lt;&#x2F;p&gt;
&lt;section class=&quot;footnotes&quot;&gt;
&lt;ol class=&quot;footnotes-list&quot;&gt;
&lt;li id=&quot;fn-1&quot;&gt;
&lt;p&gt;A trick that worked about a decade ago was to add a single &lt;code&gt;0&lt;&#x2F;code&gt; at the end since most other people would start counting from &lt;code&gt;1&lt;&#x2F;code&gt; up (&lt;code&gt;john1&lt;&#x2F;code&gt;, &lt;code&gt;john2&lt;&#x2F;code&gt;, etc.). &lt;a href=&quot;#fr-1-1&quot;&gt;↩&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li id=&quot;fn-2&quot;&gt;
&lt;p&gt;Although I have noticed that people &lt;em&gt;are&lt;&#x2F;em&gt; moving to this model. The days of &quot;Don&#x27;t post any personally identifiable information online&quot; seem to be somewhat over. &lt;a href=&quot;#fr-2-1&quot;&gt;↩&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li id=&quot;fn-3&quot;&gt;
&lt;p&gt;and Battle.Net if I&#x27;m not mistaken? &lt;a href=&quot;#fr-3-1&quot;&gt;↩&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;&#x2F;section&gt;
</content>
    </entry><entry xml:lang="en">
        <title>The Unlikable &quot;Heroes&quot; of «Belle» (2021)</title>
        <published>2022-09-26T21:08:25+00:00</published>
        <updated>2022-09-26T21:08:25+00:00</updated>
        <author><name>Optional</name></author>
        <link rel="alternate" type="text/html" href="https://blog.optional.page/misc/belle/"/>
        <id>https://blog.optional.page/misc/belle/</id>
        <content type="html" xml:base="https://blog.optional.page/misc/belle/">
        &lt;p&gt;Only the latest 20 posts have full text in this RSS Feed. Please visit the site to read this post.&lt;&#x2F;p&gt;</content>
    </entry><entry xml:lang="en">
        <title>An Optional Intro to Pen and Paper</title>
        <published>2022-09-13T14:50:42+00:00</published>
        <updated>2022-09-13T14:50:42+00:00</updated>
        <author><name>Optional</name></author>
        <link rel="alternate" type="text/html" href="https://blog.optional.page/misc/pnp-intro/"/>
        <id>https://blog.optional.page/misc/pnp-intro/</id>
        <content type="html" xml:base="https://blog.optional.page/misc/pnp-intro/">
        &lt;p&gt;Only the latest 20 posts have full text in this RSS Feed. Please visit the site to read this post.&lt;&#x2F;p&gt;</content>
    </entry><entry xml:lang="en">
        <title>Learning in Life, as Seen in «Boss Level» (2021)</title>
        <published>2022-08-08T18:00:59+00:00</published>
        <updated>2022-08-08T18:00:59+00:00</updated>
        <author><name>Optional</name></author>
        <link rel="alternate" type="text/html" href="https://blog.optional.page/misc/boss-level/"/>
        <id>https://blog.optional.page/misc/boss-level/</id>
        <content type="html" xml:base="https://blog.optional.page/misc/boss-level/">
        &lt;p&gt;Only the latest 20 posts have full text in this RSS Feed. Please visit the site to read this post.&lt;&#x2F;p&gt;</content>
    </entry><entry xml:lang="en">
        <title>An diesem Film ist nichts «Wunderschön» (2022)</title>
        <published>2022-02-19T00:08:14+00:00</published>
        <updated>2022-02-19T00:08:14+00:00</updated>
        <author><name>Optional</name></author>
        <link rel="alternate" type="text/html" href="https://blog.optional.page/misc/wunderschon/"/>
        <id>https://blog.optional.page/misc/wunderschon/</id>
        <content type="html" xml:base="https://blog.optional.page/misc/wunderschon/">
        &lt;p&gt;Only the latest 20 posts have full text in this RSS Feed. Please visit the site to read this post.&lt;&#x2F;p&gt;</content>
    </entry><entry xml:lang="en">
        <title>&quot;Immoral Behaviour Is Good, Actually,&quot; Says Professional Ethicist</title>
        <published>2022-02-05T10:09:37+00:00</published>
        <updated>2022-02-05T10:09:37+00:00</updated>
        <author><name>Optional</name></author>
        <link rel="alternate" type="text/html" href="https://blog.optional.page/misc/immoral-behaviour/"/>
        <id>https://blog.optional.page/misc/immoral-behaviour/</id>
        <content type="html" xml:base="https://blog.optional.page/misc/immoral-behaviour/">
        &lt;p&gt;Only the latest 20 posts have full text in this RSS Feed. Please visit the site to read this post.&lt;&#x2F;p&gt;</content>
    </entry><entry xml:lang="en">
        <title>Meeting Up At Your Password</title>
        <published>2022-01-25T15:02:17+00:00</published>
        <updated>2022-01-25T15:02:17+00:00</updated>
        <author><name>Optional</name></author>
        <link rel="alternate" type="text/html" href="https://blog.optional.page/misc/meeting-up-at-your-password/"/>
        <id>https://blog.optional.page/misc/meeting-up-at-your-password/</id>
        <content type="html" xml:base="https://blog.optional.page/misc/meeting-up-at-your-password/">
        &lt;p&gt;Only the latest 20 posts have full text in this RSS Feed. Please visit the site to read this post.&lt;&#x2F;p&gt;</content>
    </entry><entry xml:lang="en">
        <title>Experiencing Personal Progress</title>
        <published>2022-01-12T00:00:00+00:00</published>
        <updated>2022-01-12T00:00:00+00:00</updated>
        <author><name>Optional</name></author>
        <link rel="alternate" type="text/html" href="https://blog.optional.page/misc/experiencing-personal-progress/"/>
        <id>https://blog.optional.page/misc/experiencing-personal-progress/</id>
        <content type="html" xml:base="https://blog.optional.page/misc/experiencing-personal-progress/">
        &lt;p&gt;Only the latest 20 posts have full text in this RSS Feed. Please visit the site to read this post.&lt;&#x2F;p&gt;</content>
    </entry><entry xml:lang="en">
        <title>A Critique Of The New Pokémon Short</title>
        <published>2022-01-11T00:00:00+00:00</published>
        <updated>2022-01-11T00:00:00+00:00</updated>
        <author><name>Optional</name></author>
        <link rel="alternate" type="text/html" href="https://blog.optional.page/misc/pokemon-short/"/>
        <id>https://blog.optional.page/misc/pokemon-short/</id>
        <content type="html" xml:base="https://blog.optional.page/misc/pokemon-short/">
        &lt;p&gt;Only the latest 20 posts have full text in this RSS Feed. Please visit the site to read this post.&lt;&#x2F;p&gt;</content>
    </entry><entry xml:lang="en">
        <title>How do you experience progress in your life?</title>
        <published>2022-01-01T00:00:00+00:00</published>
        <updated>2022-01-01T00:00:00+00:00</updated>
        <author><name>Catking</name></author>
        <link rel="alternate" type="text/html" href="https://blog.optional.page/misc/catking-progress/"/>
        <id>https://blog.optional.page/misc/catking-progress/</id>
        <content type="html" xml:base="https://blog.optional.page/misc/catking-progress/">
        &lt;p&gt;Only the latest 20 posts have full text in this RSS Feed. Please visit the site to read this post.&lt;&#x2F;p&gt;</content>
    </entry><entry xml:lang="en">
        <title>What Is This Blog?</title>
        <published>2022-01-01T00:00:00+00:00</published>
        <updated>2022-01-01T00:00:00+00:00</updated>
        <author><name>Optional</name></author>
        <link rel="alternate" type="text/html" href="https://blog.optional.page/misc/what-is-this-blog/"/>
        <id>https://blog.optional.page/misc/what-is-this-blog/</id>
        <content type="html" xml:base="https://blog.optional.page/misc/what-is-this-blog/">
        &lt;p&gt;Only the latest 20 posts have full text in this RSS Feed. Please visit the site to read this post.&lt;&#x2F;p&gt;</content>
    </entry>
</feed>
