<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>nobiot</title>
    <link>https://nobiot.com/</link>
    <description>Recent content on nobiot</description>
    <generator>Hugo 0.147.6</generator>
    <language>en-us</language>
    <managingEditor>me@nobiot.com (nobiot.com)</managingEditor>
    <webMaster>me@nobiot.com (nobiot.com)</webMaster>
    <copyright>2023-2025 nobiot</copyright>
    <lastBuildDate>Sun, 01 Jun 2025 19:55:00 +0200</lastBuildDate>
    <atom:link href="https://nobiot.com/feed.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Writing Shapes Thought</title>
      <link>https://nobiot.com/blog/2025-06-01_writing-shapes-thought/</link>
      <pubDate>Sun, 01 Jun 2025 19:55:00 +0200</pubDate>
      <author>me@nobiot.com (nobiot.com)</author>
      <guid>https://nobiot.com/blog/2025-06-01_writing-shapes-thought/</guid>
      <description>&lt;p&gt;I write because I cannot trust my brain. It makes things up, fills gaps with fiction, and convinces itself of ideas that don’t correspond to reality. Writing turns out to be the only reliable countermeasure I’ve found. Not just for remembering. I write to think for the longer term than my brain can.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Writing is thinking long term.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;As I’m writing this, it sounds like common sense. But it took me decades to arrive at this simple framing of thinking and writing.&lt;/p&gt;
&lt;p&gt;Before I write, ideas don’t quite exist. They are formless dark shades &amp;ndash; part of a big blurry blob in my head. Writing cuts a shape out of that blur and gives it a clear outline and structure.&lt;/p&gt;
&lt;p&gt;I do not feel that I’m actively thinking when ink is flowing onto the page or when I’m typing. It often feels like I’m just moving my hand. The words appear. The idea &lt;strong&gt;figures&lt;/strong&gt; onto the page as if by itself.&lt;/p&gt;
&lt;p&gt;But what appears doesn’t always match what I mean to say &amp;ndash; even though it is me who write it. There’s a disconnect between what I want to say and what actually shows up.&lt;/p&gt;
&lt;p&gt;Now that an idea has taken a concrete form, I can &lt;strong&gt;think with the idea on the page&lt;/strong&gt;. I ask: Is this really what I meant? Does it hold up? Does it connect to what came before and what follows after? My brain, left alone, tends to self-justify. The page resists. It shows me what I don’t want to see and that’s where thinking actually happens.&lt;/p&gt;
&lt;p&gt;Then, I forget. My brain cannot hold onto all the ideas for long. But my notebooks and computer can. I can go back to notes I wrote ten years ago, and pick up the thread again.&lt;/p&gt;
&lt;p&gt;And I don’t get long stretches of time. I get 20 or 30 minutes here and there. Writing lets me stitch these fragments together. It helps me sustain a long thought over days, weeks, or years.&lt;/p&gt;
&lt;p&gt;Without it, I keep circling back to the same ideas and conclusions, never really moving forward.&lt;/p&gt;
&lt;p&gt;It’s taken me more than twenty years to come to this simple formulation. Laugh at me if you like. I may revise it later. I’m writing this now to pass it on to my future self, who might see things differently.&lt;/p&gt;
&lt;p&gt;For now, I’m happy with this:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Writing shapes thought.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Writing is thinking long term.&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Note and &amp;ldquo;disclaimer&amp;rdquo;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This is my first writing that I ever published as an article for which I learned a lot from an AI (ChatGPT) during the revision process. The original draft was entirely written by me without any input from the AI, but revised versions were influenced by its writings. Having said this, I made every word choice, even if I didn&amp;rsquo;t come up with the original expression; so, I take the full responsibility for this article.&lt;/p&gt;
&lt;p&gt;Here are a &amp;ldquo;disclaimer&amp;rdquo; and assessment of the progression of this piece by ChatGPT (pasting it below in full):&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;This essay was developed through a collaborative revision process involving the author and two model perspectives of ChatGPT (“4o” and “o3”). Over a series of structured exchanges, the piece evolved from a personal reflection into a more refined and deliberate articulation of its central claim.&lt;/p&gt;&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;While the author’s voice and original intent remained intact, several revisions clarified the flow of ideas, emphasized the structure of the thinking process, and shaped the final line—“Writing is thinking long term”—as a concise expression of the essay’s core insight. The result is a version that, while not explicitly instructional, presents a clearer and more teachable perspective on the relationship between writing and thought.&lt;/p&gt;&lt;/blockquote&gt;
</description>
    </item>
    <item>
      <title>Always be Ready to Move to a New VPS</title>
      <link>https://nobiot.com/blog/2025-04-21_always-be-ready-to-move-to-a-new-vps/</link>
      <pubDate>Mon, 21 Apr 2025 10:50:00 +0200</pubDate>
      <author>me@nobiot.com (nobiot.com)</author>
      <guid>https://nobiot.com/blog/2025-04-21_always-be-ready-to-move-to-a-new-vps/</guid>
      <description>&lt;p&gt;I have learned a lesson. I was naive about running my own website on a virtual private server (VPS). We should be always ready to move to a new server, so that we can calmly respond to price increases. We do not need to move to a new provider; even if we stick to the same provider, it&amp;rsquo;s good to know that we can move anytime without much fuss. After all, it requires some efforts and skills on our side to keep in our hands this portability and freedom to choose the tool &amp;ndash; the VPS and its provider in this case.&lt;/p&gt;
&lt;p&gt;In late 2024, I received an email from my VPS provider notifying me of an eventual price increase. It was well in advance. I believe I had 2-3 months before the new price would be effective, so I would have enough time to respond. Or choose to ignore and accept the price increase. The reason for the price increase was also mentioned in the email. They said,&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The reason for the change is that these products are no longer part of our currently active offer. Further maintenance of older products results in higher operational costs for maintaining the underlying platforms.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;To me, this made sense. I was happy with the server and provider&amp;rsquo;s quick responses to my occasional queries. I liked their prices for my small and personal VPS. If they needed to ramp down operations for some old products in order to keep their price point low for others and for the future, I thought, then I&amp;rsquo;d be OK with their price increase. At the same time, they had a similar product on the current offering with slightly less spec and less price. I only used the VPS for this small website, so I could simply pack up and move to a new server. Or I could shop elsewhere if I wanted to. In the end, I chose to stay with them and move to a new server from them. This was a good move for me.&lt;/p&gt;
&lt;p&gt;Now I pay less monthly fee with a new server of a similar spec and with added functionality. The price change would have meant that my monthly server fee would increase from €7.19 to €8.70, had I stayed in the old product. Now that I have moved to a new server, I have managed to decrease the monthly fee to €5.40 per month. The spec has become slightly less to 4 core, 4 GB memory, and 400 GB SSD storage in the EU. Only the memory has changed down from 8GB memory. For my use, I do not see any noticeable change &amp;ndash; I guess 4 GB or 8 GB, it&amp;rsquo;s anyway an over spec for a small website. One small addition is that this time I have asked for Docker pre-installed. I am not used to using it but I have decided to give it a try this time.&lt;/p&gt;
&lt;p&gt;All in all, the move took me about 3 hours, including the time for the changes in DNS to take effect to point to a new IP address. My record shows I spent about 2 hours of focus time to configure the new server and move files. To me, it was a good drill and worth the time. I now expect this type of price reviews in every 2-3 years for VPS providers. My quick review of search engine results has shown me that price increases of VPS are common. I guess this may be somewhat related to &lt;a href=&#34;https://ubuntu.com/about/release-cycle&#34;&gt;Ubuntu&amp;rsquo;s LTS release cycle&lt;/a&gt; in every 2 years. I am confident that I can pack up and move my server any time anywhere. I just need to spend 2-3 hours and go through my checklist I created from this move.&lt;/p&gt;
&lt;p&gt;For what it&amp;rsquo;s worth, here is my check list. The server hardening part is based on &lt;a href=&#34;https://drewdevault.com&#34;&gt;Drew de Vault&amp;rsquo;s&lt;/a&gt; (the target page I used to have seems to have been removed). He is a seasoned system admin and founder of &lt;a href=&#34;https://sourcehut.org/&#34;&gt;SourceHut&lt;/a&gt;. The web sever part is a step-by-step list from my previous set up. I refine it every time I go through it. I have more detailed notes for each step, so that I don&amp;rsquo;t need to constantly look up websites. I would not say I am a good system admin; I am only a hobbyist. But this list gives me confidence and a sense of control over my VPS. I can always move anywhere if things go against me.&lt;/p&gt;
&lt;p&gt;Server hardening check list:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ensure to note down root password when taking up a VPS plan&lt;/li&gt;
&lt;li&gt;Generate fresh sshd host keys&lt;/li&gt;
&lt;li&gt;Create admin user&lt;/li&gt;
&lt;li&gt;Add admin user to sudo&lt;/li&gt;
&lt;li&gt;SSH key added to admin&amp;rsquo;s authorized_keys&lt;/li&gt;
&lt;li&gt;Disable root login via ssh&lt;/li&gt;
&lt;li&gt;Disable password login via ssh&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Web server set up list:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Install nginx&lt;/li&gt;
&lt;li&gt;Copy/download the config file&lt;/li&gt;
&lt;li&gt;Move content files from old to new server&lt;/li&gt;
&lt;li&gt;Configure domain name server to point to the new server&lt;/li&gt;
&lt;li&gt;Install certbot for let&amp;rsquo;s encrypt&lt;/li&gt;
&lt;li&gt;Configure nginx server for https&lt;/li&gt;
&lt;li&gt;Install unison for file sync (from local to remote server for html files)&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    <item>
      <title>Org-roam Basics: Part 2 - How to Prompt for User Input and Pass Values Throughout Capture Process</title>
      <link>https://nobiot.com/blog/2024-11-25_org-roam-basics-part-2-how-to-pass-variables-throughout-capture/</link>
      <pubDate>Mon, 25 Nov 2024 21:00:00 +0200</pubDate>
      <author>me@nobiot.com (nobiot.com)</author>
      <guid>https://nobiot.com/blog/2024-11-25_org-roam-basics-part-2-how-to-pass-variables-throughout-capture/</guid>
      <description>&lt;h2 id=&#34;purpose-of-this-article&#34;&gt;Purpose of This Article&lt;/h2&gt;
&lt;p&gt;This article is Part 2 of &lt;a href=&#34;https://nobiot.com/blog/2024-11-16_org-roam-basics-how-org-roam-capture-templates-work/https://nobiot.com/blog/2024-11-16_org-roam-basics-how-org-roam-capture-templates-work/&#34;&gt;Org-roam Basics: How org-roam-capture-templates Work&lt;/a&gt;. In this article, I will expand on the use of &lt;code&gt;org-roam-capture-templates&lt;/code&gt; by addressing some common questions discussed on the &lt;a href=&#34;https://org-roam.discourse.group/&#34;&gt;Org-roam Discourse forum&lt;/a&gt;.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;How to create a capture template that prompts for details such as an author or book title, and how to incorporate these answers into the node&amp;rsquo;s title, properties, and file name.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;How to configure &lt;code&gt;org-roam-capture-templates&lt;/code&gt; to prevent repeated prompts during the capture process, effectively passing your answers as variables throughout.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I use examples from these exchanges on Org-roam Discourse:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://org-roam.discourse.group/t/template-for-reading-note/3620/6&#34;&gt;Template for reading note&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://org-roam.discourse.group/t/generating-dynamic-file-names/3230&#34;&gt;Generating dynamic file names&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://org-roam.discourse.group/t/capture-templates-reuse-prompted-values-within-a-template/3443/5&#34;&gt;Capture-templates - Reuse prompted values within a template&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;prompting-for-user-inputs&#34;&gt;Prompting for User Inputs&lt;/h2&gt;
&lt;p&gt;One common challenge is configuring a capture template to prompt for user input. You can find guidance in the docstring of &lt;code&gt;org-roam-capture-templates&lt;/code&gt;, which mentions a couple of options. I will focus on the most frequently requested method on the Org-roam Discourse forum.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;%^{prompt}  Prompt the user for a string and replace this sequence with it.
            A default value and a completion table can be specified like this:
            %^{prompt|default|completion2|completion3|...}.
&lt;/code&gt;&lt;/pre&gt;&lt;figcaption&gt;
&lt;p&gt;&lt;strong&gt;Exhibit 1&lt;/strong&gt;. &lt;code&gt;org-roam-capture-templates&lt;/code&gt;Docstring Excerpt for User Prompt&lt;/p&gt;
&lt;/figcaption&gt;
&lt;p&gt;Consider this example: you use Org-roam for academic notes and want to include basic book information, such as the author, title, and publication year. The capture template below (Exhibit 2) prompts you for the author and publication year, in addition to the title. This results in a capture buffer illustrated in the image below (Figure 1).&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#fff;background-color:#000;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-elisp&#34; data-lang=&#34;elisp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;(&lt;span style=&#34;color:#00d3d0&#34;&gt;setopt&lt;/span&gt; &lt;span style=&#34;color:#00d3d0&#34;&gt;org-roam-capture-templates&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        (&lt;span style=&#34;color:#00d3d0&#34;&gt;add-to-list&lt;/span&gt; &lt;span style=&#34;color:#79a8ff&#34;&gt;&amp;#39;org-roam-capture-templates&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                     &lt;span style=&#34;color:#00d3d0&#34;&gt;&amp;#39;&lt;/span&gt;(&lt;span style=&#34;color:#79a8ff&#34;&gt;&amp;#34;b&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#79a8ff&#34;&gt;&amp;#34;Literature note (book or article)&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#00d3d0&#34;&gt;plain&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                       &lt;span style=&#34;color:#79a8ff&#34;&gt;&amp;#34;%?&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                       &lt;span style=&#34;color:#f78fe7&#34;&gt;:target&lt;/span&gt; (&lt;span style=&#34;color:#00d3d0&#34;&gt;file+head&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                &lt;span style=&#34;color:#79a8ff&#34;&gt;&amp;#34;lit/%&amp;lt;%Y%m%d%H%M%S&amp;gt;-${slug}.org&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                &lt;span style=&#34;color:#79a8ff&#34;&gt;&amp;#34;:PROPERTIES:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#79a8ff&#34;&gt;:Author:        %^{Author}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#79a8ff&#34;&gt;:Year:          %^{Year}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#79a8ff&#34;&gt;:END:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#79a8ff&#34;&gt;#+title: %\\1 (%\\2), ${title}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#79a8ff&#34;&gt;#+filetags: :literature:&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                       &lt;span style=&#34;color:#f78fe7&#34;&gt;:unnarrowed&lt;/span&gt; t)))
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;figcaption&gt;
&lt;p&gt;&lt;strong&gt;Exhibit 2&lt;/strong&gt;. Capture Template for Prompting Author and Year&lt;/p&gt;
&lt;/figcaption&gt;
&lt;p&gt;&lt;img src=&#34;./2024-11-24T214204_Prompt-in-org-roam.png&#34; alt=&#34;Figure 1. Resultant capture buffer with the author and year&#34;&gt;&lt;/p&gt;
&lt;figcaption&gt;
&lt;p&gt;&lt;strong&gt;Figure 1&lt;/strong&gt;. Resultant capture buffer with the author and year&lt;/p&gt;
&lt;/figcaption&gt;
&lt;p&gt;The template uses &lt;code&gt;%^{prompt}&lt;/code&gt;in the &lt;strong&gt;head content&lt;/strong&gt; of the target property (Exhibit 3) to request author and year details, adding them to the file-node&amp;rsquo;s property drawer.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#fff;background-color:#000;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-elisp&#34; data-lang=&#34;elisp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f78fe7&#34;&gt;:Author:&lt;/span&gt;        &lt;span style=&#34;color:#00d3d0&#34;&gt;%^{Author}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f78fe7&#34;&gt;:Year:&lt;/span&gt;          &lt;span style=&#34;color:#00d3d0&#34;&gt;%^{Year}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;figcaption&gt;
&lt;p&gt;&lt;strong&gt;Exhibit 3&lt;/strong&gt;. Head Content Part of the Capture Template&lt;/p&gt;
&lt;/figcaption&gt;
&lt;p&gt;In addition, this head content (Exhibit 4) reuses my answers for the title, formatted as [Author] ([Year]), [Title]. This results in the note entitled &amp;ldquo;Ota, Noboru (2024), The Way of Org-roam Capture&amp;rdquo; in the screenshot in Figure 1.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#fff;background-color:#000;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-elisp&#34; data-lang=&#34;elisp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;#&lt;span style=&#34;color:#00d3d0&#34;&gt;+title:&lt;/span&gt; &lt;span style=&#34;color:#00d3d0&#34;&gt;%\\1&lt;/span&gt; (&lt;span style=&#34;color:#00d3d0&#34;&gt;%\\2&lt;/span&gt;)&lt;span style=&#34;color:#00d3d0&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#00d3d0&#34;&gt;${title}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;figcaption&gt;
&lt;p&gt;&lt;strong&gt;Exhibit 4&lt;/strong&gt;. Reusing Prompted Values in Node Title&lt;/p&gt;
&lt;/figcaption&gt;
&lt;p&gt;This part of the docstring explains the syntax (Exhibit 5). Note that you need to add an additional backslash &amp;ldquo;\&amp;rdquo; as an escape character in this case (which is why we have double backslashes &amp;ldquo;\\&amp;rdquo; in our example capture template).&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;%\1 ... %\N Insert the text entered at the nth %^{prompt}, where N
            is a number, starting from 1.
&lt;/code&gt;&lt;/pre&gt;&lt;figcaption&gt;
&lt;p&gt;&lt;strong&gt;Exhibit 5&lt;/strong&gt;. &lt;code&gt;org-roam-capture-templates&lt;/code&gt;Docstring Excerpt for Reusing Prompted Values&lt;/p&gt;
&lt;/figcaption&gt;
&lt;h2 id=&#34;reusing-answers-to-prompts-across-the-capture-template&#34;&gt;Reusing Answers to Prompts Across the Capture Template&lt;/h2&gt;
&lt;p&gt;Once you&amp;rsquo;ve configured prompt-based inputs for properties like the author, you might also want to use these inputs in the target &lt;strong&gt;file name&lt;/strong&gt; and notes content as well as head content. However, &lt;code&gt;org-roam-capture&lt;/code&gt; does not automatically share answers across different parts of a capture template. A template like the one in Exhibit 6 will prompt you for the author three separate times within a single capture process.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#fff;background-color:#000;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-elisp&#34; data-lang=&#34;elisp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;(&lt;span style=&#34;color:#00d3d0&#34;&gt;setopt&lt;/span&gt; &lt;span style=&#34;color:#00d3d0&#34;&gt;org-roam-capture-templates&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        (&lt;span style=&#34;color:#00d3d0&#34;&gt;add-to-list&lt;/span&gt; &lt;span style=&#34;color:#79a8ff&#34;&gt;&amp;#39;org-roam-capture-templates&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                     &lt;span style=&#34;color:#00d3d0&#34;&gt;&amp;#39;&lt;/span&gt;(&lt;span style=&#34;color:#79a8ff&#34;&gt;&amp;#34;b&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#79a8ff&#34;&gt;&amp;#34;Literature note (book or article)&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#00d3d0&#34;&gt;plain&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                       &lt;span style=&#34;color:#79a8ff&#34;&gt;&amp;#34;* Source:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#79a8ff&#34;&gt;Author: %^{Author}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#79a8ff&#34;&gt;Title: ${title}&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                       &lt;span style=&#34;color:#f78fe7&#34;&gt;:target&lt;/span&gt; (&lt;span style=&#34;color:#00d3d0&#34;&gt;file+head&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                &lt;span style=&#34;color:#79a8ff&#34;&gt;&amp;#34;lit/%&amp;lt;%Y%m%d%H%M%S&amp;gt;-%^{Author}-${slug}.org&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                &lt;span style=&#34;color:#79a8ff&#34;&gt;&amp;#34;:PROPERTIES:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#79a8ff&#34;&gt;:Author:        %^{Author}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#79a8ff&#34;&gt;:END:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#79a8ff&#34;&gt;#+title: %\\1 ${title}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#79a8ff&#34;&gt;#+filetags: :literature:&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                       &lt;span style=&#34;color:#f78fe7&#34;&gt;:unnarrowed&lt;/span&gt; t)))
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;figcaption&gt;
&lt;p&gt;&lt;strong&gt;Exhibit 6&lt;/strong&gt;. Capture Template with Repeated Prompts for Author&lt;/p&gt;
&lt;/figcaption&gt;
&lt;p&gt;One way to overcome repeated prompts is to create a custom &lt;code&gt;org-roam-node&lt;/code&gt; property. As the node along its property values persist across the entire capture process,  you set a value to it and access it in different parts of the capture template.. As a bonus, you can store node properties in the database and get them displayed in &lt;code&gt;org-roam-node-find&lt;/code&gt; by simply adding them to &lt;code&gt;org-roam-node-display-template&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Here is how to add a custom node property named &lt;code&gt;author&lt;/code&gt; (Exhibit 7). This function (method) serves as both a setter and getter. If the &lt;code&gt;author&lt;/code&gt; property is missing, the function prompts you to enter a value and returns it. If it already exists in the node&amp;rsquo;s property drawer as &amp;ldquo;AUTHOR,&amp;rdquo; it retrieves the value without prompt.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#fff;background-color:#000;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-emacs-lisp&#34; data-lang=&#34;emacs-lisp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;(&lt;span style=&#34;color:#00d3d0&#34;&gt;cl-defmethod&lt;/span&gt; &lt;span style=&#34;color:#00d3d0&#34;&gt;org-roam-node-author&lt;/span&gt; ((&lt;span style=&#34;color:#00d3d0&#34;&gt;node&lt;/span&gt; &lt;span style=&#34;color:#00d3d0&#34;&gt;org-roam-node&lt;/span&gt;))
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  (&lt;span style=&#34;color:#f78fe7&#34;&gt;let&lt;/span&gt; ((&lt;span style=&#34;color:#00d3d0&#34;&gt;author&lt;/span&gt; (&lt;span style=&#34;color:#feacd0&#34;&gt;cdr&lt;/span&gt; (&lt;span style=&#34;color:#feacd0&#34;&gt;assoc-string&lt;/span&gt; &lt;span style=&#34;color:#79a8ff&#34;&gt;&amp;#34;AUTHOR&amp;#34;&lt;/span&gt; (&lt;span style=&#34;color:#00d3d0&#34;&gt;org-roam-node-properties&lt;/span&gt; &lt;span style=&#34;color:#00d3d0&#34;&gt;node&lt;/span&gt;)))))
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    (&lt;span style=&#34;color:#f78fe7&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#00d3d0&#34;&gt;author&lt;/span&gt; &lt;span style=&#34;color:#00d3d0&#34;&gt;author&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      (&lt;span style=&#34;color:#f78fe7&#34;&gt;when&lt;/span&gt; &lt;span style=&#34;color:#00d3d0&#34;&gt;org-roam-capture--node&lt;/span&gt; &lt;span style=&#34;color:#a8a8a8&#34;&gt;; non-nil only during org-roam-capture&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        (&lt;span style=&#34;color:#f78fe7&#34;&gt;setq&lt;/span&gt; &lt;span style=&#34;color:#00d3d0&#34;&gt;author&lt;/span&gt; (&lt;span style=&#34;color:#feacd0&#34;&gt;read-string&lt;/span&gt; &lt;span style=&#34;color:#79a8ff&#34;&gt;&amp;#34;Author: &amp;#34;&lt;/span&gt;))
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        (&lt;span style=&#34;color:#f78fe7&#34;&gt;push&lt;/span&gt; (&lt;span style=&#34;color:#feacd0&#34;&gt;cons&lt;/span&gt; &lt;span style=&#34;color:#79a8ff&#34;&gt;&amp;#34;AUTHOR&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#00d3d0&#34;&gt;author&lt;/span&gt;) (&lt;span style=&#34;color:#00d3d0&#34;&gt;org-roam-node-properties&lt;/span&gt; &lt;span style=&#34;color:#00d3d0&#34;&gt;node&lt;/span&gt;)))
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#00d3d0&#34;&gt;author&lt;/span&gt;)))
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;figcaption&gt;
&lt;p&gt;&lt;strong&gt;Exhibit 7&lt;/strong&gt;. Method to Add and Access Custom &lt;code&gt;author&lt;/code&gt; Property&lt;/p&gt;
&lt;/figcaption&gt;
&lt;p&gt;With this setup, modify your capture template to use the new &lt;code&gt;author&lt;/code&gt; property (Exhibit 8). The method ensures the capture process prompts for input only as needed, integrating the author into the file name, content template, and head content that adds property drawers and title).&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#fff;background-color:#000;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-emacs-lisp&#34; data-lang=&#34;emacs-lisp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;(&lt;span style=&#34;color:#00d3d0&#34;&gt;setopt&lt;/span&gt; &lt;span style=&#34;color:#00d3d0&#34;&gt;org-roam-capture-templates&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        (&lt;span style=&#34;color:#00d3d0&#34;&gt;add-to-list&lt;/span&gt; &lt;span style=&#34;color:#79a8ff&#34;&gt;&amp;#39;org-roam-capture-templates&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                     &lt;span style=&#34;color:#00d3d0&#34;&gt;&amp;#39;&lt;/span&gt;(&lt;span style=&#34;color:#79a8ff&#34;&gt;&amp;#34;B&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#79a8ff&#34;&gt;&amp;#34;Literature note (book or article)&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#00d3d0&#34;&gt;plain&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                       &lt;span style=&#34;color:#79a8ff&#34;&gt;&amp;#34;* Source:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#79a8ff&#34;&gt;Author: ${author}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#79a8ff&#34;&gt;Title: ${title}&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                       &lt;span style=&#34;color:#f78fe7&#34;&gt;:target&lt;/span&gt; (&lt;span style=&#34;color:#00d3d0&#34;&gt;file+head&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                &lt;span style=&#34;color:#79a8ff&#34;&gt;&amp;#34;lit/%&amp;lt;%Y%m%d%H%M%S&amp;gt;-${author}-${slug}.org&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                &lt;span style=&#34;color:#79a8ff&#34;&gt;&amp;#34;:PROPERTIES:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#79a8ff&#34;&gt;:Author:        ${author}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#79a8ff&#34;&gt;:END:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#79a8ff&#34;&gt;#+title: ${author} ${title}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#79a8ff&#34;&gt;#+filetags: :literature:&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                       &lt;span style=&#34;color:#f78fe7&#34;&gt;:unnarrowed&lt;/span&gt; t)))
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;figcaption&gt;
&lt;p&gt;&lt;strong&gt;Exhibit 8&lt;/strong&gt;. Capture Template Using Custom &lt;code&gt;author&lt;/code&gt; Property&lt;/p&gt;
&lt;/figcaption&gt;
&lt;p&gt;This way, you can also display the &lt;code&gt;author&lt;/code&gt; property in the &lt;code&gt;org-roam-node-find&lt;/code&gt; list (Figure 2). To achieve this, include the property in &lt;code&gt;org-roam-node-display-template&lt;/code&gt; (Exhibit 9).&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#fff;background-color:#000;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-emacs-lisp&#34; data-lang=&#34;emacs-lisp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;(&lt;span style=&#34;color:#00d3d0&#34;&gt;setopt&lt;/span&gt; &lt;span style=&#34;color:#00d3d0&#34;&gt;org-roam-node-display-template&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#79a8ff&#34;&gt;&amp;#34;${author:16} ${directories:10} ${tags:10} ${title:60}&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;figcaption&gt;
&lt;p&gt;&lt;strong&gt;Exhibit 9&lt;/strong&gt;. Display Template Configuration for Node Properties Including &lt;code&gt;author&lt;/code&gt;&lt;/p&gt;
&lt;/figcaption&gt;
&lt;p&gt;&lt;img src=&#34;./2024-11-25T200540_author-org-roam-node-find.png&#34; alt=&#34;Figure 2. org-roam-node-find showing the author property&#34;&gt;&lt;/p&gt;
&lt;figcaption&gt;
&lt;p&gt;&lt;strong&gt;Figure 2&lt;/strong&gt;. &lt;code&gt;org-roam-node-find&lt;/code&gt; showing the author property&lt;/p&gt;
&lt;/figcaption&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary&lt;/h2&gt;
&lt;p&gt;In this article, we explored advanced &lt;code&gt;org-roam-capture-templates&lt;/code&gt; techniques, focusing on how to prompt for user input and reuse this data across capture templates.&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Org-roam Basics: How org-roam-capture-templates Work</title>
      <link>https://nobiot.com/blog/2024-11-16_org-roam-basics-how-org-roam-capture-templates-work/</link>
      <pubDate>Sat, 16 Nov 2024 20:00:00 +0200</pubDate>
      <author>me@nobiot.com (nobiot.com)</author>
      <guid>https://nobiot.com/blog/2024-11-16_org-roam-basics-how-org-roam-capture-templates-work/</guid>
      <description>&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;
&lt;p&gt;In this article, I will explain the basics of &lt;code&gt;org-roam-capture-templates&lt;/code&gt; by walking you through the default template. This guide is aimed at Org-roam users who have read the &amp;ldquo;Templating System&amp;rdquo; chapter of the user manual but find the system overwhelming or confusing. Through a step-by-step guided tour of the default template, you&amp;rsquo;ll gain the understanding needed to customize capture templates for your workflows.&lt;/p&gt;
&lt;p&gt;Advanced topics, such as prompting for metadata (e.g., author, book title) and reusing responses during the capture process, will be covered in a follow-up article. This primer provides the foundational knowledge to help you confidently explore and customize Org-roam capture templates. Feel free to follow along with your setup as you read.&lt;/p&gt;
&lt;h2 id=&#34;creating-notes-without-capture-templates&#34;&gt;Creating Notes without Capture Templates&lt;/h2&gt;
&lt;p&gt;Creating a notes file in Org-roam is straightforward, and in fact, you do not need to use the capture system.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Create a new file with &lt;code&gt;find-file&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Add a title and ID as metadata to an Org buffer.&lt;/li&gt;
&lt;li&gt;Save the buffer to a file in your &lt;code&gt;org-roam-directory&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If &lt;code&gt;org-roam-db-auto-sync-mode&lt;/code&gt; is enabled, the file is automatically added to the database and will appear when you call &lt;code&gt;org-roam-node-find&lt;/code&gt;. You can create an ID using &lt;code&gt;org-id-get-create&lt;/code&gt; or manually add one. While capture templates are powerful, understanding manual file creation can help you troubleshoot or customize your workflow. See an example in the screenshot below.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;./2024-10-19T16-02-43-screenshot.png&#34; alt=&#34;Figure 1. Screenshot of a notes buffer manually created.&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;is-this-useful&#34;&gt;Is this Useful?&lt;/h3&gt;
&lt;p&gt;While manual note creation might seem unnecessary given Org-roam&amp;rsquo;s powerful capture templates, it offers flexibility for crafting your own workflow. For instance, you can create a simple command (Exhibit 1 below) to generate notes with randomized file names. This approach lets you skip capture templates and create notes quickly.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#fff;background-color:#000;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-emacs-lisp&#34; data-lang=&#34;emacs-lisp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;(&lt;span style=&#34;color:#f78fe7&#34;&gt;defun&lt;/span&gt; &lt;span style=&#34;color:#00d3d0&#34;&gt;my/create-new-note&lt;/span&gt; ()
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#79a8ff&#34;&gt;&amp;#34;Create a new note file in &lt;/span&gt;&lt;span style=&#34;color:#79a8ff&#34;&gt;`org-roam-directory&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#79a8ff&#34;&gt;.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  (&lt;span style=&#34;color:#f78fe7&#34;&gt;interactive&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  (&lt;span style=&#34;color:#f78fe7&#34;&gt;let*&lt;/span&gt; ((&lt;span style=&#34;color:#00d3d0&#34;&gt;time-string&lt;/span&gt; (&lt;span style=&#34;color:#feacd0&#34;&gt;format-time-string&lt;/span&gt; &lt;span style=&#34;color:#79a8ff&#34;&gt;&amp;#34;%Y%m%dT%H%M%S&amp;#34;&lt;/span&gt;))
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;         (&lt;span style=&#34;color:#00d3d0&#34;&gt;extension&lt;/span&gt; &lt;span style=&#34;color:#79a8ff&#34;&gt;&amp;#34;org&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;         (&lt;span style=&#34;color:#00d3d0&#34;&gt;file-base-name&lt;/span&gt; (&lt;span style=&#34;color:#feacd0&#34;&gt;concat&lt;/span&gt; &lt;span style=&#34;color:#00d3d0&#34;&gt;time-string&lt;/span&gt; &lt;span style=&#34;color:#79a8ff&#34;&gt;&amp;#34;.&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#00d3d0&#34;&gt;extension&lt;/span&gt;))
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;         (&lt;span style=&#34;color:#00d3d0&#34;&gt;file-name&lt;/span&gt; (&lt;span style=&#34;color:#feacd0&#34;&gt;expand-file-name&lt;/span&gt; &lt;span style=&#34;color:#00d3d0&#34;&gt;file-base-name&lt;/span&gt; &lt;span style=&#34;color:#00d3d0&#34;&gt;org-roam-directory&lt;/span&gt;)))
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    (&lt;span style=&#34;color:#00d3d0&#34;&gt;find-file&lt;/span&gt; &lt;span style=&#34;color:#00d3d0&#34;&gt;file-name&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a8a8a8&#34;&gt;;; In the new buffer&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    (&lt;span style=&#34;color:#feacd0&#34;&gt;insert&lt;/span&gt; (&lt;span style=&#34;color:#feacd0&#34;&gt;format&lt;/span&gt; &lt;span style=&#34;color:#79a8ff&#34;&gt;&amp;#34;#+title: %s\n\n&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#00d3d0&#34;&gt;time-string&lt;/span&gt;))
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    (&lt;span style=&#34;color:#00d3d0&#34;&gt;org-id-get-create&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    (&lt;span style=&#34;color:#00d3d0&#34;&gt;end-of-buffer&lt;/span&gt;)))
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Exhibit 1. Custom &lt;code&gt;my/create-new-note&lt;/code&gt; command
Source: &lt;a href=&#34;https://org-roam.discourse.group/t/how-can-i-create-a-random-note-with-a-random-unique-file-name-in-one-go/3655/2&#34;&gt;https://org-roam.discourse.group/t/how-can-i-create-a-random-note-with-a-random-unique-file-name-in-one-go/3655/2&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;how-to-add-a-new-template-to-org-roam-capture-templates&#34;&gt;How to Add a New Template to &lt;code&gt;org-roam-capture-templates&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;org-roam-capture-templates&lt;/code&gt; is a list of capture templates, each of which is also a list of elements (Exhibit 2). You typically use &lt;code&gt;add-to-list&lt;/code&gt; or &lt;code&gt;push&lt;/code&gt; to add your custom capture templates. You can also use &lt;code&gt;setopt&lt;/code&gt; (Exhibit 3). I personally prefer &lt;code&gt;setopt&lt;/code&gt; and &lt;code&gt;add-to-list&lt;/code&gt;, but you can choose any approach to work with a list.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;  ○ - org-roam-capture-templates
  │
  └──○ - default capture-template
       │
       │──○ key
       │──○ description
       └──○ other elements of the default capture template
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Exhibit 2. Diagram for the structure of &lt;code&gt;org-roam-capture-templates&lt;/code&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#fff;background-color:#000;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-emacs-lisp&#34; data-lang=&#34;emacs-lisp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;(&lt;span style=&#34;color:#00d3d0&#34;&gt;add-to-list&lt;/span&gt; &lt;span style=&#34;color:#79a8ff&#34;&gt;&amp;#39;org-roam-capture-templates&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;             &lt;span style=&#34;color:#00d3d0&#34;&gt;&amp;#39;&lt;/span&gt;(&lt;span style=&#34;color:#79a8ff&#34;&gt;&amp;#34;n&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#79a8ff&#34;&gt;&amp;#34;new&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#00d3d0&#34;&gt;...&lt;/span&gt;))
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a8a8a8&#34;&gt;;; or&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;(&lt;span style=&#34;color:#f78fe7&#34;&gt;push&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#00d3d0&#34;&gt;&amp;#39;&lt;/span&gt;(&lt;span style=&#34;color:#79a8ff&#34;&gt;&amp;#34;n&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#79a8ff&#34;&gt;&amp;#34;new&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#00d3d0&#34;&gt;...&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#00d3d0&#34;&gt;org-roam-capture-templates&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a8a8a8&#34;&gt;;; or&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;(&lt;span style=&#34;color:#00d3d0&#34;&gt;setopt&lt;/span&gt; &lt;span style=&#34;color:#00d3d0&#34;&gt;org-roam-capture-templates&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        (&lt;span style=&#34;color:#00d3d0&#34;&gt;add-to-list&lt;/span&gt; &lt;span style=&#34;color:#79a8ff&#34;&gt;&amp;#39;org-roam-capture-templates&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;             &lt;span style=&#34;color:#00d3d0&#34;&gt;&amp;#39;&lt;/span&gt;(&lt;span style=&#34;color:#79a8ff&#34;&gt;&amp;#34;n&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#79a8ff&#34;&gt;&amp;#34;new&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#00d3d0&#34;&gt;...&lt;/span&gt;)))
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Exhibit 3. Example code to add a new template to &lt;code&gt;org-roam-capture-templates&lt;/code&gt;&lt;/p&gt;
&lt;h2 id=&#34;understanding-the-default-capture-template&#34;&gt;Understanding the Default Capture Template&lt;/h2&gt;
&lt;p&gt;To understand how &lt;code&gt;org-roam-capture-templates&lt;/code&gt; work, let&amp;rsquo;s examine the default capture template (Exhibit 4). This example demonstrates the structure and purpose of the six elements (Exhibit 5), which we&amp;rsquo;ll explore step by step.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#fff;background-color:#000;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-emacs-lisp&#34; data-lang=&#34;emacs-lisp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;(&lt;span style=&#34;color:#79a8ff&#34;&gt;&amp;#34;d&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#79a8ff&#34;&gt;&amp;#34;default&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#00d3d0&#34;&gt;plain&lt;/span&gt; &lt;span style=&#34;color:#79a8ff&#34;&gt;&amp;#34;%?&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;       &lt;span style=&#34;color:#f78fe7&#34;&gt;:target&lt;/span&gt; (&lt;span style=&#34;color:#00d3d0&#34;&gt;file+head&lt;/span&gt; &lt;span style=&#34;color:#79a8ff&#34;&gt;&amp;#34;%&amp;lt;%Y%m%d%H%M%S&amp;gt;-${slug}.org&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                          &lt;span style=&#34;color:#79a8ff&#34;&gt;&amp;#34;#+title: ${title}\n&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;       &lt;span style=&#34;color:#f78fe7&#34;&gt;:unnarrowed&lt;/span&gt; t)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Exhibit 4. Default capture template&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#fff;background-color:#000;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-emacs-lisp&#34; data-lang=&#34;emacs-lisp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;(&lt;span style=&#34;color:#79a8ff&#34;&gt;&amp;#34;d&amp;#34;&lt;/span&gt;                                              &lt;span style=&#34;color:#a8a8a8&#34;&gt;;; ➊&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#79a8ff&#34;&gt;&amp;#34;default&amp;#34;&lt;/span&gt;                                        &lt;span style=&#34;color:#a8a8a8&#34;&gt;;; ➋&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#00d3d0&#34;&gt;plain&lt;/span&gt;                                            &lt;span style=&#34;color:#a8a8a8&#34;&gt;;; ➌&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#79a8ff&#34;&gt;&amp;#34;%?&amp;#34;&lt;/span&gt;                                             &lt;span style=&#34;color:#a8a8a8&#34;&gt;;; ➍&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#f78fe7&#34;&gt;:target&lt;/span&gt; (&lt;span style=&#34;color:#00d3d0&#34;&gt;file+head&lt;/span&gt; &lt;span style=&#34;color:#79a8ff&#34;&gt;&amp;#34;%&amp;lt;%Y%m%d%H%M%S&amp;gt;-${slug}.org&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#a8a8a8&#34;&gt;;; ➎&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#79a8ff&#34;&gt;&amp;#34;#+title: ${title}\n&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#f78fe7&#34;&gt;:unnarrowed&lt;/span&gt; t)                                   &lt;span style=&#34;color:#a8a8a8&#34;&gt;;; ➏&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Exhibit 5. Default capture template with its numbered elements&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Key (&amp;ldquo;d&amp;rdquo;)&lt;/strong&gt;: A shortcut for selecting this template.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Description (&amp;ldquo;default&amp;rdquo;)&lt;/strong&gt;: The label shown in prompts.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Type (plain)&lt;/strong&gt;: The type of content to insert.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Template (&amp;quot;%?&amp;quot;)&lt;/strong&gt;: The text content to insert.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Target&lt;/strong&gt;: The file name and header content.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Optional Properties&lt;/strong&gt; (:unnarrowed t): Additional capture behaviors.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;-key-and--description&#34;&gt;➊ key and ➋ description&lt;/h3&gt;
&lt;p&gt;These two elements, &lt;strong&gt;key&lt;/strong&gt; and &lt;strong&gt;description&lt;/strong&gt;,  are straightforward. The key (&amp;ldquo;d&amp;rdquo;) is a shortcut for selecting the template, while the description (&amp;ldquo;default&amp;rdquo;) is displayed in the capture prompt when you have more than one capture template. For example, in the screenshot below, the keys (&amp;ldquo;d&amp;rdquo; and &amp;ldquo;e&amp;rdquo;) and their descriptions are shown at the bottom of the capture selection prompt for you to choose from.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;./2024-10-20T153132_capture-prompt.png&#34; alt=&#34;Figure 2. Keys and descriptions &amp;ldquo;d&amp;rdquo; and &amp;ldquo;e&amp;rdquo; to choose from&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;-type-and--template&#34;&gt;➌ type and ➍ template&lt;/h3&gt;
&lt;p&gt;The &lt;strong&gt;type&lt;/strong&gt; (plain) is the type of captured content to insert, while the &lt;strong&gt;template&lt;/strong&gt; (&amp;quot;%?&amp;quot;) defines the text content to insert. The &amp;ldquo;plain&amp;rdquo; type inserts text content as-is. The default template &amp;ldquo;%?&amp;rdquo; has no text content, but the &amp;ldquo;%?&amp;rdquo; tells the capture to place the cursor at this point after the capture process. The &amp;ldquo;entry&amp;rdquo; type adds text content as a child heading under an existing node. For example, the following capture template adds a new heading to a node titled &amp;lsquo;My Philosophy Log&amp;rsquo; (Exhibit 6).&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#fff;background-color:#000;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-emacs-lisp&#34; data-lang=&#34;emacs-lisp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;(&lt;span style=&#34;color:#f78fe7&#34;&gt;push&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#00d3d0&#34;&gt;&amp;#39;&lt;/span&gt;(&lt;span style=&#34;color:#79a8ff&#34;&gt;&amp;#34;l&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#79a8ff&#34;&gt;&amp;#34;log&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#00d3d0&#34;&gt;entry&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   &lt;span style=&#34;color:#79a8ff&#34;&gt;&amp;#34;* ${title}\n\n%?&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   &lt;span style=&#34;color:#a8a8a8&#34;&gt;;; Ensure to have a single node with this title/alias below.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   &lt;span style=&#34;color:#a8a8a8&#34;&gt;;;            ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   &lt;span style=&#34;color:#f78fe7&#34;&gt;:target&lt;/span&gt; (&lt;span style=&#34;color:#00d3d0&#34;&gt;node&lt;/span&gt; &lt;span style=&#34;color:#79a8ff&#34;&gt;&amp;#34;My Philosophy Log&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   &lt;span style=&#34;color:#f78fe7&#34;&gt;:unnarrowed&lt;/span&gt; t
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   &lt;span style=&#34;color:#f78fe7&#34;&gt;:prepend&lt;/span&gt; t
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   &lt;span style=&#34;color:#f78fe7&#34;&gt;:empty-lines&lt;/span&gt; &lt;span style=&#34;color:#00bcff&#34;&gt;1&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#00d3d0&#34;&gt;org-roam-capture-templates&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Exhibit 6. Sample capture template of type &lt;code&gt;entry&lt;/code&gt; that uses &lt;code&gt;node&lt;/code&gt; as the target&lt;/p&gt;
&lt;p&gt;If the node is a file, the new heading will be a level-1 heading, and if the node is a heading-node, the new one will be its direct child heading.  If you want to try this example, use &lt;code&gt;org-roam-capture&lt;/code&gt; and not &lt;code&gt;org-roam-node-find&lt;/code&gt;. To get it to work in your Emacs, replace the target node with a title, alias, or ID that actually exists in your Org-roam directory.&lt;/p&gt;
&lt;h3 id=&#34;using-file-for-your-template&#34;&gt;Using &lt;code&gt;file&lt;/code&gt; for your template&lt;/h3&gt;
&lt;p&gt;In some cases, you might want to insert predefined structured content into each new node. Using a text file as your template ensures consistency and makes it easy to maintain reusable structures. Here&amp;rsquo;s an example that swaps the inline template with content from an external file (Exhibit 7).&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#fff;background-color:#000;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-emacs-lisp&#34; data-lang=&#34;emacs-lisp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a8a8a8&#34;&gt;;; Optionally, reset `org-roam-capture-templates` by setting it to nil.  You&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a8a8a8&#34;&gt;;; don&amp;#39;t need to do this, but makes the variable clean for next experiments.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;(&lt;span style=&#34;color:#f78fe7&#34;&gt;setq&lt;/span&gt;  &lt;span style=&#34;color:#00d3d0&#34;&gt;org-roam-capture-templates&lt;/span&gt; nil)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;(&lt;span style=&#34;color:#f78fe7&#34;&gt;push&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#00d3d0&#34;&gt;&amp;#39;&lt;/span&gt;(&lt;span style=&#34;color:#79a8ff&#34;&gt;&amp;#34;l&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#79a8ff&#34;&gt;&amp;#34;log&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#00d3d0&#34;&gt;entry&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   (&lt;span style=&#34;color:#00d3d0&#34;&gt;file&lt;/span&gt; &lt;span style=&#34;color:#79a8ff&#34;&gt;&amp;#34;~/tmp/philosophy-log-capture.org&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   &lt;span style=&#34;color:#a8a8a8&#34;&gt;;; Ensure to have a single node with this title/alias below.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   &lt;span style=&#34;color:#a8a8a8&#34;&gt;;;            ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   &lt;span style=&#34;color:#f78fe7&#34;&gt;:target&lt;/span&gt; (&lt;span style=&#34;color:#00d3d0&#34;&gt;node&lt;/span&gt; &lt;span style=&#34;color:#79a8ff&#34;&gt;&amp;#34;My Philosophy Log&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   &lt;span style=&#34;color:#f78fe7&#34;&gt;:unnarrowed&lt;/span&gt; t
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   &lt;span style=&#34;color:#f78fe7&#34;&gt;:prepend&lt;/span&gt; t
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   &lt;span style=&#34;color:#f78fe7&#34;&gt;:empty-lines&lt;/span&gt; &lt;span style=&#34;color:#00bcff&#34;&gt;1&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#00d3d0&#34;&gt;org-roam-capture-templates&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Exhibit 7. Sample capture template of type &lt;code&gt;entry&lt;/code&gt; that uses &lt;code&gt;file&lt;/code&gt; for template&lt;/p&gt;
&lt;p&gt;The template file &lt;code&gt;~/tmp/philosophy-log-capture.org&lt;/code&gt; looks like this (Exhibit 8).&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#fff;background-color:#000;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-org&#34; data-lang=&#34;org&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;* ${title}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;** What are you thinking?
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  %?
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;** How do you feel about it?
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;** Any other comments?
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Exhibit 8. Content of file &lt;code&gt;~/tmp/philosophy-log-capture.org&lt;/code&gt;&lt;/p&gt;
&lt;h3 id=&#34;-target-property&#34;&gt;➎ &lt;code&gt;:target&lt;/code&gt; property&lt;/h3&gt;
&lt;p&gt;The &lt;strong&gt;target&lt;/strong&gt; (Exhibit 10) specifies where the captured content will be placed. In the default capture template, it has three components with the &lt;code&gt;file+head&lt;/code&gt;option (Exhibit 11):&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;➎-a Type of target specification&lt;/strong&gt; (&lt;code&gt;file+head&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;➎-b Target file name&lt;/strong&gt;: Includes a timestamp (%&amp;lt;%Y%m%d%H%M%S&amp;gt;) and slug (${slug}).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;➎-c Head content&lt;/strong&gt;: Adds metadata like #+title.&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#fff;background-color:#000;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-emacs-lisp&#34; data-lang=&#34;emacs-lisp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f78fe7&#34;&gt;:target&lt;/span&gt; (&lt;span style=&#34;color:#00d3d0&#34;&gt;file+head&lt;/span&gt; &lt;span style=&#34;color:#79a8ff&#34;&gt;&amp;#34;%&amp;lt;%Y%m%d%H%M%S&amp;gt;-${slug}.org&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#a8a8a8&#34;&gt;;; ➎&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#79a8ff&#34;&gt;&amp;#34;#+title: ${title}\n&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Exhibit 10. The &lt;code&gt;:target&lt;/code&gt; property of default capture template&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#fff;background-color:#000;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-emacs-lisp&#34; data-lang=&#34;emacs-lisp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;(&lt;span style=&#34;color:#00d3d0&#34;&gt;file+head&lt;/span&gt;                      &lt;span style=&#34;color:#a8a8a8&#34;&gt;;; ➎-a&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#79a8ff&#34;&gt;&amp;#34;%&amp;lt;%Y%m%d%H%M%S&amp;gt;-${slug}.org&amp;#34;&lt;/span&gt;  &lt;span style=&#34;color:#a8a8a8&#34;&gt;;; ➎-b&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#79a8ff&#34;&gt;&amp;#34;#+title: ${title}\n&amp;#34;&lt;/span&gt;)         &lt;span style=&#34;color:#a8a8a8&#34;&gt;;; ➎-c&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Exhibit 11. Elements of the &lt;code&gt;:target&lt;/code&gt; property&lt;/p&gt;
&lt;h4 id=&#34;-a-type-of-target-specification&#34;&gt;➎-a Type of target specification&lt;/h4&gt;
&lt;p&gt;The number of elements in ➎ target varies depending on &lt;strong&gt;➎-a type of target specification&lt;/strong&gt;. We have &lt;code&gt;file+head&lt;/code&gt; in the example, and therefore two elements follow it: ➎-b and ➎-c. The docstring lists available  options for ➎-a such as &lt;code&gt;file&lt;/code&gt;, &lt;code&gt;file+olp&lt;/code&gt;, and &lt;code&gt;node&lt;/code&gt;, and they have one,  two, and one elements  to follow respectively.&lt;/p&gt;
&lt;h4 id=&#34;-b-target-file-name&#34;&gt;➎-b Target file name&lt;/h4&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#fff;background-color:#000;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-emacs-lisp&#34; data-lang=&#34;emacs-lisp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#79a8ff&#34;&gt;&amp;#34;%&amp;lt;%Y%m%d%H%M%S&amp;gt;-${slug}.org&amp;#34;&lt;/span&gt;  &lt;span style=&#34;color:#a8a8a8&#34;&gt;;; ➎-b&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Exhibit 12. ➎-b Target file name&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;➎-b&lt;/strong&gt; is the &lt;strong&gt;target file name&lt;/strong&gt;. You can have an absolute or relative file name. If relative, it&amp;rsquo;s relative to&lt;code&gt;org-roam-directory&lt;/code&gt;. With this default example, the target file name starts with a percent symbol (&amp;quot;%&amp;quot;) followed by an angle bracket &amp;ldquo;&amp;lt;&amp;rdquo;. What does this mean?  Consult the docstring, and you will see this part.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Furthermore, the following %-escapes will be replaced with content and expanded
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Exhibit 13. Docstring on %-escapes&lt;/p&gt;
&lt;p&gt;So it is one of the pre-defined &amp;ldquo;%-escapes&amp;rdquo;, which get expanded and replaced with something else. You will also see a list of available %-escapes you can use, and the one starting with an angle bracket is this.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;%&amp;lt;...&amp;gt;      The result of ‘format-time-string’ on the ... format specification.
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Exhibit 14. %&amp;lt;&amp;hellip;&amp;gt; format-time-string&lt;/p&gt;
&lt;p&gt;How do we use it?  The angle brackets in the default template contain this string &lt;code&gt;%Y%m%d%H%M%S&lt;/code&gt;, which is a common convention to format a time string in programming in general. Refer to the docstring of the function &lt;code&gt;format-time-string&lt;/code&gt;for more detail. You can test the function and the time string like this below. Here you are evaluating an Emacs Lisp form or expression.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#fff;background-color:#000;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-emacs-lisp&#34; data-lang=&#34;emacs-lisp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;(&lt;span style=&#34;color:#feacd0&#34;&gt;format-time-string&lt;/span&gt; &lt;span style=&#34;color:#79a8ff&#34;&gt;&amp;#34;%Y%m%d%H%M%S&amp;#34;&lt;/span&gt; (&lt;span style=&#34;color:#feacd0&#34;&gt;current-time&lt;/span&gt;))
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00d3d0&#34;&gt;e.g.&lt;/span&gt; ⇒ &lt;span style=&#34;color:#79a8ff&#34;&gt;&amp;#34;20241020112615&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Exhibit 15. Code snippet to test &lt;code&gt;format-time-string&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;The timestamp is then followed by a hyphen &amp;ldquo;-&amp;rdquo;, which is used as a separator  between the timestamp and the title slug. The hyphen may be buried in all the symbols like &amp;ldquo;%&amp;rdquo;, &amp;ldquo;&amp;gt;&amp;rdquo;, &amp;ldquo;$&amp;rdquo; and &amp;ldquo;{&amp;rdquo;, all of which have certain syntactic  significance, but the hyphen does not, and thus will be  inserted literally as it is as a character.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;${slug}&lt;/code&gt; part uses an Org-roam specific convention. Toward the end of the docstring, you will see this mentioned.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Org-roam supports additional substitutions within its templates. &amp;#34;${foo}&amp;#34; will look for the foo property in the Org-roam node (see the ‘org-roam-node’).
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Exhibit 16. Docstring excerpt on Org-roam’s “${foo}” convention&lt;/p&gt;
&lt;p&gt;This may not be easy to understand with technical precision in the beginning. Do not worry too much about it for now. The following should be enough to get you going &amp;ndash; I am adding some contextual information that is not explicit in the excerpt of the docstring above (Exhibit 16).&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;You can use properties of the node being captured throughout the current capture process (refer to the user manual for a full list. &lt;code&gt;(info &amp;quot;(org-roam) Node Properties&amp;quot;)&lt;/code&gt;).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;You can access each property value by calling a function &lt;code&gt;org-roam-node-foo&lt;/code&gt; (but note that &amp;ldquo;foo&amp;rdquo; is a fictitious example and is not defined in Org-roam by default).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;There are several properties defined by default such as &lt;code&gt;slug&lt;/code&gt;, &lt;code&gt;id&lt;/code&gt;, &lt;code&gt;title&lt;/code&gt; and so on. See functions whose name starts with &lt;code&gt;org-roam-node-&lt;/code&gt; using the &lt;code&gt;describe-function&lt;/code&gt; command (bound to “C-h f” by default).&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;When you are creating a new node in the capture process, the title is the text you enter in the beginning for the new node, and you can use &lt;code&gt;${slug}&lt;/code&gt; in your capture-template. Internally, the capture process calls the function &lt;code&gt;org-roam-node-slug&lt;/code&gt; to return a slug based on the title. You can play with a simple example below to see how it works more concretely.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#fff;background-color:#000;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-emacs-lisp&#34; data-lang=&#34;emacs-lisp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;(&lt;span style=&#34;color:#f78fe7&#34;&gt;let*&lt;/span&gt; ((&lt;span style=&#34;color:#00d3d0&#34;&gt;new-title&lt;/span&gt; (&lt;span style=&#34;color:#feacd0&#34;&gt;read-string&lt;/span&gt; &lt;span style=&#34;color:#79a8ff&#34;&gt;&amp;#34;Enter title: &amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                               &lt;span style=&#34;color:#79a8ff&#34;&gt;&amp;#34;This is the Title of the Node&amp;#34;&lt;/span&gt;))
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;       (&lt;span style=&#34;color:#00d3d0&#34;&gt;node&lt;/span&gt; (&lt;span style=&#34;color:#00d3d0&#34;&gt;org-roam-node-create&lt;/span&gt; &lt;span style=&#34;color:#f78fe7&#34;&gt;:title&lt;/span&gt; &lt;span style=&#34;color:#00d3d0&#34;&gt;new-title&lt;/span&gt;)))
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  (&lt;span style=&#34;color:#00d3d0&#34;&gt;org-roam-node-slug&lt;/span&gt; &lt;span style=&#34;color:#00d3d0&#34;&gt;node&lt;/span&gt;))
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#00d3d0&#34;&gt;e.g.&lt;/span&gt; ⇒ &lt;span style=&#34;color:#79a8ff&#34;&gt;&amp;#34;this_is_the_title_of_the_node&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Exhibit 17. Code snippet to test &lt;code&gt;org-roam-node-slug&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Now that&amp;rsquo;s the&lt;code&gt;${slug}&lt;/code&gt; part. After this, the file name extension&lt;code&gt;.org&lt;/code&gt; is added to the end of the file name simply as it is.&lt;/p&gt;
&lt;p&gt;We will come back to the &lt;code&gt;${slug}&lt;/code&gt; convention for more, because it makes &lt;code&gt;org-roam-capture-templates&lt;/code&gt; distinct from its Org counterpart, &lt;code&gt;org-capture-templates&lt;/code&gt;. We can add our custom properties to the node with this facility, but that’s for a bit later.&lt;/p&gt;
&lt;h4 id=&#34;-c-head-content&#34;&gt;➎-c Head content&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;➎-c&lt;/strong&gt; is the &lt;strong&gt;head content&lt;/strong&gt;. It is inserted into the file only when it is created for the first time.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#fff;background-color:#000;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-emacs-lisp&#34; data-lang=&#34;emacs-lisp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#79a8ff&#34;&gt;&amp;#34;#+title: ${title}\n&amp;#34;&lt;/span&gt;)         &lt;span style=&#34;color:#a8a8a8&#34;&gt;;; ➎-c&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Exhibit 18. ➎-c head content in the default template&lt;/p&gt;
&lt;p&gt;The first part &lt;code&gt;#+title: &lt;/code&gt; is literally added.  We&amp;rsquo;ll discuss the &lt;code&gt;${title}&lt;/code&gt; part in a minute but just to quickly point out one thing about the last part &lt;code&gt;\n&lt;/code&gt;. This adds a newline character in Emacs, meaning it serves as a line break. With &lt;code&gt;\n&lt;/code&gt;, we are simply telling the capture process to end the line at this point, as if you pressed the return or enter key (↵ ) on your keyboard.&lt;/p&gt;
&lt;p&gt;Note the &lt;code&gt;${title}&lt;/code&gt; part. It&amp;rsquo;s the same technique we have seen used with &lt;code&gt;${slug}&lt;/code&gt; in the &lt;strong&gt;➎-b target file name&lt;/strong&gt; part above. This way, you can insert a node&amp;rsquo;s property named &lt;code&gt;title&lt;/code&gt; and &lt;code&gt;slug&lt;/code&gt; during the capture process. See the example below (Exhibit 19).&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#fff;background-color:#000;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-emacs-lisp&#34; data-lang=&#34;emacs-lisp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;(&lt;span style=&#34;color:#f78fe7&#34;&gt;let*&lt;/span&gt; ((&lt;span style=&#34;color:#00d3d0&#34;&gt;new-title&lt;/span&gt; (&lt;span style=&#34;color:#feacd0&#34;&gt;read-string&lt;/span&gt; &lt;span style=&#34;color:#79a8ff&#34;&gt;&amp;#34;Enter title: &amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                               &lt;span style=&#34;color:#79a8ff&#34;&gt;&amp;#34;This is the Title of the Node&amp;#34;&lt;/span&gt;))
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;       (&lt;span style=&#34;color:#00d3d0&#34;&gt;node&lt;/span&gt; (&lt;span style=&#34;color:#00d3d0&#34;&gt;org-roam-node-create&lt;/span&gt; &lt;span style=&#34;color:#f78fe7&#34;&gt;:title&lt;/span&gt; &lt;span style=&#34;color:#00d3d0&#34;&gt;new-title&lt;/span&gt;)))
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  (&lt;span style=&#34;color:#00d3d0&#34;&gt;org-roam-node-title&lt;/span&gt; &lt;span style=&#34;color:#00d3d0&#34;&gt;node&lt;/span&gt;)) &lt;span style=&#34;color:#a8a8a8&#34;&gt;;; &amp;lt;= This time, this part accesses the title slot of node&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#00d3d0&#34;&gt;e.g.&lt;/span&gt; ⇒ &lt;span style=&#34;color:#79a8ff&#34;&gt;&amp;#34;This is the Title of the Node&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Exhibit 19. Code snippet to test &lt;code&gt;org-roam-node-title&lt;/code&gt;&lt;/p&gt;
&lt;h3 id=&#34;-unnarrowed-and-other-optional-properties&#34;&gt;➏ :unnarrowed and other optional properties&lt;/h3&gt;
&lt;p&gt;Optional properties, like &lt;code&gt;:unnarrowed&lt;/code&gt;, provide fine-grained control over the capture process. For example, &lt;code&gt;:unnarrowed&lt;/code&gt; ensures the capture buffer isn&amp;rsquo;t restricted to a narrowed view, allowing you to see the full context of your note. Refer to the docstring of &lt;code&gt;org-roam-capture-templates&lt;/code&gt; for a full list and experiment with these options to tailor the capture behavior to your workflow.&lt;/p&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary&lt;/h2&gt;
&lt;p&gt;Now you&amp;rsquo;ve seen all the six elements of a capture template and how they work together to let you capture your notes. You have also seen how you can add a new capture template to the &lt;code&gt;org-roam-capture-templates&lt;/code&gt; user option. Try experimenting with your custom ones to fit your workflow.&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Refurbishing Old Emacs Libraries</title>
      <link>https://nobiot.com/blog/2024-04-25t075416_refurbishing-old-libraries/</link>
      <pubDate>Thu, 25 Apr 2024 08:55:00 +0200</pubDate>
      <author>me@nobiot.com (nobiot.com)</author>
      <guid>https://nobiot.com/blog/2024-04-25t075416_refurbishing-old-libraries/</guid>
      <description>&lt;p&gt;Daniel Mendler (GitHub user &lt;a href=&#34;https://github.com/minad&#34;&gt;minad&lt;/a&gt;) is a master in bringing out the best
of built-in libraries. I get reminded daily when I touch Emacs through
his packages such as &lt;a href=&#34;https://github.com/minad/consult&#34;&gt;Consult&lt;/a&gt; and &lt;a href=&#34;https://github.com/minad/vertico&#34;&gt;Vertico&lt;/a&gt;. He also refurbishes an old
built-in library, Tempo, which &amp;ldquo;may look a bit dusty here and there&amp;rdquo;
with his &lt;a href=&#34;https://github.com/minad/tempel&#34;&gt;TempEl library&lt;/a&gt;. &amp;ldquo;Old&amp;rdquo; is good in this context. These libraries
have stood the test of time.&lt;/p&gt;
&lt;p&gt;So, following his footsteps, I decided to refurbish an old library,
&lt;code&gt;org-ctags&lt;/code&gt;. My first attempt resulted in &lt;a href=&#34;https://git.sr.ht/~nobiot/org-etags&#34;&gt;&lt;code&gt;org-etags&lt;/code&gt;&lt;/a&gt;. I learned a lot from making it. Now I have polished it and
made it more generic (no longer specific to Org): &lt;a href=&#34;https://git.sr.ht/~nobiot/ten&#34;&gt;Ten 典&lt;/a&gt;. They are both
tiny &amp;ndash; around 200 and 400 lines of code respectively, including
comments.&lt;/p&gt;
&lt;p&gt;Ten is going through my daily use, especially at work. That&amp;rsquo;s for
another day.&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Chat with ChatGPT: What is a Single Idea in an Atomic Note?</title>
      <link>https://nobiot.com/blog/2024-04-13_chat-with-chatgpt-atomic-note-and-single-idea/</link>
      <pubDate>Sat, 13 Apr 2024 11:18:00 +0200</pubDate>
      <author>me@nobiot.com (nobiot.com)</author>
      <guid>https://nobiot.com/blog/2024-04-13_chat-with-chatgpt-atomic-note-and-single-idea/</guid>
      <description>&lt;p&gt;I chatted about &amp;ldquo;atomic notes&amp;rdquo; and the concept of a &amp;ldquo;single idea&amp;rdquo; with ChatGPT&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;. The conversation is reproduced below. I have kept ChatGPT&amp;rsquo;s responses unchanged. I&amp;rsquo;ve only added headings &amp;ldquo;Setting the Context for ChatGPT&amp;rdquo; and &amp;ldquo;What is a &amp;lsquo;Single Idea&amp;rsquo;,&amp;rdquo; along with some punctuation for my part.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m intrigued by its discussion on &amp;ldquo;idea-centric notes.&amp;rdquo; I have done a couple of iterations with different prompts, but this is the only instance (and the very first one) ChatGPT specifically mentioned it as a concept. Googling it does not surface any page that mentions the term, so ChatGPT might have &amp;ldquo;coined&amp;rdquo; the term – I am more interested in the content of the idea than the term or whether it is a novel one.&lt;/p&gt;
&lt;h2 id=&#34;setting-the-context-for-chatgpt&#34;&gt;Setting the Context for ChatGPT&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;—Are you aware of the idea of atomic notes in the context of zettelkasten?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;—Yes, I&amp;rsquo;m familiar with the concept of atomic notes in the context of a Zettelkasten system. In this method, each note (or &amp;ldquo;zettel&amp;rdquo;) is designed to capture a single idea or piece of information. These notes are meant to be as atomic as possible, meaning they should be self-contained and specific enough to stand on their own without additional context. This approach helps in linking notes in a meaningful way, enabling easier retrieval and combination of ideas to generate new insights. Atomic notes are typically concise and focused, aiming to encapsulate one thought clearly and succinctly.&lt;/p&gt;
&lt;h2 id=&#34;what-is-a-single-idea&#34;&gt;What is a &amp;ldquo;Single Idea&amp;rdquo;&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;—Can you think of a more formal / ridged definition of a single idea to be written down in a single atomic note? What does one look like? And what doesnt?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;—Defining a &amp;ldquo;single idea&amp;rdquo; for an atomic note in a Zettelkasten system can indeed be refined into a more formal or rigid format. Here’s a structured approach to what should and should not constitute a single atomic note:&lt;/p&gt;
&lt;h3 id=&#34;what-a-single-idea-in-an-atomic-note-looks-like&#34;&gt;What a Single Idea in an Atomic Note Looks Like&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Specificity&lt;/strong&gt;: The note focuses on one distinct aspect of a broader topic. For example, rather than addressing the entire concept of photosynthesis, the note might focus on explaining just the light-dependent reactions within photosynthesis.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Completeness&lt;/strong&gt;: The idea should be complete in itself, meaning it can be understood without needing additional context from other notes. It answers who, what, when, where, why, or how about the topic.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Conciseness&lt;/strong&gt;: It is expressed concisely, using clear and precise language. The note is long enough to cover the subject but short enough to maintain focus without veering off into related topics.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Linkability&lt;/strong&gt;: The note should be able to connect with other notes on related topics through direct links, enabling a network of ideas that enhance understanding and retrieval.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;what-a-single-idea-in-an-atomic-note-does-not-look-like&#34;&gt;What a Single Idea in an Atomic Note Does Not Look Like&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Too Broad&lt;/strong&gt;: If a note covers multiple aspects or angles of a topic (e.g., an overview of photosynthesis including light-dependent reactions, light-independent reactions, and ecological implications), it’s too broad. Each of these should ideally be its own note.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Dependent on Context&lt;/strong&gt;: If the understanding of the note&amp;rsquo;s content relies heavily on another note or external context, it’s not atomic. Each note should make sense on its own.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Verbose or Vague&lt;/strong&gt;: Overly long notes that delve into multiple ideas or notes that are not clear and precise in their wording do not fit the atomic model.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;example-of-a-good-atomic-note&#34;&gt;Example of a Good Atomic Note&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Title&lt;/strong&gt;: Light-Dependent Reactions in Photosynthesis&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Content&lt;/strong&gt;: Light-dependent reactions occur in the thylakoid membranes of chloroplasts where chlorophyll absorbs sunlight, leading to the production of ATP and NADPH. This process is crucial as it provides the energy and reducing power for the light-independent reactions.&lt;/p&gt;
&lt;h3 id=&#34;example-of-a-poor-atomic-note&#34;&gt;Example of a Poor Atomic Note&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Title&lt;/strong&gt;: Photosynthesis&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Content&lt;/strong&gt;: Photosynthesis involves several complex steps where plants convert light energy into chemical energy, store it in the form of sugars, and use it to fuel their activities and growth. It includes various reactions and processes that are essential for plant life and impacts ecological systems.&lt;/p&gt;
&lt;p&gt;By adhering to these criteria, you can ensure that each note in a Zettelkasten system is useful and effective in a standalone capacity while being capable of forming part of a larger, interconnected knowledge network.&lt;/p&gt;
&lt;h2 id=&#34;idea-centric-atomic-notes&#34;&gt;Idea-Centric Atomic Notes&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;—The example above about the light dependent reactions in photosynthesis describes a fact about Nature, correct? It is not an idea.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;—You&amp;rsquo;re correct in noting the distinction between a factual description and what might be considered an &amp;ldquo;idea&amp;rdquo; in the context of atomic notes within a Zettelkasten system. The example given indeed describes factual information about a natural process—specifically, the light-dependent reactions of photosynthesis. In the realm of note-taking and knowledge management, the definition of an &amp;ldquo;idea&amp;rdquo; can be broader and may include both factual descriptions as well as interpretations, insights, or conceptual frameworks.&lt;/p&gt;
&lt;p&gt;An &amp;ldquo;idea&amp;rdquo; in this context could be a unique insight, a synthesized thought, an analytical observation, or a novel interpretation of information. For a more idea-focused atomic note, the content might not merely describe a fact but also offer interpretation, ask a question, or connect seemingly disparate facts in a new way. Here’s an example:&lt;/p&gt;
&lt;h3 id=&#34;example-of-an-idea-centric-atomic-note&#34;&gt;Example of an Idea-Centric Atomic Note&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Title&lt;/strong&gt;: Implications of Light-Dependent Reactions on Artificial Photosynthesis Technologies&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Content&lt;/strong&gt;: The efficiency of light-dependent reactions in natural photosynthesis suggests potential pathways for enhancing artificial photosynthesis technologies. By mimicking the chlorophyll&amp;rsquo;s ability to absorb sunlight and convert it into chemical energy, we can potentially improve the energy conversion efficiency of synthetic systems. This could lead to more sustainable energy solutions by utilizing principles observed in nature.&lt;/p&gt;
&lt;p&gt;This note moves beyond just describing a natural process by introducing an interpretation of how understanding this process could influence technological development. It presents an idea connecting biological insights with practical applications, demonstrating how factual information can seed further intellectual exploration and innovation in a Zettelkasten system.&lt;/p&gt;
&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;The conversation took place on 13 April 2024 with ChatGPT4 in the browser user interface through a personal &amp;ldquo;Plus&amp;rdquo; subscription (paying subscription) of ChatGPT.&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
</description>
    </item>
    <item>
      <title>Now</title>
      <link>https://nobiot.com/now/</link>
      <pubDate>Sun, 07 Apr 2024 21:53:00 +0200</pubDate>
      <author>me@nobiot.com (nobiot.com)</author>
      <guid>https://nobiot.com/now/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;../assets/images/profile.jpg&#34; alt=&#34;my profile image&#34;&gt;&lt;/p&gt;
&lt;p&gt;nobiot&lt;/p&gt;
&lt;p&gt;I enjoy tinkering with tools for writing and note-taking with Emacs. I am just a hobbyist programmer. I try to write occassionally.&lt;/p&gt;
&lt;p&gt;Lately, I have been tinkering away at some tiny libraries for note-taking and writing. You will find them on SourceHut, collected under the &amp;ldquo;&lt;a href=&#34;https://sr.ht/~nobiot/tiny-emacs-packages/.&#34;&gt;Tiny Emacs Packages&lt;/a&gt;&amp;rdquo; project (admittedly misnomer; it should have been &amp;ldquo;Tiny Emacs Libraries&amp;rdquo;).&lt;/p&gt;
&lt;dl&gt;
&lt;dt&gt;&lt;a href=&#34;https://git.sr.ht/~nobiot/ren&#34;&gt;Ren 連&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;
&lt;p&gt;Ren is a tiny Emacs library designed to make our note-taking easier by adding plain-text hyperlinks to our notes and documents. You can turn a date (eg &amp;ldquo;2024-02-25&amp;rdquo;), a wiki-style link (eg &amp;ldquo;[[note-taking]]&amp;rdquo;), or any single word into an &amp;ldquo;identifer&amp;rdquo; (ID) that works as a hyperlink.&lt;/p&gt;
&lt;/dd&gt;
&lt;dd&gt;
&lt;p&gt;With Ren, you can use commands like &lt;code&gt;xref-find-definitions&lt;/code&gt; and &lt;code&gt;xref-find-references&lt;/code&gt; to find where these IDs are mentioned across our files (ie backlinks) even if they&amp;rsquo;re in different folders and projects. Ren works with any plain-text file types like &lt;code&gt;.txt&lt;/code&gt;, &lt;code&gt;.md&lt;/code&gt;, and &lt;code&gt;.org&lt;/code&gt;.&lt;/p&gt;
&lt;/dd&gt;
&lt;dt&gt;&lt;a href=&#34;https://git.sr.ht/~nobiot/ten&#34;&gt;Ten 典&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;
&lt;p&gt;Ten 典: A tiny Emacs library that lets you list definitions of terms.
It fontifies the terms and lets you jump to their denitions like a wiki
for plain-text documents&lt;/p&gt;
&lt;/dd&gt;
&lt;dd&gt;
&lt;p&gt;With Ten, you do not use a syntactic construct like &lt;code&gt;[[wiki link]]&lt;/code&gt; in
your documents; you write naturally and Ten will automatically highlight
(fontify) terms that you have definitions for. You can easily jump to
the location of the definitions and back to the document where you have
come from. To jump to the definition, place your cursor on a fontified
term and call the &lt;code&gt;xref-find-definitions&lt;/code&gt; command (by default bound to
&lt;code&gt;M-.&lt;/code&gt;). You will jump to the buffer where the definition is.
&lt;code&gt;xref-go-back&lt;/code&gt; (&lt;code&gt;M-,&lt;/code&gt;) will take you back where you jumped from. Ten 典
connects with &lt;code&gt;xref-find-definitions&lt;/code&gt; to search the definitions of terms,
but not with &lt;code&gt;xref-find-references&lt;/code&gt; for where the terms are used. For
this, Ten works well with Ren 連.&lt;/p&gt;
&lt;/dd&gt;
&lt;dt&gt;&lt;a href=&#34;https://git.sr.ht/~nobiot/org-etags&#34;&gt;Org-etags&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;
&lt;p&gt;Org-etags is a a tiny library that refurbishes the built-in org-ctags library for Emacs 29 so that it can use the etags program that comes compiled with Emacs. This library also adds a command that lets us use Org&amp;rsquo;s radio targets (&amp;lt;&amp;lt;&amp;lt;Radio Target&amp;gt;&amp;gt;&amp;gt; syntax) across files, where radio targets only work within a single Org buffer.&lt;/p&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;hr&gt;
&lt;p&gt;I manage a small collection of moderately-sized Emacs packages on &lt;a href=&#34;https://github.com/nobiot&#34;&gt;GitHub&lt;/a&gt;. I put them together originally for my own writing and note-taking. I want to keep them stable as they&amp;rsquo;re shared on ELPA. I don&amp;rsquo;t have a set release schedule, but I have been adding new features once or a twice year since I started in 2022. As for fixes, I try to get them out as soon as they are ready.&lt;/p&gt;
&lt;dl&gt;
&lt;dt&gt;&lt;a href=&#34;https://github.com/nobiot/org-remark&#34;&gt;Org-remark&lt;/a&gt;(published on &lt;a href=&#34;http://elpa.gnu.org/packages/org-remark.html&#34;&gt;ELPA&lt;/a&gt; and &lt;a href=&#34;http://elpa.gnu.org/devel/org-remark.html&#34;&gt;ELPA-devel&lt;/a&gt;)&lt;/dt&gt;
&lt;dd&gt;
&lt;p&gt;An Emacs package that lets you highlight and annotate text files, websites, EPUB books and Info documentation with using Org mode.&lt;/p&gt;
&lt;/dd&gt;
&lt;dt&gt;&lt;a href=&#34;https://github.com/nobiot/org-transclusion&#34;&gt;Org-transclusion&lt;/a&gt; (published on &lt;a href=&#34;http://elpa.gnu.org/packages/org-transclusion.html&#34;&gt;ELPA&lt;/a&gt; and &lt;a href=&#34;http://elpa.gnu.org/devel/org-transclusion.html&#34;&gt;ELPA-devel&lt;/a&gt;)&lt;/dt&gt;
&lt;dd&gt;
&lt;p&gt;An Emacs package that lets you insert a copy of text content via a file link or ID link within an Org file. It lets you have the same content present in different buffers at the same time without copy-and-pasting it. Edit the source of the content, and you can refresh the transcluded copies to the up-to-date state. Org-transclusion keeps your files clear of the transcluded copies, leaving only the links to the original content.&lt;/p&gt;
&lt;/dd&gt;
&lt;dt&gt;&lt;a href=&#34;https://github.com/nobiot/md-roam&#34;&gt;Md-roam&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;
&lt;p&gt;An Emacs package that lets you Use Org-roam with markdown files. You can mix org and markdown files in a single Org-roam database.&lt;/p&gt;
&lt;/dd&gt;
&lt;/dl&gt;
</description>
    </item>
    <item>
      <title>Colophon</title>
      <link>https://nobiot.com/colophon/</link>
      <pubDate>Thu, 04 Apr 2024 22:12:00 +0200</pubDate>
      <author>me@nobiot.com (nobiot.com)</author>
      <guid>https://nobiot.com/colophon/</guid>
      <description>&lt;p&gt;This website is made with &lt;a href=&#34;https://gohugo.io/&#34;&gt;Hugo&lt;/a&gt;. The theme is an adapted verion of  &lt;a href=&#34;https://github.com/janraasch/hugo-bearblog/&#34;&gt;Hugo ʕ•ᴥ•ʔ Bear&lt;/a&gt;, which is &lt;a href=&#34;https://github.com/janraasch/hugo-bearblog/?tab=MIT-1-ov-file#readme&#34;&gt;licensed under MIT&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Org-remark v1.3 Delete and Remove</title>
      <link>https://nobiot.com/blog/2023-10-01_org-remark-v1.3-delete-remove/</link>
      <pubDate>Sun, 01 Oct 2023 08:21:00 +0200</pubDate>
      <author>me@nobiot.com (nobiot.com)</author>
      <guid>https://nobiot.com/blog/2023-10-01_org-remark-v1.3-delete-remove/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://github.com/nobiot/org-remark&#34;&gt;Org-remark&lt;/a&gt; is an Emacs package I
have been developing. It lets you highlight and annotate text files,
websites, EPUB books and Info documentation with using Org mode.&lt;/p&gt;
&lt;h2 id=&#34;new-option-to-auto-delete-entries-in-marginal-notes-file&#34;&gt;New Option to Auto Delete Entries in Marginal Notes File&lt;/h2&gt;
&lt;p&gt;Automatic deletion is a new optional feature with v1.3. This has been added in response to  &lt;a href=&#34;https://github.com/nobiot/org-remark/issues/21&#34;&gt;GitHub issue #21&lt;/a&gt;. When the feature is enabled, Org-remark will automatically delete the highlight&amp;rsquo;s headline when you delete text that includes a highlight, provided there is no marginal notes for it. If marginal notes are present for the highlight&amp;rsquo;s headline, Org-remark only removes the highlight, deleting the properties from the highlight headline &amp;ndash; same operation as &lt;code&gt;org-remark-remove&lt;/code&gt;. Your marginal notes will be kept intact. In either case, Org-remark does not ask for your confirmation.&lt;/p&gt;
&lt;p&gt;This is not new, but it is important to note that you can undo the deletion or removal &lt;em&gt;in the marginal notes buffer&lt;/em&gt; &amp;ndash; not in the source buffer where you mark text with a highlighter. Technically, highlights are overlays and are therefore not part of the undo tree in the source buffer.&lt;/p&gt;
&lt;p&gt;If you prefer automatic deletion, all you need to do is to enable it with the new user option &lt;code&gt;org-remark-notes-auto-delete&lt;/code&gt; like so.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#fff;background-color:#000;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-emacs-lisp&#34; data-lang=&#34;emacs-lisp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;(&lt;span style=&#34;color:#00d3d0&#34;&gt;setopt&lt;/span&gt; &lt;span style=&#34;color:#00d3d0&#34;&gt;org-remark-notes-auto-delete&lt;/span&gt; &lt;span style=&#34;color:#f78fe7&#34;&gt;:auto-delete&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img src=&#34;./2023-10-01-auto-delete-customizing.png&#34; alt=&#34;Customizing org-remark-notes-auto-delete&#34;&gt;&lt;/p&gt;
&lt;p&gt;Furthermore,  with v1.3, if you pass a universal argument to &lt;code&gt;org-remark-delete&lt;/code&gt; (e.g. &lt;code&gt;C-u M-x org-remark-delete&lt;/code&gt;) you can manually get Org-remark to do automatic deletion for the highlight at point. You can also pass double universal arguments to &lt;code&gt;org-remark-remove&lt;/code&gt; (e.g. &lt;code&gt;C-u C-u M-x org-remark-remove&lt;/code&gt;) for the same operation. This should make sense because passing a single universal argument to &lt;code&gt;org-remark-remove&lt;/code&gt; is the same as &lt;code&gt;org-remark-delete&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&#34;background&#34;&gt;Background&lt;/h3&gt;
&lt;p&gt;Org-remark is conservative about deleting entries in the marginal notes file&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;. This is intentional. Notes that you write are a result of your intellectual efforts. You can write extensive research notes with a sub-headings in the marginal notes. Your tool must not meddle with them; you must have the full control over what happens to them.&lt;/p&gt;
&lt;p&gt;This is the reason why Org-remark differentiates &lt;code&gt;remove&lt;/code&gt; and &lt;code&gt;delete&lt;/code&gt;.  &lt;code&gt;Remove&lt;/code&gt; does not delete the headline in the marginal notes file, but does only the properties so as to remove the highlight.  &lt;code&gt;Delete&lt;/code&gt; deletes the headline, but it will ask you for your confirmation if you have written marginal notes under the headline. The distinction may make more sense with a concrete example. If you are writing a research paper, and you want to leave some comments to a paragraph you want to expand later. You highlight a word and write the comments in the marginal notes. You also make the headline a TODO so that it appears in your agenda. Later, you decide to remove the line that includes the highlight. Org-remark does not delete the TODO headline and comments in the marginal notes; it only removes the highlight in your research paper as you have deleted the line it belongs.&lt;/p&gt;
&lt;p&gt;This conservative behaviour, however, may lead to cluttering the marginal notes file, as noted in &lt;a href=&#34;https://github.com/nobiot/org-remark/issues/21&#34;&gt;GitHub issue #21&lt;/a&gt;. In response to this discussion, version 1.3 introduces a new option to have Org-remark to automatically delete the headlines when you delete text that includes highlights if there is no marginal notes.&lt;/p&gt;
&lt;p&gt;The default is as it always has been; if you are happy with the way Org-remark automatically removes highlights and corresponding entries in the marginal notes file, then there is nothing you need to do. Please file a bug report if you observe something different.&lt;/p&gt;
&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;Refer to the &lt;a href=&#34;https://nobiot.github.io/org-remark/#How-to-Remove-and-Delete-Highlights&#34;&gt;online manual&lt;/a&gt; or the Info node in Emacs: &lt;code&gt;(info &amp;quot;(org-remark) How to Remove and Delete Highlights&amp;quot;)&lt;/code&gt;&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
</description>
    </item>
    <item>
      <title>Org-remark v1.3 Line Highlight</title>
      <link>https://nobiot.com/blog/2023-09-11_org-remark-v1.3-line-highlight/</link>
      <pubDate>Mon, 11 Sep 2023 19:17:00 +0200</pubDate>
      <author>me@nobiot.com (nobiot.com)</author>
      <guid>https://nobiot.com/blog/2023-09-11_org-remark-v1.3-line-highlight/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://github.com/nobiot/org-remark&#34;&gt;Org-remark&lt;/a&gt; is an Emacs package I
have been developing. It lets you highlight and annotate text files,
websites, EPUB books and Info documentation with using Org mode.&lt;/p&gt;
&lt;h2 id=&#34;line-highlight&#34;&gt;Line Highlight&lt;/h2&gt;
&lt;p&gt;With version 1.3, you can highlight a whole line. It is a new type of highlights, which adds a mark on the margin of the buffer. See the screen image below.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;./2023-09-11T200133_line-highlights-range-highlights.png&#34; alt=&#34;Text of Alice with range-highlights and line-highlights&#34;&gt;&lt;/p&gt;
&lt;p&gt;The yellow and blue asterisks &amp;ldquo;*&amp;rdquo; on the left margin indicate that the respective lines have a line highlight. The second line highlight is surrounded by parentheses. This indicates that it has some marginal notes written for the line. You can &lt;a href=&#34;https://nobiot.com/articles/emacs/org-remark/2023-08-20_how-to-set-org-remark-to-use-svg-icons/&#34;&gt;customize these marks&lt;/a&gt; to be an icon instead of the default asterisk and parentheses..&lt;/p&gt;
&lt;h3 id=&#34;how-to-highlight-a-line&#34;&gt;How to Highlight a Line&lt;/h3&gt;
&lt;p&gt;To highlight a line, use the default highlighter pen interactive function: &lt;code&gt;org-remark-mark-line&lt;/code&gt;. Place your cursor on the line of text you wish to highlight and call it (e.g. &lt;code&gt;M-x org-remark-mark-line&lt;/code&gt;). That&amp;rsquo;s it. You do not need to specify a range.&lt;/p&gt;
&lt;p&gt;The rest works in the same way as the range-highlight. You can open/view the notes by placing your cursor anywhere on the line and call &lt;code&gt;org-remark-open/view&lt;/code&gt;. You can use &lt;code&gt;org-remark-next/prev&lt;/code&gt; to navigate through highlights for both range- and line-highlights. Org-remark treats both types of highlights in the same way.&lt;/p&gt;
&lt;h3 id=&#34;custom-line-highlighter-pen&#34;&gt;Custom Line-Highlighter Pen&lt;/h3&gt;
&lt;p&gt;You can also create your own highlighter pen functions with different colors for line highlights. The tool you use to do so is the same as before: &lt;code&gt;org-remark-create&lt;/code&gt;. See some examples below.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#fff;background-color:#000;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-emacs-lisp&#34; data-lang=&#34;emacs-lisp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a8a8a8&#34;&gt;;; Default line-highlighter function.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;(&lt;span style=&#34;color:#00d3d0&#34;&gt;org-remark-create&lt;/span&gt; &lt;span style=&#34;color:#79a8ff&#34;&gt;&amp;#34;line&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                   &lt;span style=&#34;color:#79a8ff&#34;&gt;&amp;#39;org-remark-line-highlighter&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                   &lt;span style=&#34;color:#00d3d0&#34;&gt;&amp;#39;&lt;/span&gt;(&lt;span style=&#34;color:#00d3d0&#34;&gt;org-remark-type&lt;/span&gt; &lt;span style=&#34;color:#00d3d0&#34;&gt;line&lt;/span&gt;))
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a8a8a8&#34;&gt;;; The blue highlight is a custom line-highlighter created by the following.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;(&lt;span style=&#34;color:#00d3d0&#34;&gt;org-remark-create&lt;/span&gt; &lt;span style=&#34;color:#79a8ff&#34;&gt;&amp;#34;line-alt&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                   &lt;span style=&#34;color:#79a8ff&#34;&gt;&amp;#39;diff-hunk-header&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                   &lt;span style=&#34;color:#00d3d0&#34;&gt;&amp;#39;&lt;/span&gt;(&lt;span style=&#34;color:#00d3d0&#34;&gt;org-remark-type&lt;/span&gt; &lt;span style=&#34;color:#00d3d0&#34;&gt;line&lt;/span&gt;))
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The important part is the last argument &lt;code&gt;&#39;(org-remark-type line)&lt;/code&gt; passed to &lt;code&gt;org-remark-create&lt;/code&gt;. This argument is a property list, which consists of property-value pairs. In these examples above, I am passing one pair: property &lt;code&gt;org-remark-type&lt;/code&gt; and value &lt;code&gt;line&lt;/code&gt;. This creates a new line-highlighter pen interactive function, instead of a range-highlighter one.&lt;/p&gt;
&lt;h3 id=&#34;showing-highlight-marks-on-right-margin&#34;&gt;Showing Highlight Marks on Right Margin&lt;/h3&gt;
&lt;p&gt;You can customize the highlight marks to be displayed on the right margin with the user option &lt;code&gt;org-remark-line-margin-side&lt;/code&gt;. The result looks like this in the screenshot below. It also shows an SVG icon for highlight marks instead of the default asterisk.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;./2023-09-30-right-margin.png&#34; alt=&#34;Highlight marks on the right margin&#34;&gt;&lt;/p&gt;
&lt;p&gt;Customizing is easy; like so.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#fff;background-color:#000;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-emacs-lisp&#34; data-lang=&#34;emacs-lisp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a8a8a8&#34;&gt;;; default is left-margin&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;(&lt;span style=&#34;color:#00d3d0&#34;&gt;setopt&lt;/span&gt; &lt;span style=&#34;color:#00d3d0&#34;&gt;org-remark-line-margin-side&lt;/span&gt; &lt;span style=&#34;color:#79a8ff&#34;&gt;&amp;#39;right-margin&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img src=&#34;./2023-09-30-right-margin-customizing.png&#34; alt=&#34;Customizing org-remark-line-margin-side&#34;&gt;&lt;/p&gt;
&lt;p&gt;This is the main user option. There are other minor ones, which you can find with &lt;code&gt;M-x customize-group&lt;/code&gt;. Look for &lt;code&gt;org-remark-line&lt;/code&gt;.&lt;/p&gt;
</description>
    </item>
    <item>
      <title>How to Set Org-remark to Use SVG Icons</title>
      <link>https://nobiot.com/blog/2023-08-20_how-to-set-icons-to-be-svg-images/</link>
      <pubDate>Sun, 20 Aug 2023 18:43:00 +0200</pubDate>
      <author>me@nobiot.com (nobiot.com)</author>
      <guid>https://nobiot.com/blog/2023-08-20_how-to-set-icons-to-be-svg-images/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;./2023-08-20-SVG-icon.png&#34; alt=&#34;Highlights with an icon indicating annotations
exist&#34; title=&#34;Highlights with an icon indicating
annotations exist&#34;&gt;&lt;/p&gt;
&lt;p&gt;I have released version 1.2.0 of
&lt;a href=&#34;https://github.com/nobiot/org-remark&#34;&gt;Org-remark&lt;/a&gt;. It&amp;rsquo;s an Emacs
package that lets you highlight and annotate text files, websites, EPUB
books and Info documentation with using Org mode.&lt;/p&gt;
&lt;p&gt;In this version, highlights can display an icon to visually indicate
that annotations exist for them. This was implemented in response to a
feature request I received via YouTube comments and recorded in &lt;a href=&#34;https://github.com/nobiot/org-remark/issues/64&#34;&gt;issue
#64&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The icon by default is a string of ASCII characters &amp;ldquo;&lt;code&gt;(*)&lt;/code&gt;&amp;rdquo; so that it
can be used for terminals. You can easily customize Org-remark to use an
SVG image as shown in the image above.&lt;/p&gt;
&lt;p&gt;There are mainly two ways:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Use the new built-in &lt;code&gt;icons&lt;/code&gt; library available as of Emacs version
29.1&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Create a custom function and use a third-party library such as
&lt;a href=&#34;https://github.com/rougier/svg-lib&#34;&gt;&lt;code&gt;svg-lib&lt;/code&gt;&lt;/a&gt; by Nicolas Rougier&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I will quickly show you the first option to use the new built-in
library, which I believe is the easier.&lt;/p&gt;
&lt;h2 id=&#34;define-an-icon&#34;&gt;Define an icon&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Get or create an SVG icon&lt;/p&gt;
&lt;p&gt;In my example, I downloaded a &amp;ldquo;pen&amp;rdquo; icon as an &lt;code&gt;.svg&lt;/code&gt; file from
&lt;a href=&#34;https://boxicons.com/?query=pen&#34;&gt;Boxicons&lt;/a&gt; (&lt;a href=&#34;https://boxicons.com/usage#license&#34;&gt;licensed under The MIT
License&lt;/a&gt;).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Put the downloaded SVG file somewhere in your local&lt;/p&gt;
&lt;p&gt;I put it at &lt;code&gt;~/.config/emacs/.cache/svg/bx-pen.svg&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Use &lt;code&gt;define-icon&lt;/code&gt; macro to create an icon with the SVG file&lt;/p&gt;
&lt;p&gt;For example, I used the code below. Make sure to change my example to
your own file name. You can also play with the &lt;code&gt;:height&lt;/code&gt; property as
you see fit. You can refer to the relevant Info nodes for more
configuration detail by evaluating &lt;code&gt;(info &amp;quot;(elisp)icons)&lt;/code&gt; and &lt;code&gt;(info &amp;quot;(emacs)icons&amp;quot;)&lt;/code&gt; in Emacs (version 29.1 onward).&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#fff;background-color:#000;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-emacs-lisp&#34; data-lang=&#34;emacs-lisp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;(&lt;span style=&#34;color:#00d3d0&#34;&gt;define-icon&lt;/span&gt; &lt;span style=&#34;color:#00d3d0&#34;&gt;annotation&lt;/span&gt; nil
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#00d3d0&#34;&gt;&amp;#39;&lt;/span&gt;((&lt;span style=&#34;color:#00d3d0&#34;&gt;image&lt;/span&gt; &lt;span style=&#34;color:#79a8ff&#34;&gt;&amp;#34;/home/nobiot/.config/emacs/.cache/svg/bx-pen.svg&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;           &lt;span style=&#34;color:#f78fe7&#34;&gt;:height&lt;/span&gt; (&lt;span style=&#34;color:#00bcff&#34;&gt;0.8&lt;/span&gt; &lt;span style=&#34;color:#00d3d0&#34;&gt;.&lt;/span&gt; &lt;span style=&#34;color:#00d3d0&#34;&gt;em&lt;/span&gt;)))
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#79a8ff&#34;&gt;&amp;#34;Notes svg icon for Org-remark&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f78fe7&#34;&gt;:version&lt;/span&gt; &lt;span style=&#34;color:#00bcff&#34;&gt;29.1&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;customize-org-remark-to-use-the-icon&#34;&gt;Customize Org-remark to use the icon&lt;/h2&gt;
&lt;p&gt;Now the icon has been defined, you can set it to customizing variable
&lt;code&gt;org-remark-icon-notes&lt;/code&gt;, like so:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#fff;background-color:#000;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-emacs-lisp&#34; data-lang=&#34;emacs-lisp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a8a8a8&#34;&gt;;; I use `setopt` that is made available as of 29.1. `setq` works too.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a8a8a8&#34;&gt;;; Use whichever you prefer.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;(&lt;span style=&#34;color:#00d3d0&#34;&gt;setopt&lt;/span&gt; &lt;span style=&#34;color:#00d3d0&#34;&gt;org-remark-icon-notes&lt;/span&gt; (&lt;span style=&#34;color:#00d3d0&#34;&gt;icon-string&lt;/span&gt; &lt;span style=&#34;color:#79a8ff&#34;&gt;&amp;#39;annotation&lt;/span&gt;))
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;If you have a buffer with highlights already open, you would need to
&lt;code&gt;revert-buffer&lt;/code&gt; to reload the highlights. You should see the icon you
have defined instead of the default &amp;ldquo;&lt;code&gt;(*)&lt;/code&gt;&amp;rdquo; string, like you see in the
screen capture at the top of this article.&lt;/p&gt;
</description>
    </item>
  </channel>
</rss>
