. local author . https://localauthor.github.io/ Recent content on . local author . Hugo -- gohugo.io en-us Fri, 03 Oct 2025 10:04:00 +0300 #### https://localauthor.github.io/posts/fog-smoke/ Fri, 03 Oct 2025 10:04:00 +0300 https://localauthor.github.io/posts/fog-smoke/ <figure><img src="https://localauthor.github.io/images/fog-smoke.jpg"> </figure> <div class="literal"> <div align="left"> <p>2025-09-26</p> </div> </div> Simple Document Tagging with 'doc-tags.el' https://localauthor.github.io/posts/doc-tags/ Thu, 18 Sep 2025 12:17:00 +0300 https://localauthor.github.io/posts/doc-tags/ <p><em>When I posted last week about tab-sets.el, I didn’t know that this month’s <a href="https://www.emacswiki.org/emacs/Carnival#h5o-5" target="_blank">Emacs Carnival</a> topic is <a href="https://goritskov.com/posts/obscure_packages.html" target="_blank">“Obscure Packages.”</a> Well, it’s hard to be more obscure than an unpublished package that I use for my own idiosyncratic ends. So, here’s another!</em></p> <style>.org-center { margin-left: auto; margin-right: auto; text-align: center; }</style> <div class="org-center"> <p><strong>——————————————————————————————</strong></p> </div> <p>Introducing <a href="https://github.com/localauthor/doc-tags" target="_blank"><code>doc-tags.el</code></a>: a simple, low-overhead Emacs package for tagging and retrieving files using a SQLite backend.</p> <p><code>doc-tags</code> is a straightforward package that lets you:</p> <ul> <li>Tag any file or directory on your computer, with one or more tags</li> <li>Quickly find and open files by tag, using “AND” (all tags) or “OR” (any tag) search</li> <li>Update, rename, or remove tags interactively</li> <li>Keep your tagged-doc database in a single regular file</li> </ul> <p>You add only what matters to you: notes, readings, drafts, reference folders, syllabi, whatever. Tags are just Emacs strings — no renaming or relocating files, no global search, no magic.</p> <h2 id="nota-bene">Nota Bene</h2> <p>In general, I am skeptical about the long-term use value of tags. I find them flimsy. I much prefer organizing files in directories, and relying on searching to find what I’m looking for.</p> <p>With that in mind, <code>doc-tags</code> is not — <em>and is not meant to be</em> — a replacement for file management writ large. I use <a href="https://devontechnologies.com" target="_blank">devonthink</a> for that. It is a huge directory structure of PDFs and lecture notes, organized within the devonthink program in all sort of useful ways, for long-term storage and findability, but otherwise — for all intents and purposes — a jumble of files in a maze of directories.</p> <p>The major downside of devonthink, for me, is that its database structure is not accessible from inside Emacs. (Yet?) Sure, I can use a recursive search to plumb the depths of my devonthink database for what I think I need, but that’s a somewhat crude approach.</p> <p>So, I wrote <code>doc-tags</code> as a middle-ground, ad-hoc solution, allowing me to assign tags to files in disparate locations across my file system, wherever they may be, even deep within my devonthink database.</p> <p>Because of my deep skepticism of tags, I mostly use <code>doc-tags</code> when working on fleeting tasks, like preparing for a class or working on short-term writing projects. When the task is finished, I just delete the tags I no longer need and move on without remorse. No need to create a new directory, copy or symlink files. Just quick and dirty tagging, for the moment.</p> <h2 id="how-to-set-it-up">How to set it up</h2> <p><code>doc-tags.el</code> isn’t up on M/ELPA, so install directly from GitHub:</p> <div class="highlight"><pre tabindex="0" style="background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span style="display:flex;"><span>(<span style="color:#a90d91">use-package</span> <span style="color:#000">doc-tags</span> </span></span><span style="display:flex;"><span> <span style="color:#a90d91">:ensure</span> <span style="color:#000">nil</span> </span></span><span style="display:flex;"><span> <span style="color:#a90d91">:vc</span> (<span style="color:#a90d91">:url</span> <span style="color:#c41a16">&#34;https://github.com/localauthor/doc-tags&#34;</span>) </span></span><span style="display:flex;"><span> <span style="color:#a90d91">:custom</span> </span></span><span style="display:flex;"><span> (<span style="color:#000">doc-tags-db-file</span> <span style="color:#c41a16">&#34;~/.emacs.d/var/doc-tags.sqlite&#34;</span>) <span style="color:#177500">;; pick your database location</span> </span></span><span style="display:flex;"><span> <span style="color:#a90d91">:config</span> </span></span><span style="display:flex;"><span> (<span style="color:#000">doc-tags-connect</span>) <span style="color:#177500">;; opens/creates the database and initializes the schema</span> </span></span><span style="display:flex;"><span> ) </span></span></code></pre></div><p>You’ll also need <a href="https://github.com/ahyatt/triples" target="_blank"><code>triples</code></a> (which manages the SQLite database and backups) and <code>sqlite3</code> available to Emacs.</p> <h2 id="how-does-it-work">How does it work?</h2> <ul> <li>To add a document: <code>M-x doc-tags-add-doc</code> (prompts for a file, then for one or more tags)</li> <li>To search by tag: <code>M-x doc-tags-find-file</code> (AND logic by default; use C-u for OR search)</li> <li>To add/remove tags: <code>M-x doc-tags-add-tag</code> / <code>M-x doc-tags-remove-tag</code> To edit/rename tags: <code>M-x doc-tags-edit-tag</code></li> <li>To remove a document: <code>M-x doc-tags-remove-doc</code></li> </ul> <p>Most commands offer smart completion (minibuffer with tag annotations, document previews); if you use <a href="https://github.com/oantolin/embark" target="_blank"><code>embark</code></a>, doc-tags offers a keymap for quick actions on tags and docs.</p> Managing Emacs Tabs with 'tab-sets.el' https://localauthor.github.io/posts/tab-sets/ Sat, 13 Sep 2025 01:54:00 +0300 https://localauthor.github.io/posts/tab-sets/ <style>.org-center { margin-left: auto; margin-right: auto; text-align: center; }</style> <div class="org-center"> <p><strong>——————————————————————————————</strong></p> </div> <p>In Emacs, my text editor of choice, <code>tab-bar-mode</code> lets you replicate something like the experience of using tabs in a web browser. For me, this means opening a lot of tabs with notes, lists, drafts, etc., such that my tab bar becomes a visual buffet of whatever documents are pertinent to the task at hand, be it writing, teaching, coding, whatever.</p> <p>This works great for me, on a project by project basis. But what if I want to switch to another task or project? What is to become of the perfectly curated set of tabs I have open?</p> <p>The problem of tab proliferation is a <a href="https://www.hackingyouradhd.com/podcast/digital-declutter-too-many-tabs" target="_blank">distinctly</a> <a href="https://www.makeuseof.com/browser-tab-management-tips/" target="_blank">modern</a> <a href="https://www.newyorker.com/cartoons/daily-cartoon/tuesday-february-4th-open-tabs" target="_blank">one</a>. Raise your hand if the top of your web browser looks like a graveyard of articles you’ve been meaning to read since the last time your computer crashed. Many browsers have solved this issue by allowing users to save and restore groups of tabs under meaningful names, like “Research Project” or “Articles I Still Won’t Read.” But who does that? (Ok, I do&hellip;)</p> <p>As far as I know,™ Emacs does not offer any built-in way to save and restore a beautifully curated row of tabs. There are <a href="https://www.youtube.com/watch?v=pqrFAsO0KA4" target="_blank">many options</a> for saving and restoring <a href="https://github.com/alphapapa/activities.el" target="_blank">activities</a>, <a href="https://github.com/Bad-ptr/persp-mode.el" target="_blank">workspaces</a>, and <a href="https://github.com/protesilaos/beframe" target="_blank">frame/buffer</a> configurations. But none that do exactly what I want, namely, allow me to save and later re-open a set of tabs, one file per tab, in a specific order.</p> <p>So, I wrote <a href="https://github.com/localauthor/tab-sets" target="_blank"><code>tab-sets.el</code></a>.</p> <p>I find <code>tab-sets</code> most useful for teaching and writing.</p> <p>For example: I sometimes teach the same class several times in a week. I therefore often found myself repeating the process of finding and re-opening all the files that I wanted to reference for that class, mostly lecture notes and slides (exported with <a href="https://github.com/yjwen/org-reveal" target="_blank">org-reveal</a>). Because these files can be spread out across my file system, finding and re-opening them is rarely as simple as navigating to a dedicated directory.</p> <p>Now, with tab-sets.el, I can use a single command, <code>tab-sets-save</code>, to save the current frame’s tabs under a meaningful name, say, “Week 1 Class”, and safely close the frame. When it’s time to teach the same class again, I can call <code>tab-sets-open</code>, select “Week 1 Class,” and find a brand new frame displaying all the tabs exactly as they were when I saved them.</p> <p>The same process works for quickly returning to a writing project.</p> <p>A few niceties include:</p> <ul> <li>minibuffer annotations, offering a preview of each tab set</li> <li>optional integration with <code>bookmarks.el</code>, meaning tab sets are accessible as standard bookmarks, through <code>list-bookmarks</code></li> <li>optional integration with <a href="https://github.com/oantolin/embark" target="_blank"><code>embark</code></a>, meaning you can open, rename, or delete a tab set right from the minibuffer</li> </ul> <p>This package isn’t published anywhere, so install directly, however you want or know how. For example:</p> <div class="highlight"><pre tabindex="0" style="background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span style="display:flex;"><span>(<span style="color:#a90d91">use-package</span> <span style="color:#000">tab-sets</span> </span></span><span style="display:flex;"><span> <span style="color:#a90d91">:ensure</span> <span style="color:#000">nil</span> </span></span><span style="display:flex;"><span> <span style="color:#a90d91">:vc</span> (<span style="color:#a90d91">:url</span> <span style="color:#c41a16">&#34;https://github.com/localauthor/tab-sets&#34;</span>) </span></span><span style="display:flex;"><span> <span style="color:#a90d91">:custom</span> </span></span><span style="display:flex;"><span> (<span style="color:#000">tab-sets-data-file</span> <span style="color:#c41a16">&#34;~/.emacs.d/var/tab-sets.eld&#34;</span>) </span></span><span style="display:flex;"><span> <span style="color:#a90d91">:config</span> </span></span><span style="display:flex;"><span> (<span style="color:#000">tab-sets-setup-embark</span>)) </span></span></code></pre></div> Ežerų Dugne https://localauthor.github.io/posts/ezerudugne/ Sat, 22 Feb 2025 17:46:00 +0200 https://localauthor.github.io/posts/ezerudugne/ <style>.org-center { margin-left: auto; margin-right: auto; text-align: center; }</style> <div class="org-center"> <p><strong>——————————————————————————————</strong></p> </div> <style>.org-center { margin-left: auto; margin-right: auto; text-align: center; }</style> <div class="org-center"> <iframe width="560" height="315" src="https://www.youtube.com/embed/dGhYUp_tT3s?si=njyiyCXM7VNKrYr4" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe> </div> <style>.org-center { margin-left: auto; margin-right: auto; text-align: center; }</style> <div class="org-center"> <p><strong>“But nature is a stranger yet”</strong></p> </div> <div class="verse"> <p>   in the above film –<br />            <em>Ežerų dugne</em> (In the Depths of Lakes) (2014), dir. Akvilė Anglickaitė<br /> — —<br /> divers explore their love for four Lithuanian lakes<br /> and the alien terrain at their depths:<br /> — —<br /></p> </div> <p><img src="https://localauthor.github.io/images/ezeras1.jpg" alt=""> — <img src="https://localauthor.github.io/images/ezeras2.jpg" alt=""> — <img src="https://localauthor.github.io/images/ezeras3.jpg" alt=""> — <img src="https://localauthor.github.io/images/ezeras4.jpg" alt=""> — —</p> <div class="verse"> <p>             on view at <a href="https://mo.lt/en/ivykiai/longing/" target="_blank">MO</a> until March 30, 2025,<br />                  as part of an exhibition on <em>solastalgia</em><br /> —<br /></p> </div> Emacs Popup Frames Anywere — MacOS Edition https://localauthor.github.io/posts/popup-frames/ Sat, 28 Sep 2024 11:15:00 +0300 https://localauthor.github.io/posts/popup-frames/ <p><em>This post shows how to set up Emacs popup frames in macOS, allowing quick access to Emacs functions from anywhere on your system.</em></p> <style>.org-center { margin-left: auto; margin-right: auto; text-align: center; }</style> <div class="org-center"> <p><strong>——————————————————————————————</strong></p> </div> <p>As much as I would like to live in <a href="https://www.gnu.org/software/emacs/" target="_blank">Emacs</a> full time, I’m not quite there. But a <a href="https://protesilaos.com/codelog/2024-09-19-emacs-command-popup-frame-emacsclient/" target="_blank">recent post</a> by <a href="https://protesilaos.com" target="_blank">Protesilaos Stavrou</a> (aka Prot) is helping me bridge the gap.</p> <p>Prot has written a short but powerful bit of code that allows you to access any piece of Emacs goodness — like <code>org-capture</code> — from outside Emacs with just one keystroke. The only requirement is that you are running in <code>server-mode</code> or using the Emacs daemon.</p> <p>Whether you’re in a web browser, a PDF reader, or just staring at an empty desktop, your favorite Emacs command can be right at your fingertips. See <a href="https://www.youtube.com/watch?v=vbWxT8tht9A" target="_blank">Prot’s video</a> for a thorough demonstration.</p> <p>Now, I can quickly open a PDF using citar or copy a password from my pass-store. See below for some other useful popups — org-agenda view, mu4e inbox, and a quick translation interface.</p> <figure><img src="https://localauthor.github.io/images/popup-frame-citar-demo.gif"> </figure> <h2 id="setting-up-emacs-popup-frames-in-macos">Setting Up Emacs Popup Frames in MacOS</h2> <p>Since Prot wrote the code for use in Linux, it didn’t immediately work in MacOS. It turns out, the only necessary change was to add a <code>window-system</code> frame parameter to the popup frame. (See code below).</p> <p>But while I was at it, I made a few additions: 1) a <code>title</code> frame parameter, which allows me to configure the popup frame size and placement through my tiling window manager, <a href="https://github.com/koekeishiya/yabai" target="_blank">yabai</a>; and 2) an optional argument that runs <code>delete-frame</code> after the main command runs. This makes it possible to call commands that are minibuffer-centric — in my case, that’s <code>citar-open-file</code> and <code>password-store-copy</code>.</p> <p>Here’s the main code:</p> <div class="highlight"><pre tabindex="0" style="background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span style="display:flex;"><span>(<span style="color:#a90d91">defun</span> <span style="color:#000">popup-frame-delete</span> (<span style="color:#a90d91">&amp;rest</span> <span style="color:#000">_</span>) </span></span><span style="display:flex;"><span> <span style="color:#c41a16">&#34;Kill selected frame if it has parameter </span><span style="color:#c41a16">`popup-frame&#39;</span><span style="color:#c41a16">.&#34;</span> </span></span><span style="display:flex;"><span> (<span style="color:#a90d91">when</span> (<span style="color:#000">frame-parameter</span> <span style="color:#000">nil</span> <span style="color:#c41a16">&#39;popup-frame</span>)) </span></span><span style="display:flex;"><span> (<span style="color:#000">delete-frame</span>)) </span></span><span style="display:flex;"><span> </span></span><span style="display:flex;"><span>(<span style="color:#a90d91">defmacro</span> <span style="color:#000">popup-frame-define</span> (<span style="color:#000">command</span> <span style="color:#000">title</span> <span style="color:#a90d91">&amp;optional</span> <span style="color:#000">delete-frame</span>) </span></span><span style="display:flex;"><span> <span style="color:#c41a16">&#34;Define interactive function to call COMMAND in frame with TITLE.&#34;</span> </span></span><span style="display:flex;"><span> <span style="color:#000">`</span>(<span style="color:#a90d91">defun</span> <span style="color:#000">,</span>(<span style="color:#000">intern</span> (<span style="color:#000">format</span> <span style="color:#c41a16">&#34;popup-frame-%s&#34;</span> <span style="color:#000">command</span>)) () </span></span><span style="display:flex;"><span> (<span style="color:#a90d91">interactive</span>) </span></span><span style="display:flex;"><span> (<span style="color:#a90d91">let*</span> ((<span style="color:#000">display-buffer-alist</span> <span style="color:#000">&#39;</span>((<span style="color:#c41a16">&#34;&#34;</span>) </span></span><span style="display:flex;"><span> (<span style="color:#000">display-buffer-full-frame</span>)))) </span></span><span style="display:flex;"><span> (<span style="color:#000">frame</span> (<span style="color:#000">make-frame</span> </span></span><span style="display:flex;"><span> <span style="color:#000">&#39;</span>((<span style="color:#000">title</span> <span style="color:#000">.</span> <span style="color:#000">,</span><span style="color:#000">title</span>) </span></span><span style="display:flex;"><span> (<span style="color:#000">window-system</span> <span style="color:#000">.</span> <span style="color:#000">ns</span>) </span></span><span style="display:flex;"><span> (<span style="color:#000">popup-frame</span> <span style="color:#000">.</span> <span style="color:#000">t</span>))))) </span></span><span style="display:flex;"><span> (<span style="color:#000">select-frame</span> <span style="color:#000">frame</span>) </span></span><span style="display:flex;"><span> (<span style="color:#000">switch-to-buffer</span> <span style="color:#c41a16">&#34; popup-frame-hidden-buffer&#34;</span>) </span></span><span style="display:flex;"><span> (<span style="color:#a90d91">condition-case</span> <span style="color:#000">nil</span> </span></span><span style="display:flex;"><span> (<span style="color:#a90d91">progn</span> </span></span><span style="display:flex;"><span> (<span style="color:#000">call-interactively</span> <span style="color:#c41a16">&#39;,command</span>) </span></span><span style="display:flex;"><span> (<span style="color:#000">delete-other-windows</span>)) </span></span><span style="display:flex;"><span> (<span style="color:#000">error</span> (<span style="color:#000">delete-frame</span> <span style="color:#000">frame</span>))) </span></span><span style="display:flex;"><span> (<span style="color:#a90d91">when</span> <span style="color:#000">,</span><span style="color:#000">delete-frame</span> </span></span><span style="display:flex;"><span> (<span style="color:#000">sit-for</span> <span style="color:#1c01ce">0.2</span>) </span></span><span style="display:flex;"><span> (<span style="color:#000">delete-frame</span> <span style="color:#000">frame</span>)))) </span></span><span style="display:flex;"><span> </span></span><span style="display:flex;"><span>(<span style="color:#a90d91">use-package</span> <span style="color:#000">server</span> </span></span><span style="display:flex;"><span> <span style="color:#a90d91">:defer</span> <span style="color:#1c01ce">1</span> </span></span><span style="display:flex;"><span> <span style="color:#a90d91">:config</span> </span></span><span style="display:flex;"><span> (<span style="color:#a90d91">unless</span> (<span style="color:#000">server-running-p</span>) </span></span><span style="display:flex;"><span> (<span style="color:#000">server-start</span>))) </span></span></code></pre></div><p>And here are the macro calls that define commands:</p> <div class="highlight"><pre tabindex="0" style="background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span style="display:flex;"><span>(<span style="color:#000">popup-frame-define</span> <span style="color:#000">org-capture</span> <span style="color:#c41a16">&#34;capture-popup&#34;</span>) </span></span><span style="display:flex;"><span>(<span style="color:#000">add-hook</span> <span style="color:#c41a16">&#39;org-capture-after-finalize-hook</span> <span style="color:#000">#&#39;</span><span style="color:#000">popup-frame-delete</span>) </span></span><span style="display:flex;"><span> </span></span><span style="display:flex;"><span>(<span style="color:#000">popup-frame-define</span> <span style="color:#000">password-store-copy</span> <span style="color:#c41a16">&#34;minimal-popup&#34;</span> <span style="color:#c41a16">&#39;delete-frame</span>) </span></span><span style="display:flex;"><span> </span></span><span style="display:flex;"><span>(<span style="color:#000">popup-frame-define</span> <span style="color:#000">citar-open-files</span> <span style="color:#c41a16">&#34;minimal-popup&#34;</span> <span style="color:#c41a16">&#39;delete-frame</span>) </span></span></code></pre></div><h2 id="triggering-popups-with-keyboard-shortcuts">Triggering Popups with Keyboard Shortcuts</h2> <p>To quickly bring up these popup frames with keyboard shortcuts, I use <a href="https://github.com/koekeishiya/skhd" target="_blank">skhd</a>, a hotkey daemon for macOS. The following configuration goes in the skhd config file:</p> <div class="highlight"><pre tabindex="0" style="background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>cmd + ctrl - c : emacsclient -e <span style="color:#c41a16">&#39;(popup-frame-org-capture)&#39;</span> <span style="color:#000">||</span> yabai -m window –focus recent </span></span><span style="display:flex;"><span>cmd + ctrl - o : emacsclient -e <span style="color:#c41a16">&#39;(popup-frame-citar-open-files)&#39;</span> <span style="color:#000">||</span> yabai -m window –focus recent </span></span><span style="display:flex;"><span>cmd + ctrl - p : emacsclient -e <span style="color:#c41a16">&#39;(popup-frame-password-store-copy)&#39;</span> <span style="color:#000">||</span> yabai -m window –focus recent </span></span></code></pre></div><h2 id="managing-windows-with-yabai">Managing Windows with yabai</h2> <p>Finally, I have configured my tiling window manager, <a href="https://github.com/koekeishiya/yabai" target="_blank">yabai</a>, to give the popup frames the desired size and placement.</p> <p>First, the following goes in the yabai config file:</p> <div class="highlight"><pre tabindex="0" style="background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>yabai -m signal –add <span style="color:#000">event</span><span style="color:#000">=</span>window_created <span style="color:#000">app</span><span style="color:#000">=</span><span style="color:#c41a16">&#34;Emacs&#34;</span> <span style="color:#000">action</span><span style="color:#000">=</span><span style="color:#c41a16">&#34;~/.yabai-emacs-window-handler.sh&#34;</span> </span></span></code></pre></div><p>This will run a bash script (located at ~/.yabai-emacs-window-handler.sh) every time a new Emacs frame is created. The script tells yabai how to move and resize the new frame, depending on the frame’s title. Here is that script:</p> <div class="highlight"><pre tabindex="0" style="background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span><span style="color:#633820">#!/bin/bash </span></span></span><span style="display:flex;"><span><span style="color:#633820"></span> </span></span><span style="display:flex;"><span><span style="color:#000">data</span><span style="color:#000">=</span><span style="color:#a90d91">$(</span>yabai -m query –windows –window <span style="color:#000">$YABAI_WINDOW_ID</span><span style="color:#a90d91">)</span> </span></span><span style="display:flex;"><span> </span></span><span style="display:flex;"><span><span style="color:#000">title</span><span style="color:#000">=</span><span style="color:#a90d91">$(</span><span style="color:#a90d91">echo</span> <span style="color:#000">$data</span> | jq .title<span style="color:#a90d91">)</span> </span></span><span style="display:flex;"><span><span style="color:#000">display</span><span style="color:#000">=</span><span style="color:#a90d91">$(</span><span style="color:#a90d91">echo</span> <span style="color:#000">$data</span> | jq .display<span style="color:#a90d91">)</span> </span></span><span style="display:flex;"><span> </span></span><span style="display:flex;"><span><span style="color:#a90d91">if</span> <span style="color:#000">[[</span> <span style="color:#000">$title</span> <span style="color:#000">=</span>~ <span style="color:#c41a16">&#34;capture-popup&#34;</span> <span style="color:#000">&amp;&amp;</span> <span style="color:#000">$display</span> <span style="color:#000">==</span> <span style="color:#1c01ce">1</span> <span style="color:#000">]]</span>; <span style="color:#a90d91">then</span> </span></span><span style="display:flex;"><span>yabai -m window <span style="color:#000">$YABAI_WINDOW_ID</span> –toggle float –move abs:430:230 </span></span><span style="display:flex;"><span>yabai -m window <span style="color:#000">$YABAI_WINDOW_ID</span> –resize abs:655:300 </span></span><span style="display:flex;"><span>yabai -m window <span style="color:#000">$YABAI_WINDOW_ID</span> –focus </span></span><span style="display:flex;"><span><span style="color:#a90d91">elif</span> </span></span><span style="display:flex;"><span><span style="color:#000">[[</span> <span style="color:#000">$title</span> <span style="color:#000">=</span>~ <span style="color:#c41a16">&#34;minimal-popup&#34;</span> <span style="color:#000">&amp;&amp;</span> <span style="color:#000">$display</span> <span style="color:#000">==</span> <span style="color:#1c01ce">1</span> <span style="color:#000">]]</span>; <span style="color:#a90d91">then</span> </span></span><span style="display:flex;"><span>yabai -m window <span style="color:#000">$YABAI_WINDOW_ID</span> –toggle float –move abs:430:230 </span></span><span style="display:flex;"><span>yabai -m window <span style="color:#000">$YABAI_WINDOW_ID</span> –resize abs:655:200 </span></span><span style="display:flex;"><span>yabai -m window <span style="color:#000">$YABAI_WINDOW_ID</span> –focus </span></span><span style="display:flex;"><span><span style="color:#a90d91">else</span> </span></span><span style="display:flex;"><span><span style="color:#a90d91">false</span> </span></span><span style="display:flex;"><span><span style="color:#a90d91">fi</span> </span></span></code></pre></div><h2 id="additional-custom-commands">Additional Custom Commands</h2> <p>In some cases, an Emacs command will work nicely in a popup frame right out of the box. A good case in point is <code>org-capture</code>. In other cases, I have needed to write my own custom commands. Here a few:</p> <h3 id="google-translate-interface">Google Translate Interface</h3> <div class="highlight"><pre tabindex="0" style="background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span style="display:flex;"><span>(<span style="color:#a90d91">defun</span> <span style="color:#000">my/translate</span> () </span></span><span style="display:flex;"><span> (<span style="color:#a90d91">interactive</span>) </span></span><span style="display:flex;"><span> (<span style="color:#a90d91">let</span> ((<span style="color:#000">choice</span> </span></span><span style="display:flex;"><span> (<span style="color:#000">completing-read</span> <span style="color:#c41a16">&#34;Select: &#34;</span> <span style="color:#000">&#39;</span>(<span style="color:#c41a16">&#34;EN-&gt;LT&#34;</span> <span style="color:#c41a16">&#34;LT-&gt;EN&#34;</span>)))) </span></span><span style="display:flex;"><span> (<span style="color:#a90d91">cond</span> ((<span style="color:#000">string=</span> <span style="color:#000">choice</span> <span style="color:#c41a16">&#34;EN-&gt;LT&#34;</span>) </span></span><span style="display:flex;"><span> (<span style="color:#000">google-translate-query-translate-reverse</span>)) </span></span><span style="display:flex;"><span> ((<span style="color:#000">string=</span> <span style="color:#000">choice</span> <span style="color:#c41a16">&#34;LT-&gt;EN&#34;</span>) </span></span><span style="display:flex;"><span> (<span style="color:#000">google-translate-query-translate</span>))))) </span></span><span style="display:flex;"><span> </span></span><span style="display:flex;"><span>(<span style="color:#000">popup-frame-define</span> <span style="color:#000">my/translate</span> <span style="color:#c41a16">&#34;minimal-popup&#34;</span>) </span></span></code></pre></div><figure><img src="https://localauthor.github.io/images/popup-frame-translate-demo.gif"> </figure> <h3 id="unread-emails-in-mu4e">Unread Emails in mu4e</h3> <div class="highlight"><pre tabindex="0" style="background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span style="display:flex;"><span>(<span style="color:#a90d91">defun</span> <span style="color:#000">my/mu4e-unread</span> () </span></span><span style="display:flex;"><span> (<span style="color:#a90d91">interactive</span>) </span></span><span style="display:flex;"><span> (<span style="color:#000">mu4e</span> <span style="color:#c41a16">&#39;background</span>) </span></span><span style="display:flex;"><span> (<span style="color:#000">mu4e-search-bookmark</span> </span></span><span style="display:flex;"><span> (<span style="color:#000">mu4e-get-bookmark-query</span> <span style="color:#2300ce">?u</span>))) </span></span><span style="display:flex;"><span> </span></span><span style="display:flex;"><span>(<span style="color:#000">popup-frame-define</span> <span style="color:#000">my/org-agenda</span> <span style="color:#c41a16">&#34;large-popup&#34;</span>) </span></span></code></pre></div><p>For this, I add another “elif” to the bash script, to ensure I can see the whole inbox in the popup:</p> <div class="highlight"><pre tabindex="0" style="background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#a90d91">elif</span> </span></span><span style="display:flex;"><span><span style="color:#000">[[</span> <span style="color:#000">$title</span> <span style="color:#000">=</span>~ <span style="color:#c41a16">&#34;large-popup&#34;</span> <span style="color:#000">&amp;&amp;</span> <span style="color:#000">$display</span> <span style="color:#000">==</span> <span style="color:#1c01ce">1</span> <span style="color:#000">]]</span>; <span style="color:#a90d91">then</span> </span></span><span style="display:flex;"><span>yabai -m window <span style="color:#000">$YABAI_WINDOW_ID</span> –toggle float –move abs:350:130 </span></span><span style="display:flex;"><span>yabai -m window <span style="color:#000">$YABAI_WINDOW_ID</span> –resize abs:730:600 </span></span><span style="display:flex;"><span>yabai -m window <span style="color:#000">$YABAI_WINDOW_ID</span> –focus </span></span></code></pre></div><h3 id="custom-org-agenda-view">Custom Org-Agenda View</h3> <div class="highlight"><pre tabindex="0" style="background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span style="display:flex;"><span>(<span style="color:#a90d91">defun</span> <span style="color:#000">my/org-agenda</span> (<span style="color:#a90d91">&amp;optional</span> <span style="color:#000">p</span>) </span></span><span style="display:flex;"><span> (<span style="color:#a90d91">interactive</span> <span style="color:#c41a16">&#34;P&#34;</span>) </span></span><span style="display:flex;"><span> (<span style="color:#000">org-agenda</span> <span style="color:#000">p</span> <span style="color:#c41a16">&#34;d&#34;</span>) </span></span><span style="display:flex;"><span> (<span style="color:#000">org-agenda-redo-all</span>)) </span></span><span style="display:flex;"><span> </span></span><span style="display:flex;"><span>(<span style="color:#000">popup-frame-define</span> <span style="color:#000">my/org-agenda</span> <span style="color:#c41a16">&#34;large-popup&#34;</span>) </span></span></code></pre></div><p>Just don’t forget to add a system-wide keyboard shortcut for each new command!</p> To Carve Something Meaningful https://localauthor.github.io/posts/place/ Tue, 15 Nov 2022 20:57:00 +0200 https://localauthor.github.io/posts/place/ <style>.org-center { margin-left: auto; margin-right: auto; text-align: center; }</style> <div class="org-center"> <p><strong>——————————————————————————————</strong></p> </div> <div class="verse"> <p>&ldquo;One of the most important functions of &lsquo;place&rsquo;<br /> is its ability to bridge<br /> the scholarly realm of the academic geographer<br /> and everyday terrain of ordinary people<br /> trying to understand the world<br /> and make it better.<br /> Without &lsquo;place,&rsquo; geographers risk<br /> losing their most important audience:<br /> those engaged in the struggle<br /> to carve something meaningful<br /> out of an impersonal, abstract world.&rdquo;<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup><br /></p> </div> <div class="footnotes" role="doc-endnotes"> <hr> <ol> <li id="fn:1"> <p>Steven Hoelscher, “Place,” in <i>The Wiley-Blackwell Companion to Human Geography</i>, ed. John A. Agnew and James S. Duncan (Chichester, West Sussex: Malden, MA : Wiley-Blackwell, 2011), 256–57.&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p> </li> </ol> </div> "What should I read next?" https://localauthor.github.io/posts/recs/ Sat, 12 Nov 2022 18:31:00 +0200 https://localauthor.github.io/posts/recs/ <p><em>Read one of these. (And then read the others.)</em></p> <style>.org-center { margin-left: auto; margin-right: auto; text-align: center; }</style> <div class="org-center"> <p><strong>&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;</strong></p> </div> <ul> <li> <p>Anne Carson, <em>Autobiography of Red</em></p> </li> <li> <p>Annie Dillard, <em>Pilgrim at Tinker Creek</em></p> </li> <li> <p>Claudia Emerson, <em>Pinion</em></p> </li> <li> <p>Maggie Nelson, <em>Bluets</em></p> </li> <li> <p>W. G. Sebald, <em>The Emigrants</em></p> </li> </ul> Notetaking: What are you after? https://localauthor.github.io/posts/notetaking/ Thu, 01 Sep 2022 11:00:00 +0300 https://localauthor.github.io/posts/notetaking/ <p><em>Why do you want to take notes in the first place?</em></p> <style>.org-center { margin-left: auto; margin-right: auto; text-align: center; }</style> <div class="org-center"> <p><strong>&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;</strong></p> </div> <p>Each person&rsquo;s notetaking practice is&mdash;and must be&mdash;distinct. No two people have the same needs when it comes to making, organizing, and accessing notes.</p> <p>Adopting someone else&rsquo;s practice just because they can loudly sing its merits, or even clearly demonstrate its efficacy, may very well be an exercise in shortsightedness. A person&rsquo;s notetaking practice could certainly have merits and be effective&mdash;<em>for them</em>&mdash;but there can be no guarantee of universality in such things.</p> <p>So, a few questions to consider:</p> <ul> <li>Why do you want (or need) to take notes at all?</li> <li>What kind of information are you trying to store and keep track of?</li> <li>When and how do you want to come across the stored information again?</li> <li>Will the notes be an end in themselves or raw materials for other writings?</li> </ul> <p>My own answers:</p> <ul> <li>I take notes for the purposes of academic research and lecturing.</li> <li>I store and keep track of the thoughts, ideas, and insights of others, as encountered in books, articles, presentations, etc., as well as my own thoughts, ideas, and insights, as they occur to me, most often in response to the thoughts (etc.) of others.</li> <li>I want to come across the stored information both as I am writing other notes, for the purposes of making connections between ideas and insights, and as I am writing research papers and lectures.</li> <li>My notes are both an end in themselves, to the extent that they facilitate and constitute my thinking, and raw materials for other writings.</li> </ul> <h2 id="my-starting-points">My Starting Points</h2> <h3 id="the-inbox-note">The &ldquo;Inbox&rdquo; Note</h3> <p>I keep a note that I call an &ldquo;inbox&rdquo; note, which is just a plaintext file on my computer. It is one of two entry-points to my notetaking pactice. When I have an idea that I want to keep track of, instead of making a new note right away (a new file on my computer), I go to my &ldquo;inbox&rdquo; and start writing things down, a bit freeform, right at the top.</p> <p>I consider this space like a sketch pad. There is no pressure to produce anything polished or fully thought through. If I end up writing something worth keeping, I copy it into a new note (that is, a new text file&mdash;each of my notes is a separate text file, all stored in a folder called &ldquo;Notes&rdquo;).</p> <p>If the idea doesn&rsquo;t really develop or seem worth keeping, I either delete it, or just leave it there. I will write the next idea above it, and it will simply be pushed down a few lines. The bottom of my inbox is something of a graveyard of ideas. Sometimes I go through and clean them out, to &ldquo;clear the inbox,&rdquo; as it were. Sometimes when I do this I find something worth recovering.</p> <p>The purpose of the &ldquo;inbox&rdquo; note is to eliminate any friction that might disrupt the actual taking of a note when the need/desire to take a note arises. It allows me to get right to the important business of putting an idea down and avoid having to fool with any other, less pressing business, like finding the right place to put the idea. I have a shortcut key that opens the inbox note right away. Highly recommended.</p> <h3 id="the-literature-note">The &ldquo;Literature&rdquo; Note</h3> <p>Often I am taking notes on something I&rsquo;m reading, be it a book, an article, or a website. After entering the appropriate citation information into my bibliographic database and assigning the resource a unique <a href="../posts/citekeys.html">citekey</a>, I skip the &ldquo;inbox&rdquo; and go straight to creating a new note dedicated to the material I am reading. This is called a literature note.<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup></p> <p>The name of each literature note is the resource&rsquo;s unique citekey followed by its author and title, like so: &ldquo;Conrad1899 - Joseph Conrad - Heart of Darkness.txt&rdquo;. By having a programmatic titling scheme, I always know right where to find my notes for what I&rsquo;ve read.</p> <p>As I read, I keep the literature note open and write down ideas, quotations, and questions as they occur to me, always making reference to the appropriate page number when relevant.</p> <p>If any idea or line of thought arises while reading that seems interesting enough to stand on its own, I can make a separate note for it, and include a reference to that new note in the literature note itself. A literature note could be a page-by-page account of a resource, or it could be a list of references to stand-alone notes. Most often it is somewhere in between.<sup id="fnref:2"><a href="#fn:2" class="footnote-ref" role="doc-noteref">2</a></sup></p> <div class="footnotes" role="doc-endnotes"> <hr> <ol> <li id="fn:1"> <p>See Sönke Ahrens, <i>How to Take Smart Notes: One Simple Technique to Boost Writing, Learning and Thinking</i> (North Charleston, SC: CreateSpace, 2017).&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p> </li> <li id="fn:2"> <p>The matter of inserting references to other notes can be facilitated by any number of progams. I use a package I wrote for Emacs called <a href="https://github.com/localauthor/zk" target="_blank">zk</a>, demonstrations of which can be seen <a href="https://www.youtube.com/watch?v=BixlUK4QTNk" target="_blank">here</a> and <a href="https://www.youtube.com/watch?v=7qNT87dphiA" target="_blank">here</a> and <a href="https://www.youtube.com/watch?v=O6iSV4pQQ5g" target="_blank">here</a>. Similar programs worth looking at are <a href="https://brettterpstra.com/projects/nvalt/" target="_blank">nvALT</a>, <a href="https://zettelkasten.de/the-archive" target="_blank">The Archive</a>, and <a href="https://zettlr.com" target="_blank">Zettlr</a>.&#160;<a href="#fnref:2" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p> </li> </ol> </div> Emacs: Quickly find and insert links in zk notes, with Embark https://localauthor.github.io/posts/zk-links/ Thu, 21 Jul 2022 14:12:00 +0300 https://localauthor.github.io/posts/zk-links/ <p><em>This post continues a series of video demos in which I show how I use the Emacs package <a href="https://github.com/localauthor/zk" target="_blank">zk</a> for notetaking. The emphasis is on showcasing the practicalities of my process.</em></p> <style>.org-center { margin-left: auto; margin-right: auto; text-align: center; }</style> <div class="org-center"> <p><strong>&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;</strong></p> </div> <iframe width="560" height="315" src="https://www.youtube.com/embed/VIPxC8TMR6s" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe> <p>In <a href="https://www.youtube.com/watch?v=VIPxC8TMR6s" target="_blank">this video</a>, I show how I quickly find notes related to the note I am working on in <a href="https://github.com/localauthor/zk" target="_blank">zk</a>, and then insert the relevant links.</p> <p>The goal is to find and insert links with a minimum of mental overhead and technical friction, so that I can keep my focus on the ideas and content of the note at hand.</p> <p>Trying to find a single note among hundreds, and then putting the link in the right spot, could be a task unto itself &mdash; a not inconsiderable problem and distraction. But a few handy search functions, and some help from the package <a href="https://github.com/oantolin/embark" target="_blank">Embark</a>, make the matter all but effortless.</p> Emacs: Getting started with zk, using hydra and an inbox note https://localauthor.github.io/posts/zk-hydra/ Tue, 19 Jul 2022 00:31:00 -0400 https://localauthor.github.io/posts/zk-hydra/ <p><em>This post inaugurates a series of video demos in which I will show how I use the Emacs package <a href="https://github.com/localauthor/zk" target="_blank">zk</a> for notetaking. The emphasis will be on showcasing the practicalities of my process.</em></p> <style>.org-center { margin-left: auto; margin-right: auto; text-align: center; }</style> <div class="org-center"> <div></div> <p><strong>&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;</strong></p> </div> <style>.org-center { margin-left: auto; margin-right: auto; text-align: center; }</style> <div class="org-center"> <div></div> <iframe width="560" height="315" src="https://www.youtube.com/embed/oEgdJlojlU8" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe> </div> <p>In this video I show how I use a <a href="https://github.com/abo-abo/hydra" target="_blank">hydra</a> as an entry point to my zk. The config for my hydra is here, <a href="https://github.com/localauthor/.emacs.d/blob/210531740c05104b7718b257671f2674f605f374/my-lisp/zk-setup.el#L154" target="_blank">in my dotfiles</a>.</p> <p>I also show how I use an &ldquo;inbox&rdquo; note as a starting place for new notes. For more on the place of the inbox in a notetaking practice, see section 2.1 of <em>How to Take Smart Notes</em> by Sönke Ahrens.<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup></p> <p>In the next video, I will show how I use the function <code>zk-find-file</code> and others in combination with <a href="https://github.com/oantolin/embark" target="_blank">Embark</a> to quickly find notes and insert links &mdash; with a minimum of effort!</p> <div class="footnotes" role="doc-endnotes"> <hr> <ol> <li id="fn:1"> <p>Sönke Ahrens, <i>How to Take Smart Notes: One Simple Technique to Boost Writing, Learning and Thinking</i> (North Charleston, SC: CreateSpace, 2017).&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p> </li> </ol> </div> Chthonophagia https://localauthor.github.io/posts/chthonophagia/ Sun, 24 Apr 2022 23:28:00 +0300 https://localauthor.github.io/posts/chthonophagia/ <p>\Chthon`o*pha&quot;gi*a\, Chthonophagy \Chtho*noph&quot;a*gy\, n. [NL. chthonophagia; Gr. ?, ?, earth + ? to eat.]</p> <p>A disease characterized by an irresistible desire to eat earth, observed in some parts of the southern United States, the West Indies, etc.</p> <p><em>Webster&rsquo;s Revised Unabridged Dictionary (1913)</em></p> Citekeys: For Better Research / Life https://localauthor.github.io/posts/citekeys/ Sun, 24 Apr 2022 23:19:00 +0300 https://localauthor.github.io/posts/citekeys/ <p><em>Use <strong>citekeys</strong> to consistently and uniformly correlate in-text references with original source materials, not just in final submissions but <strong>also in notes and drafts</strong>.</em></p> <style>.org-center { margin-left: auto; margin-right: auto; text-align: center; }</style> <div class="org-center"> <div></div> <p><strong>&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;</strong></p> </div> <p>For long research projects, it is necessary not only to keep straight a variety of sources but also to ensure that in-text references to those sources are unambiguous. This allows readers to trace all lines of thought to their original contexts. This is obviously a requirement of all formal publications.</p> <p>But a clear and consistent citation practice should not be neglected in the writing that leads up to a final submission, such as notes, outlines, drafts, etc. When you are still the project&rsquo;s primary (or only) reader, you must still be able to trace lines of thought to their origins.</p> <p>In many cases, this may not be difficult. In the middle of a project, when everything is fresh in your working memory, you might be able to make sense of all kinds of non-standard forms of citation, no matter how informal: &ldquo;cite book on national identity formation,&rdquo; &ldquo;quote comes from that article we read during week 3,&rdquo; &ldquo;see Foucault 257.&rdquo;</p> <p>But the larger a project is and the more time that passes between note-taking and final submission the more effort will be involved in tracing such citations to their sources.</p> <p>In the case of a career researcher, informal citations like the above will inevitably lose their meaning as their originary contexts recede into the past. Which book on national identity formation was that? Which class? Which book by Foucault, and <em>which edition</em>?</p> <p>The use of <em>citekeys</em> can greatly reduce the effort involved in mainlining clear lines of connection between citations and sources&mdash;not just in final products but in notes and drafts as well, and not just in single projects but in a lifetime of research.</p> <h2 id="citekey-basics">Citekey Basics</h2> <p>A citekey (or citation key) is a unique code assigned to a particular piece of source material that can be used to quickly and consistently refer to that source.</p> <p>A citekey is typically composed of some combination of the source&rsquo;s year of publication, its primary author&rsquo;s surname, and/or a short version of its title.</p> <p>Here are three different citekeys, in three common styles, that could be used for the same source, the book <em>Imagined Communities</em> by Benedict Anderson. Each offers a far more precise indication of what source is being referred to than the comparatively ambiguous &ldquo;cite book on national identity formation&rdquo;:</p> <pre tabindex="0"><code class="language-nil" data-lang="nil">Anderson2006 andersonImaginedCommunities2006 anderson2006_ImaginedCommunities </code></pre><p>It is important to note that citekeys are not expected to be clearly understandable to anyone other than the researcher who assigns them. Consider that &ldquo;Anderson2006&rdquo; in the example above could refer to any number of publications from the year 2006 by anyone with the surname Anderson.</p> <p>In this way citekeys are unlike ISBN or DOI numbers: they are not universal indicators&mdash;they do not point directly and unambiguously to particular sources themselves.</p> <p>Rather, citekeys point to a researcher&rsquo;s own individual collection of bibliographic entries (more on this ahead). Citekeys offer, as a result, a simple, private system of shorthand for encoding reference information into any written document, all without the work entailed in writing out full formal citations and bibliographic entries in every instance.</p> <p>Given their simplicity and ease of use, citekeys help to lower any barriers that might otherwise have impeded the inclusion of clear, reliable citations in even the most informal of written documents, including and especially those that are not intended for publication. They thereby help to eliminate any temptation to insert ambiguous and cryptic notes-to-self that risk baffling more than benefiting.</p> <h2 id="your-bibliographic-database">Your Bibliographic Database</h2> <p>For texts that are intended to be published, citekeys offer great flexibility, as they can be easily replaced with formal citations in whatever citation style is appropriate to the intended context, such as Chicago, MLA, Harvard, APA, etc.</p> <p>This requires maintaining a centralized repository of bibliographic information wherein all citekeys are listed with relevant information about the associated source. This may sound more complicated than it is.</p> <p>While it is possible to manage bibliographic information with one of the many popular reference management programs&mdash;such as Zotero, Endnote, or Mandeley&mdash;it is equally possible to maintain nothing more than a simple text document of entries like the following:</p> <pre tabindex="0"><code class="language-nil" data-lang="nil">@book{Anderson2006, title = &#34;Imagined Communities: Reflections on the Origin and Spread of Nationalism&#34;, author = Anderson, Benedict&#34;, year = &#34;2006&#34;, publisher = &#34;Verso&#34;, address = &#34;London; New York&#34;, } </code></pre><p>The above entry happens to be written in a standardized format called BibTeX, often used or at least supported by reference management software. For the sake of future-proofing your bibliography, it might be worthwhile to use such a standardized format.<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup></p> <p>But such entries can easily be written and maintained in any format and without such software, using nothing more than a plaintext editing program like TextEdit (MacOS) or Notepad (Windows). The most important thing is to include all the relevant information about the source and associate it with a unique citekey.</p> <p>From such information, it will be possible to produce citations and references in any of a seemingly endless array of standardized citation styles.<sup id="fnref:2"><a href="#fn:2" class="footnote-ref" role="doc-noteref">2</a></sup></p> <h2 id="key-rule-be-consistent">Key Rule: Be Consistent</h2> <p>No matter what style of citekey or method of bibliography management is used, internal consistency is essential. Use a consistent citekey style&mdash;I use AuthorYEAR, like &ldquo;Anderson2006&rdquo;&mdash;so that each source is associated with a only single citekey. Do not use both &ldquo;Anderson2006&rdquo; and &ldquo;andersonImaginedCommunities2006.&rdquo;</p> <p>Also, take care to ensure that each citekey is associated with only a single source. If you add a source by a different Anderson also written in 2006, assign it a unique citekey, like &ldquo;Anderson2006a&rdquo; or &ldquo;Anderson2006-1.&rdquo;</p> <p>Note that using citekeys also makes it easy to include and distinguish between different editions of a single text. You might also have reason to cite the first edition of <em>Imagined Communities</em> (1983) alongside the reprint. Luckily, there is no confusing &ldquo;Anderson1983&rdquo; and &ldquo;Anderson2006.&rdquo;</p> <h2 id="citekeys-in-use">Citekeys In Use</h2> <p>Choosing a citekey style, assigning citekeys to sources, and keeping them all matched up in a bibliography database is only the beginning.</p> <p>Once you&rsquo;ve done all that, how to go about putting them to use in your writings?</p> <p>Here is an example from my reading notes:</p> <blockquote> <p>Heise cites [#Anderson2006], who make a similar connection between representations and identity-formation.[5][#Heise2008]</p></blockquote> <p>I was not taking these notes for any specific project or a potential publication where accurate citations would be necessary. Nevertheless, it was so simple to include the citekeys and a page reference that I didn&rsquo;t consider <em>not</em> doing it.</p> <p>It was the use of citekeys, formatted in a distinct syntax&mdash;in brackets, preceed by the hash sign<sup id="fnref:3"><a href="#fn:3" class="footnote-ref" role="doc-noteref">3</a></sup>&mdash;that made it effortless to find this reference (along with several others) to Anderson&rsquo;s <em>Imagined Communities</em> in a file on my computer that is not obviously about the text in question and that I haven&rsquo;t looked at or thought about since I wrote it. How about that?</p> <h2 id="bonus-pdf-management">Bonus: PDF Management</h2> <p>Aside from helping you keep your citations legible and locate deeply embedded notes in the recesses of your file system, citekeys can also help you keep track of PDFs and other digital documents. No longer worry over what to name that PDF. Enter its information into your bibliography file, assign it a citekey, and use the citekey as the name of the file. You&rsquo;ll never have to guess what &ldquo;Anderson2006.pdf&rdquo; contains.</p> <div class="footnotes" role="doc-endnotes"> <hr> <ol> <li id="fn:1"> <p><a href="https://www.bibtex.com/g/bibtex-format/" target="_blank">https://www.bibtex.com/g/bibtex-format/</a>&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p> </li> <li id="fn:2"> <p><a href="https://citationstyles.org" target="_blank">https://citationstyles.org</a>&#160;<a href="#fnref:2" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p> </li> <li id="fn:3"> <p>These citations are in a syntax called <a href="https://fletcher.github.io/MultiMarkdown-5/citations.html" target="_blank">MultiMarkdown</a>. A similar syntax, called <a href="https://pandoc.org/MANUAL.html#citation-syntax" target="_blank">Pandoc</a>, uses the <code>@</code> prefix instead of the <code>#</code>, among other differences: [@Anderson2006, p 22-23].&#160;<a href="#fnref:3" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p> </li> </ol> </div> Coracoid https://localauthor.github.io/posts/coracoid/ Fri, 22 Apr 2022 01:26:00 +0300 https://localauthor.github.io/posts/coracoid/ <p>\Cor&quot;a*coid\, a.[Gr. ?; ko`rax crow + e&rsquo;i^dos form.]</p> <ol> <li> <p>Shaped like a crow&rsquo;s beak.</p> </li> <li> <p>(Anat.) Pertaining to a bone of the shoulder girdle in most birds, reptiles, and amphibians, which is reduced to a process of the scapula in most mammals.</p> </li> </ol> <p><em>Webster&rsquo;s Revised Unabridged Dictionary (1913)</em></p> Emacs: With ace-window and link-hint, open links exactly where you want them https://localauthor.github.io/posts/aw-select/ Thu, 14 Apr 2022 12:28:00 +0300 https://localauthor.github.io/posts/aw-select/ <p><em>This post describes how the Emacs package <a href="http://github.com/noctuid/link-hint.el" target="_blank">link-hint</a> can be combined with <a href="https://github.com/abo-abo/ace-window" target="_blank">ace-window</a> to allow you to select, on-the-fly, which window a link will open in—instead of letting fate, or custom, or Emacs decide for you.</em></p> <style>.org-center { margin-left: auto; margin-right: auto; text-align: center; }</style> <div class="org-center"> <p><strong>——————————————————————————————</strong></p> </div> <h2 id="ace-window-is--more-than--a-fancy-window-switcher">Ace-window is (more than) a fancy window-switcher</h2> <p>The ace-window package, written by <a href="https://github.com/abo-abo" target="_blank">abo-abo</a>, offers a handy, full-featured alternative to the built-in window-switching function <code>other-window</code>. The package&rsquo;s primary function—the titular =ace-window=—overlays a different character (letter or number) over each visible Emacs window, so you can switch to the desired window by simply pressing its assigned character. Very useful, very sleek.</p> <p>But ace-window is more than just a handy way to switch windows.</p> <p>The package also offers the ability to perform an action in the selected window before switching to it. In this regard, it follows the design of its parent package <a href="https://github.com/abo-abo/avy" target="_blank">avy</a>—also by abo-abo. Instead of simply switching to a window, you can <a href="https://github.com/abo-abo/ace-window#aw-dispatch-alist" target="_blank">split it first, call switch-to-buffer in it, or even close it</a>. For a demonstration of this aspect of ace-window, see <a href="https://www.youtube.com/watch?v=I3BvGZ3m8Oo" target="_blank">this video from Protesilaos Stavrou</a>.)</p> <p>The greatness of ace-window truly comes through, however, when it is combined with other packages.</p> <h2 id="with-ace-window-and-embark-open-files-buffers-in-specified-windows">With ace-window and Embark, open files/buffers in specified windows</h2> <p>In his <a href="https://karthinks.com/software/fifteen-ways-to-use-embark/" target="_blank">detailed write-up on using Embark</a>, Karthik Chikmagalur showcases a killer mash-up of ace-window and Embark, demonstrating how ace-window can be used for more than just switching windows.</p> <p>Briefly put, Karthik shows how to incorporate ace-window&rsquo;s window-selection function into the opening of a file or buffer from the minibuffer so that, as he writes, &ldquo;any buffer/file/bookmark I open is always placed exactly where I want it to be on the screen.&rdquo;</p> <p>An example usage would be:</p> <ol> <li>call <code>find-file</code></li> <li>call <code>embark-act</code> on file you wish to open</li> <li>call <code>my/embark-ace-action-find-file</code> (this is the slightly unwieldy name Karthik gives to the embark/ace-window function)</li> <li>select desired window with <code>ace-window</code></li> </ol> <h2 id="with-ace-window-and-link-hint-follow-links-in-specified-windows">With ace-window and link-hint, follow links in specified windows</h2> <p>Inspired by what Karthik showed was possible, I wanted to incorporate ace-window with link-hint, so that I could choose which window a link would open in. The result is a function called <code>link-hint-aw-select</code>:</p> <figure><img src="https://localauthor.github.io/images/aw-select-demo.gif" alt="Figure 1: Using &rsquo;link-hint-aw-select&rsquo; to open each of the links in the top left window in a different window. First, the desired link is chosen via character overlay, courtsey of link-hint, then the desired window is chosen via character overlay, courtsey of ace-window."><figcaption> <p><span class="figure-number">Figure 1: </span>Using &rsquo;link-hint-aw-select&rsquo; to open each of the links in the top left window in a different window. First, the desired link is chosen via character overlay, courtsey of link-hint, then the desired window is chosen via character overlay, courtsey of ace-window.</p> </figcaption> </figure> <p>If you&rsquo;re unfamiliar, link-hint is a package that is conceptually similar to ace-window: it puts a character overlay on visible links in a buffer so that you can choose a link to follow by typing its assigned character. (The conceptual similarity of link-hint and ace-window is not surprising, since both are based on avy.)</p> <p>Link-hint can identify a lot of different type of links, such as urls, file paths, mailto links, org-links, buttons, and dired filenames. New link types can also be defined by the user. (More on that later.)</p> <p>As with avy and ace-window, link-hint allows for different actions to performed on the chosen link. However, there are only two default actions for acting on links: open link and copy link.</p> <p>Defining a new action is done by defining a new function, in this case the above-mentioned <code>link-hint-aw-select</code>, which will be entry-point command for all link types:</p> <div class="highlight"><pre tabindex="0" style="background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span style="display:flex;"><span>(<span style="color:#a90d91">defun</span> <span style="color:#000">link-hint-aw-select</span> () </span></span><span style="display:flex;"><span> <span style="color:#c41a16">&#34;Use avy to open a link in a window selected with ace-window.&#34;</span> </span></span><span style="display:flex;"><span> (<span style="color:#a90d91">interactive</span>) </span></span><span style="display:flex;"><span> (<span style="color:#a90d91">unless</span> </span></span><span style="display:flex;"><span> (<span style="color:#000">avy-with</span> <span style="color:#000">link-hint-aw-select</span> </span></span><span style="display:flex;"><span> (<span style="color:#000">link-hint</span><span style="color:#000">–</span><span style="color:#000">one</span> <span style="color:#a90d91">:aw-select</span>)) </span></span><span style="display:flex;"><span> (<span style="color:#000">message</span> <span style="color:#c41a16">&#34;No visible links&#34;</span>))) </span></span></code></pre></div><p>Things get more complicated very quickly, however.</p> <p>Each action must be tailored to each different link type. Take the case of the &ldquo;open&rdquo; action, for examples: urls open one way—in a browser—and filepaths open another way—in a relevant application—and email addresses open another way—in a new draft email. Each action is actually many different actions, all roughly similar.</p> <p>When creating a new action, then, it is necessary to make sure that each link type is associated with a function that will perform the new action in the appropriate way.</p> <p>The <code>aw-select</code> action for file links is quite simple:</p> <div class="highlight"><pre tabindex="0" style="background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span style="display:flex;"><span>(<span style="color:#a90d91">defun</span> <span style="color:#000">link-hint</span><span style="color:#000">–</span><span style="color:#000">aw-select-file-link</span> (<span style="color:#000">link</span>) </span></span><span style="display:flex;"><span> (<span style="color:#a90d91">with-demoted-errors</span> <span style="color:#c41a16">&#34;%s&#34;</span> </span></span><span style="display:flex;"><span> (<span style="color:#000">aw-switch-to-window</span> (<span style="color:#000">aw-select</span> <span style="color:#000">nil</span>)) </span></span><span style="display:flex;"><span> (<span style="color:#000">find-file</span> <span style="color:#000">link</span>))) </span></span></code></pre></div><p>To make the link-hint ecosystem aware of this new association of link-type, action, and function, there is a handy macro:</p> <div class="highlight"><pre tabindex="0" style="background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span style="display:flex;"><span>(<span style="color:#000">link-hint-define-type</span> <span style="color:#c41a16">&#39;file-link</span> </span></span><span style="display:flex;"><span> <span style="color:#a90d91">:aw-select</span> <span style="color:#000">#&#39;</span><span style="color:#000">link-hint</span><span style="color:#000">–</span><span style="color:#000">aw-select-file-link</span>) </span></span></code></pre></div><p>If different link-types behave similarly, it is possible to create a macro of our own that will do all of the above very efficiently. This is the case with buttons and dired-filenames, for example:</p> <div class="highlight"><pre tabindex="0" style="background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span style="display:flex;"><span>(<span style="color:#a90d91">defmacro</span> <span style="color:#000">define-link-hint-aw-select</span> (<span style="color:#000">link-type</span> <span style="color:#000">fn</span>) </span></span><span style="display:flex;"><span> <span style="color:#000">`</span>(<span style="color:#a90d91">progn</span> </span></span><span style="display:flex;"><span> (<span style="color:#000">link-hint-define-type</span> <span style="color:#c41a16">&#39;,link-type</span> </span></span><span style="display:flex;"><span> <span style="color:#a90d91">:aw-select</span> <span style="color:#000">#&#39;</span><span style="color:#000">,</span>(<span style="color:#000">intern</span> (<span style="color:#000">concat</span> <span style="color:#c41a16">&#34;link-hint–aw-select-&#34;</span> </span></span><span style="display:flex;"><span> (<span style="color:#000">symbol-name</span> <span style="color:#000">link-type</span>)))) </span></span><span style="display:flex;"><span> (<span style="color:#a90d91">defun</span> <span style="color:#000">,</span>(<span style="color:#000">intern</span> (<span style="color:#000">concat</span> <span style="color:#c41a16">&#34;link-hint–aw-select-&#34;</span> </span></span><span style="display:flex;"><span> (<span style="color:#000">symbol-name</span> <span style="color:#000">link-type</span>))) (<span style="color:#000">_link</span>) </span></span><span style="display:flex;"><span> (<span style="color:#a90d91">with-demoted-errors</span> <span style="color:#c41a16">&#34;%s&#34;</span> </span></span><span style="display:flex;"><span> (<span style="color:#a90d91">if</span> (<span style="color:#000">&gt;</span> (<span style="color:#000">length</span> (<span style="color:#000">aw-window-list</span>)) <span style="color:#1c01ce">1</span>) </span></span><span style="display:flex;"><span> (<span style="color:#a90d91">let</span> ((<span style="color:#000">window</span> (<span style="color:#000">aw-select</span> <span style="color:#000">nil</span>)) </span></span><span style="display:flex;"><span> (<span style="color:#000">buffer</span> (<span style="color:#000">current-buffer</span>)) </span></span><span style="display:flex;"><span> (<span style="color:#000">new-buffer</span>)) </span></span><span style="display:flex;"><span> (<span style="color:#000">,</span><span style="color:#000">fn</span>) </span></span><span style="display:flex;"><span> (<span style="color:#a90d91">setq</span> <span style="color:#000">new-buffer</span> (<span style="color:#000">current-buffer</span>)) </span></span><span style="display:flex;"><span> (<span style="color:#000">switch-to-buffer</span> <span style="color:#000">buffer</span>) </span></span><span style="display:flex;"><span> (<span style="color:#000">aw-switch-to-window</span> <span style="color:#000">window</span>) </span></span><span style="display:flex;"><span> (<span style="color:#000">switch-to-buffer</span> <span style="color:#000">new-buffer</span>)) </span></span><span style="display:flex;"><span> (<span style="color:#000">link-hint-open-link-at-point</span>)))))) </span></span><span style="display:flex;"><span> </span></span><span style="display:flex;"><span>(<span style="color:#000">define-link-hint-aw-select</span> <span style="color:#000">button</span> <span style="color:#000">push-button</span>) </span></span><span style="display:flex;"><span>(<span style="color:#000">define-link-hint-aw-select</span> <span style="color:#000">dired-filename</span> <span style="color:#000">dired-find-file</span>) </span></span></code></pre></div><p>The same is <em>almost</em> the case with org-links as well, except that by default org-links are opened using <code>find-file-other-window</code> instead of <code>find-file</code>, meaning that the above macro wouldn&rsquo;t work properly.</p> <p>I prefer to change this setting globally, so that org-links are opened in the current window, by evaluating the following:</p> <div class="highlight"><pre tabindex="0" style="background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span style="display:flex;"><span>(<span style="color:#a90d91">setf</span> (<span style="color:#000">cdr</span> (<span style="color:#000">assoc</span> <span style="color:#c41a16">&#39;file</span> <span style="color:#000">org-link-frame-setup</span>)) <span style="color:#c41a16">&#39;find-file</span>) </span></span></code></pre></div><p>This allows me to use the macro:</p> <div class="highlight"><pre tabindex="0" style="background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span style="display:flex;"><span>(<span style="color:#000">define-link-hint-aw-select</span> <span style="color:#000">org-link</span> <span style="color:#000">org-open-at-point</span>) </span></span></code></pre></div><p>To leave org&rsquo;s default behavior in place globally, it is necessary to define a function specifically for org-links, in which the behavior is changed locally in a let-binding:</p> <div class="highlight"><pre tabindex="0" style="background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span style="display:flex;"><span>(<span style="color:#a90d91">defun</span> <span style="color:#000">link-hint</span><span style="color:#000">–</span><span style="color:#000">aw-select-org-link</span> (<span style="color:#000">_link</span>) </span></span><span style="display:flex;"><span> (<span style="color:#a90d91">let</span> ((<span style="color:#000">org-link-frame-setup</span> </span></span><span style="display:flex;"><span> <span style="color:#000">&#39;</span>((<span style="color:#000">file</span> <span style="color:#000">.</span> <span style="color:#000">find-file</span>)))) </span></span><span style="display:flex;"><span> (<span style="color:#a90d91">with-demoted-errors</span> <span style="color:#c41a16">&#34;%s&#34;</span> </span></span><span style="display:flex;"><span> (<span style="color:#a90d91">if</span> (<span style="color:#000">&gt;</span> (<span style="color:#000">length</span> (<span style="color:#000">aw-window-list</span>)) <span style="color:#1c01ce">1</span>) </span></span><span style="display:flex;"><span> (<span style="color:#a90d91">let</span> ((<span style="color:#000">window</span> (<span style="color:#000">aw-select</span> <span style="color:#000">nil</span>)) </span></span><span style="display:flex;"><span> (<span style="color:#000">buffer</span> (<span style="color:#000">current-buffer</span>)) </span></span><span style="display:flex;"><span> (<span style="color:#000">new-buffer</span>)) </span></span><span style="display:flex;"><span> (<span style="color:#000">org-open-at-point</span>) </span></span><span style="display:flex;"><span> (<span style="color:#a90d91">setq</span> <span style="color:#000">new-buffer</span> </span></span><span style="display:flex;"><span> (<span style="color:#000">current-buffer</span>)) </span></span><span style="display:flex;"><span> (<span style="color:#000">switch-to-buffer</span> <span style="color:#000">buffer</span>) </span></span><span style="display:flex;"><span> (<span style="color:#000">aw-switch-to-window</span> <span style="color:#000">window</span>) </span></span><span style="display:flex;"><span> (<span style="color:#000">switch-to-buffer</span> <span style="color:#000">new-buffer</span>)) </span></span><span style="display:flex;"><span> (<span style="color:#000">link-hint-open-link-at-point</span>))))) </span></span><span style="display:flex;"><span> </span></span><span style="display:flex;"><span>(<span style="color:#000">link-hint-define-type</span> <span style="color:#c41a16">&#39;org-link</span> <span style="color:#a90d91">:aw-select</span> <span style="color:#000">#&#39;</span><span style="color:#000">link-hint</span><span style="color:#000">–</span><span style="color:#000">aw-select-org-link</span>) </span></span></code></pre></div><p>Things are actually even a bit more complicated than this with org-links.</p> <p>Since org handles different link-types internally, the function <code>link-hint–aw-select-org-link</code> can also be made to handle certain org link-types differently. For example, if you want http/https links to be opened externally, there is no reason to call the <code>aw-select</code> behavior for that type of org-link. This could be accomplished by including something like the following in the function&rsquo;s &ldquo;if&rdquo; conditional:</p> <div class="highlight"><pre tabindex="0" style="background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span style="display:flex;"><span>(<span style="color:#000">not</span> (<span style="color:#000">member</span> (<span style="color:#000">org-element-property</span> <span style="color:#a90d91">:type</span> (<span style="color:#000">org-element-context</span>)) </span></span><span style="display:flex;"><span> <span style="color:#000">&#39;</span>(<span style="color:#c41a16">&#34;http&#34;</span> <span style="color:#c41a16">&#34;https&#34;</span>))) </span></span></code></pre></div><p>The whole function would be:</p> <div class="highlight"><pre tabindex="0" style="background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span style="display:flex;"><span>(<span style="color:#a90d91">defun</span> <span style="color:#000">link-hint</span><span style="color:#000">–</span><span style="color:#000">aw-select-org-link</span> (<span style="color:#000">_link</span>) </span></span><span style="display:flex;"><span> (<span style="color:#a90d91">let</span> ((<span style="color:#000">org-link-frame-setup</span> </span></span><span style="display:flex;"><span> <span style="color:#000">&#39;</span>((<span style="color:#000">file</span> <span style="color:#000">.</span> <span style="color:#000">find-file</span>)))) </span></span><span style="display:flex;"><span> (<span style="color:#a90d91">with-demoted-errors</span> <span style="color:#c41a16">&#34;%s&#34;</span> </span></span><span style="display:flex;"><span> (<span style="color:#a90d91">if</span> (<span style="color:#a90d91">and</span> (<span style="color:#000">&gt;</span> (<span style="color:#000">length</span> (<span style="color:#000">aw-window-list</span>)) <span style="color:#1c01ce">1</span>) </span></span><span style="display:flex;"><span> (<span style="color:#000">not</span> (<span style="color:#000">member</span> (<span style="color:#000">org-element-property</span> </span></span><span style="display:flex;"><span> <span style="color:#a90d91">:type</span> (<span style="color:#000">org-element-context</span>)) </span></span><span style="display:flex;"><span> <span style="color:#000">&#39;</span>(<span style="color:#c41a16">&#34;http&#34;</span> <span style="color:#c41a16">&#34;https&#34;</span>)))) </span></span><span style="display:flex;"><span> (<span style="color:#a90d91">let</span> ((<span style="color:#000">window</span> (<span style="color:#000">aw-select</span> <span style="color:#000">nil</span>)) </span></span><span style="display:flex;"><span> (<span style="color:#000">buffer</span> (<span style="color:#000">current-buffer</span>)) </span></span><span style="display:flex;"><span> (<span style="color:#000">new-buffer</span>)) </span></span><span style="display:flex;"><span> (<span style="color:#000">org-open-at-point</span>) </span></span><span style="display:flex;"><span> (<span style="color:#a90d91">setq</span> <span style="color:#000">new-buffer</span> </span></span><span style="display:flex;"><span> (<span style="color:#000">current-buffer</span>)) </span></span><span style="display:flex;"><span> (<span style="color:#000">switch-to-buffer</span> <span style="color:#000">buffer</span>) </span></span><span style="display:flex;"><span> (<span style="color:#000">aw-switch-to-window</span> <span style="color:#000">window</span>) </span></span><span style="display:flex;"><span> (<span style="color:#000">switch-to-buffer</span> <span style="color:#000">new-buffer</span>)) </span></span><span style="display:flex;"><span> (<span style="color:#000">link-hint-open-link-at-point</span>))))) </span></span></code></pre></div><h2 id="example-use-case-note-taking-zettelkasten-etc-dot">Example use-case: note-taking, zettelkasten, etc.</h2> <p>I find this functionality really useful in my note-taking environment, where each of my notes contains several links to other notes. I rarely want to follow a link in the same window as the note where the link appears. I typically want to leave that note where it is and open a link somewhere else. If I have several windows arrayed around my screen, I can use <code>link-hint-aw-select</code> to open the linked note exactly where I want it to be.</p> <p>To use this with org, the above configuration is enough. If you use another note-taking environment, you may need to define a new link type.</p> <p>For example, for use with my own Zettelkasten package <a href="https://github.com/localauthor/zk" target="_blank">zk</a>, I define a new link type <code>zk-link</code> and a function <code>zk-link-hint-aw-select</code>, along with other functions necessary to fully incorporate a new link type into the link-hint system:</p> <div class="highlight"><pre tabindex="0" style="background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span style="display:flex;"><span>(<span style="color:#a90d91">defun</span> <span style="color:#000">zk-link-hint</span><span style="color:#000">–</span><span style="color:#000">zk-link-at-point-p</span> () </span></span><span style="display:flex;"><span> <span style="color:#c41a16">&#34;Return the ID for the zk-link at the point or nil.&#34;</span> </span></span><span style="display:flex;"><span> (<span style="color:#a90d91">and</span> (<span style="color:#000">zk</span><span style="color:#000">–</span><span style="color:#000">id-at-point</span>) </span></span><span style="display:flex;"><span> (<span style="color:#000">thing-at-point-looking-at</span> <span style="color:#000">zk-link-regexp</span>))) </span></span><span style="display:flex;"><span> </span></span><span style="display:flex;"><span>(<span style="color:#a90d91">defun</span> <span style="color:#000">zk-link-hint</span><span style="color:#000">–</span><span style="color:#000">next-zk-link</span> (<span style="color:#000">bound</span>) </span></span><span style="display:flex;"><span> <span style="color:#c41a16">&#34;Find the unext zk-link. </span></span></span><span style="display:flex;"><span><span style="color:#c41a16">Only search the range between just after the point and BOUND.&#34;</span> </span></span><span style="display:flex;"><span> (<span style="color:#000">link-hint</span><span style="color:#000">–</span><span style="color:#000">next-regexp</span> <span style="color:#000">zk-id-regexp</span> <span style="color:#000">bound</span>)) </span></span><span style="display:flex;"><span> </span></span><span style="display:flex;"><span>(<span style="color:#a90d91">defun</span> <span style="color:#000">link-hint</span><span style="color:#000">–</span><span style="color:#000">aw-select-zk-link</span> (<span style="color:#000">id</span>) </span></span><span style="display:flex;"><span> (<span style="color:#a90d91">with-demoted-errors</span> <span style="color:#c41a16">&#34;%s&#34;</span> </span></span><span style="display:flex;"><span> (<span style="color:#a90d91">if</span> (<span style="color:#000">&gt;</span> (<span style="color:#000">length</span> (<span style="color:#000">aw-window-list</span>)) <span style="color:#1c01ce">1</span>) </span></span><span style="display:flex;"><span> (<span style="color:#a90d91">let</span> ((<span style="color:#000">window</span> (<span style="color:#000">aw-select</span> <span style="color:#000">nil</span>)) </span></span><span style="display:flex;"><span> (<span style="color:#000">buffer</span> (<span style="color:#000">current-buffer</span>)) </span></span><span style="display:flex;"><span> (<span style="color:#000">new-buffer</span>)) </span></span><span style="display:flex;"><span> (<span style="color:#000">zk-follow-link-at-point</span> <span style="color:#000">id</span>) </span></span><span style="display:flex;"><span> (<span style="color:#a90d91">setq</span> <span style="color:#000">new-buffer</span> </span></span><span style="display:flex;"><span> (<span style="color:#000">current-buffer</span>)) </span></span><span style="display:flex;"><span> (<span style="color:#000">switch-to-buffer</span> <span style="color:#000">buffer</span>) </span></span><span style="display:flex;"><span> (<span style="color:#000">aw-switch-to-window</span> <span style="color:#000">window</span>) </span></span><span style="display:flex;"><span> (<span style="color:#000">switch-to-buffer</span> <span style="color:#000">new-buffer</span>)) </span></span><span style="display:flex;"><span> (<span style="color:#000">link-hint-open-link-at-point</span>)))) </span></span><span style="display:flex;"><span> </span></span><span style="display:flex;"><span>(<span style="color:#000">link-hint-define-type</span> <span style="color:#c41a16">&#39;zk-link</span> </span></span><span style="display:flex;"><span> <span style="color:#a90d91">:next</span> <span style="color:#000">#&#39;</span><span style="color:#000">zk-link-hint</span><span style="color:#000">–</span><span style="color:#000">next-zk-link</span> </span></span><span style="display:flex;"><span> <span style="color:#a90d91">:at-point-p</span> <span style="color:#000">#&#39;</span><span style="color:#000">zk-link-hint</span><span style="color:#000">–</span><span style="color:#000">zk-link-at-point-p</span> </span></span><span style="display:flex;"><span> <span style="color:#a90d91">:open</span> <span style="color:#000">#&#39;</span><span style="color:#000">zk-follow-link-at-point</span> </span></span><span style="display:flex;"><span> <span style="color:#a90d91">:copy</span> <span style="color:#000">#&#39;</span><span style="color:#000">kill-new</span> </span></span><span style="display:flex;"><span> <span style="color:#a90d91">:aw-select</span> <span style="color:#000">#&#39;</span><span style="color:#000">link-hint</span><span style="color:#000">–</span><span style="color:#000">aw-select-zk-link</span>) </span></span><span style="display:flex;"><span> </span></span><span style="display:flex;"><span>(<span style="color:#a90d91">push</span> <span style="color:#c41a16">&#39;link-hint-zk-link</span> <span style="color:#000">link-hint-types</span>) </span></span></code></pre></div><p>Even though link-hint can be a bit complex under the hood, it is quite effortless, even elegant, when put in combination with ace-window. Give it a try and puzzle over what you had done so long without it.</p> Stendhal at Hand in Vilnius https://localauthor.github.io/posts/stendhal/ Sun, 31 Oct 2021 11:12:00 +0200 https://localauthor.github.io/posts/stendhal/ <style>.org-center { margin-left: auto; margin-right: auto; text-align: center; }</style> <div class="org-center"> <div></div> <p><strong>&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;</strong></p> </div> <p>Stendhal might have spent the night in a building near where I live.</p> <p>There is a plaque on the wall of the building — a bookstore now, specializing in French literature — memorializing the night that Stendhal is said to have stayed there.</p> <p>With its bilingual inscription and <em>bas relief</em> portrait of the artist, the plaque brings some kind of life to that corner, projecting a line clear to a far side of Europe.</p> <p>Something of French culture once comforted itself here, if you can imagine.</p> <style>.org-center { margin-left: auto; margin-right: auto; text-align: center; }</style> <div class="org-center"> <div></div> <p><strong>&mdash;&mdash;&mdash;&mdash;&mdash;</strong></p> </div> <p>You’ll have to imagine.</p> <p>The plaque does not cite its sources. It does not quote from the writer. It does not paint a picture of an event, a time, or a place.</p> <blockquote> <p>ŠIAME NAME &hellip; BUVO APSISTOJES &hellip; STENDALIS</p></blockquote> <!--quoteend--> <blockquote> <p>DANS CETTE MAISON STENDHAL &hellip; FIT ETAPE</p></blockquote> <p>Where would one look if one were inclined to dig up the truth of what may or may not have happened in this or another place at this or that time so many decades, centuries since?</p> <p>But then, who would care to doubt these chiseled records?</p> <style>.org-center { margin-left: auto; margin-right: auto; text-align: center; }</style> <div class="org-center"> <div></div> <p><strong>&mdash;&mdash;&mdash;&mdash;&mdash;</strong></p> </div> <p>All told, the plaque is less a statement of fact than one of values.</p> <p>&ldquo;Draw this place closer, in your mind, to what you might already know well,&rdquo; it says.</p> <p>&ldquo;Comfort yourself, that you are not so far away, so disconnected, as you thought&mdash;as you might have feared.&rdquo;</p> <style>.org-center { margin-left: auto; margin-right: auto; text-align: center; }</style> <div class="org-center"> <div></div> <p><strong>&mdash;&mdash;&mdash;&mdash;&mdash;</strong></p> </div> <p>In some letters Stendhal notes his passing, while marching with Napoleon’s army, through various cities and towns in the region. His remarks are spare, revealing an experience of dismal early winter and little else.<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup></p> <div class="footnotes" role="doc-endnotes"> <hr> <ol> <li id="fn:1"> <p>Antanas Vaičiulaitis, “Stendhal in Lithuania,” trans. M. Vasiliauskas, <i>Lituanus: Lithuanian Quarterly Journal of Arts and Sciences</i> 22, no. 2 (1976).&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p> </li> </ol> </div> Drafting, Beyond MS Word https://localauthor.github.io/posts/drafting/ Sat, 30 Oct 2021 12:56:00 +0300 https://localauthor.github.io/posts/drafting/ <style>.org-center { margin-left: auto; margin-right: auto; text-align: center; }</style> <div class="org-center"> <div></div> <p><strong>&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;</strong></p> </div> <p>There is no good way to write an essay.</p> <p>But there <em>are</em> several bad ways.</p> <p>Too common, I think, is the impulse to open up a fresh document in Microsoft Word &mdash; or Google Docs, or LibreOffice<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup> &mdash; and begin banging away at whatever process has worked in the past.</p> <p>That process &mdash; whether it be freewriting, or transcribing, or listing, or outlining &mdash; <em>might</em> be effective, or it might not.</p> <p>But the <em>forum</em> in which that process takes place all-too-often &mdash; the blank white simulated piece of paper &mdash; is <em>certainly</em> not doing you any favors.</p> <p>I once saw the great Ted Nelson<sup id="fnref:2"><a href="#fn:2" class="footnote-ref" role="doc-noteref">2</a></sup> give a talk (screed) in a library, in which he denounced (railed against) the usage of the term &ldquo;desktop&rdquo; in personal computing.</p> <p>How many desktops, he asked (shouted), are positioned <em>vertically</em> in front of you?</p> <p>Similarly: do you really need to type out your essay&rsquo;s fledgling stages on something that <em>looks</em> like a piece of paper<sup id="fnref:3"><a href="#fn:3" class="footnote-ref" role="doc-noteref">3</a></sup> just because that&rsquo;s the particular physicality that your essay will take on <em>later</em>?</p> <p>Let&rsquo;s be honest, though &mdash; your essay will <em>never</em> take on the physicality of a piece of paper.</p> <p>Because you&rsquo;re not going to print your essay out on paper.</p> <p>You&rsquo;re just going to email it to someone, who is <em>also</em> not going to print it out on paper.</p> <style>.org-center { margin-left: auto; margin-right: auto; text-align: center; }</style> <div class="org-center"> <div></div> <p><strong>So, what else can you do? Where else can you write?</strong></p> </div> <p>Do me a favor:<sup id="fnref:4"><a href="#fn:4" class="footnote-ref" role="doc-noteref">4</a></sup></p> <ol> <li> <p>Open TextEdit (on MacOS) or Notepad (on Windows).</p> </li> <li> <p>Start your essay-writing process, whatever that might entail.</p> </li> <li> <p>Reflect.</p> </li> </ol> <p>How does it feel to be writing in a space ungoverned by the arbitrary geometries of the US Letter or A4 sheet?<sup id="fnref:5"><a href="#fn:5" class="footnote-ref" role="doc-noteref">5</a></sup></p> <p>Do you feel liberated? No? Well, give it a minute.</p> <p>If you&rsquo;ve enabled &ldquo;Word Wrap&rdquo; (Notepad) or &ldquo;Wrap to Page&rdquo; (TextEdit) try resizing the window so you can only see the few sentences you&rsquo;re working on. How does that feel?</p> <p>Liberating? No? <em>Then try something else.</em></p> <p><strong>The point here is not to prescribe a way of writing but rather to prompt the shaking loose of the notion of prescription.</strong></p> <p>There is no straight line through the production of an essay and, accordingly, no good reason why a process as messy and full of switchbacks as writing tends to be should take place on the image of a facsimile of a white piece paper.</p> <p>In any case, you can always paste your draft into Word later.</p> <div class="footnotes" role="doc-endnotes"> <hr> <ol> <li id="fn:1"> <p>A free and open-source (<a href="https://en.wikipedia.org/wiki/Free%5Fand%5Fopen-source%5Fsoftware" target="_blank">FOSS</a>) alternative to MS Word: <a href="https://www.libreoffice.org/" target="_blank">https://www.libreoffice.org/</a>&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p> </li> <li id="fn:2"> <p><a href="https://en.wikipedia.org/wiki/Ted%5FNelson" target="_blank">https://en.wikipedia.org/wiki/Ted_Nelson</a>&#160;<a href="#fnref:2" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p> </li> <li id="fn:3"> <p><a href="https://en.m.wikipedia.org/wiki/Skeuomorph#Virtual%5Fexamples" target="_blank">https://en.m.wikipedia.org/wiki/Skeuomorph#Virtual_examples</a>&#160;<a href="#fnref:3" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p> </li> <li id="fn:4"> <p>Do yourself a favor.&#160;<a href="#fnref:4" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p> </li> <li id="fn:5"> <p><a href="https://en.wikipedia.org/wiki/Paper%5Fsize" target="_blank">https://en.wikipedia.org/wiki/Paper_size</a>&#160;<a href="#fnref:5" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p> </li> </ol> </div> Textual Encounters of the Worthwhile Kind https://localauthor.github.io/posts/textual-encounters/ Wed, 23 Jun 2021 22:07:00 +0300 https://localauthor.github.io/posts/textual-encounters/ <p><em>Reading without taking notes is as good as not reading at all.</em></p> <style>.org-center { margin-left: auto; margin-right: auto; text-align: center; }</style> <div class="org-center"> <div></div> <p><strong>&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;</strong></p> </div> <p>Think of the last text you read &mdash; a book, a chapter, an article, a blog post.</p> <p>What do you remember about it?</p> <p class="verse"> What do you remember more clearly:<br /> <br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a) The text itself.<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b) The circumstances in which you read it.<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c) The feeling of accomplishment that came over you when you finished reading.<br /> <br /> I, for one, do not remember the last book I read. (Or the last article, chapter, or blog post.)<br /> </p> <p>Maybe I remember a title, a general topic, an author&rsquo;s name &mdash; sometimes more.<br /> But that one anecdote on such-and-such a page? The footnote with all the citations that seemed so promising? The statement of argument a third of the way through the introduction?</p> <p>They&rsquo;re gone. Like they never existed. And like we, therefore, never encountered each other.</p> <style>.org-center { margin-left: auto; margin-right: auto; text-align: center; }</style> <div class="org-center"> <div></div> <p><strong>But we <em>did</em> encounter each other&hellip;</strong><br /></p> <p>So what was it all <em>for</em>?</p> </div> <style>.org-center { margin-left: auto; margin-right: auto; text-align: center; }</style> <div class="org-center"> <div></div> <p><strong>&mdash;&mdash;&mdash;&mdash;&mdash;</strong></p> </div> <p>Whenever I am reading something that I find to be of significant moment &mdash; something compelling, inciting, <em>good</em> &mdash; I make a text file on my computer.</p> <p>In that file, I take notes on whatever strikes me about what I am reading. Beside each note, I write a page number. It ends up looking something like this:</p> <blockquote> <p>[40]: Crusoe arrives on the island.<br /> [72]: RC can&rsquo;t believe there&rsquo;s corn growing.<br /> [75]: Can we consider this an immaculate corn-ception?</p></blockquote> <p>Sometimes I type direct quotes from the text. But often I only describe, in a few words, what is being discussed on a given page: analysis of a primary or secondary source, discussion of a concept, definition of a key term.</p> <p>Later when I need to recall some details about something I&rsquo;ve read, I&rsquo;ve got a clear and easily accessible record of my reading.<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup></p> <style>.org-center { margin-left: auto; margin-right: auto; text-align: center; }</style> <div class="org-center"> <div></div> <p><strong>&mdash;&mdash;&mdash;&mdash;&mdash;</strong></p> </div> <p>What makes this process distinct, noteworthy, worthy of note? The following precept, which I try as hard as possible to adhere to:</p> <style>.org-center { margin-left: auto; margin-right: auto; text-align: center; }</style> <div class="org-center"> <div></div> <p><strong><em>Do not make any notes in the text itself.</em></strong><br /> <br /></p> </div> <p>That&rsquo;s right. No underlining, no highlighting, no notes in the margins.<br /></p> <p>This is not in the interest of keeping a clean original document, digital or otherwise.<br /></p> <p>No &mdash; it is to prevent me from <em>feeling</em> like some work has been done when, in reality, <em>no work</em> has been done.</p> <p>Underlining and highlighting <em>feel great</em>. They are easy. They feel like an accomplishment. But once you close a book or pdf, what do you have? Quickly fading memories.</p> <p>Sure, you have books and pdfs full of marks. But to get to those marks, you&rsquo;ll have to go back to the books/pdfs themselves &mdash; if you can find them.</p> <p>And then, what do those marks really <em>mean</em>?</p> <p>You&rsquo;ll have to read the underlined/highlighted portions of text <em>again</em> in order to understand them.</p> <p>And <em>then</em>, if you&rsquo;re like me &mdash; and I assume you are &mdash; you will wonder half the time why you thought a passage was worth underlining/highlighting in the first place.</p> <style>.org-center { margin-left: auto; margin-right: auto; text-align: center; }</style> <div class="org-center"> <div></div> <p><strong>&mdash;&mdash;&mdash;&mdash;&mdash;</strong></p> </div> <p>Why do <em>a lot</em> of extra work later when you can do a <em>little</em> extra work now?</p> <p>I know the answer to this question, of course. It&rsquo;s because you&rsquo;re the <em>now</em> you, and you don&rsquo;t care about the <em>later</em> you, and all the work that they may or may not have to do. Let <em>them</em> figure it out.</p> <p>They&rsquo;re going to be <em>so</em> mad&hellip;</p> <div class="footnotes" role="doc-endnotes"> <hr> <ol> <li id="fn:1"> <p>Where do I keep these notes? What kind of files are they? How do I title them? How do I search through them? What if I want to refer to another note? Or to another text? Questions, questions&hellip;&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p> </li> </ol> </div> The Wise Man of Švarco https://localauthor.github.io/posts/the-wise-man/ Fri, 12 Feb 2021 16:24:00 -0500 https://localauthor.github.io/posts/the-wise-man/ <p><em>There is a man who looks at me where I walk my dog in the park.</em></p> <style>.org-center { margin-left: auto; margin-right: auto; text-align: center; }</style> <div class="org-center"> <div></div> <p><strong>&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;</strong></p> </div> <p>Near the French embassy, up the street from the university, he stands in a long black coat and hat, peering over a significant beard, maintained with care for decades, or so one can deduce from its stately sweep.</p> <p>He is a painting on a wall. Less a mural or a portrait than an icon.</p> <p>The wall marks the boundary of what was the Jewish ghetto in Vilnius, established during the Nazi occupation.<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup></p> <p>This representation, notably greater than life-size, is rendered in a stenciled style. It was placed here as a reminder of the kinds of lives that used to pass not just behind, through, around, and in front of walls like the one it appears on, but also&mdash;and perhaps most importantly&mdash;with no special regard for such things: unheeded and undetermined by the barriers such walls would become.</p> <p>This painting&mdash;one of many in the area&mdash;has been given a nickname: “The Wise Man.” His arms are folded, his hands are tucked into opposing sleeves, his head is tilted knowingly. His posture is one of forbearance, as much as wisdom, or anything else. One feels suffered to look, but not to linger.</p> <p>I pass him with the briefest acknowledgment and return home. He does not follow me.</p> <style>.org-center { margin-left: auto; margin-right: auto; text-align: center; }</style> <div class="org-center"> <div></div> <p><strong>&mdash;&mdash;&mdash;&mdash;&mdash;</strong></p> </div> <p>This man’s likeness, it turns out, was drawn from an archival photograph.<sup id="fnref:2"><a href="#fn:2" class="footnote-ref" role="doc-noteref">2</a></sup></p> <p>Upon learning this, I started to feel whatever life, wisdom, forbearance, and otherwise that the painting purported to represent drain out of that static, flattened artifact.</p> <p>What of the real man, himself? Did he live in this sector? Or in this city? Was he wise? Did he, in his life, stand for what he has been made to stand for, now? And how, and to whom, did he convey whatever wisdom he might might have possessed?</p> <p>Of what is this painting a reminder? Perhaps only a reminder to remember &mdash; which may be enough, and plenty, for a given moment.<sup id="fnref:3"><a href="#fn:3" class="footnote-ref" role="doc-noteref">3</a></sup></p> <div class="footnotes" role="doc-endnotes"> <hr> <ol> <li id="fn:1"> <p>For the record: <a href="https://en.wikipedia.org/wiki/Vilna%5FGhetto" target="_blank">https://en.wikipedia.org/wiki/Vilna_Ghetto</a>&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p> </li> <li id="fn:2"> <p>I have opted not to include any photos here, though one should be easy to find, if not the other. The project behind this work is called &ldquo;Sienos prisimena,&rdquo; or &ldquo;Walls that Remember.&rdquo;&#160;<a href="#fnref:2" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p> </li> <li id="fn:3"> <p><a href="https://www.passport-journal.com/en/product/passport-journal-iii-t-lietuviu-k/" target="_blank">A perhaps more thorough resource, if less public and immediate.</a>&#160;<a href="#fnref:3" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p> </li> </ol> </div> About https://localauthor.github.io/about/ Mon, 01 Jan 0001 00:00:00 +0000 https://localauthor.github.io/about/ <p>This is the <a href="./">about</a> page. It&rsquo;s where you would find out what this page is about.</p> <p>The posts here are written by <a href="https://grantrosson.com" target="_blank">me</a>, about which more can be found there.</p> feed https://localauthor.github.io/feed/ Mon, 01 Jan 0001 00:00:00 +0000 https://localauthor.github.io/feed/ Place https://localauthor.github.io/posts/localauthor/ Mon, 01 Jan 0001 00:00:00 +0000 https://localauthor.github.io/posts/localauthor/ <h2 id="fog-smoke"><span class="org-todo done DONE">DONE</span> </h2> <figure><img src="https://localauthor.github.io/images/fog-smoke.jpg"> </figure> <div class="right"> <p>2025-09-26</p> </div> <h2 id="ezerudugne"><span class="org-todo done DONE">DONE</span> <em>Ežerų Dugne</em></h2> <style>.org-center { margin-left: auto; margin-right: auto; text-align: center; }</style> <div class="org-center"> <p><strong>——————————————————————————————</strong></p> </div> <style>.org-center { margin-left: auto; margin-right: auto; text-align: center; }</style> <div class="org-center"> <iframe width="560" height="315" src="https://www.youtube.com/embed/dGhYUp_tT3s?si=njyiyCXM7VNKrYr4" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe> </div> <style>.org-center { margin-left: auto; margin-right: auto; text-align: center; }</style> <div class="org-center"> <p><strong>“But nature is a stranger yet”</strong></p> </div> <div class="verse"> <p>   in the above film –<br />            <em>Ežerų dugne</em> (In the Depths of Lakes) (2014), dir. Akvilė Anglickaitė<br /> — —<br /> divers explore their love for four Lithuanian lakes<br /> and the alien terrain at their depths:<br /> — —<br /></p> </div> <p><img src="https://localauthor.github.io/images/ezeras1.jpg" alt=""> — <img src="https://localauthor.github.io/images/ezeras2.jpg" alt=""> — <img src="https://localauthor.github.io/images/ezeras3.jpg" alt=""> — <img src="https://localauthor.github.io/images/ezeras4.jpg" alt=""> — —</p> <div class="verse"> <p>             on view at <a href="https://mo.lt/en/ivykiai/longing/" target="_blank">MO</a> until March 30, 2025,<br />                  as part of an exhibition on <em>solastalgia</em><br /> —<br /></p> </div> <h2 id="place"><span class="org-todo done DONE">DONE</span> To Carve Something Meaningful</h2> <style>.org-center { margin-left: auto; margin-right: auto; text-align: center; }</style> <div class="org-center"> <p><strong>——————————————————————————————</strong></p> </div> <div class="verse"> <p>&ldquo;One of the most important functions of &lsquo;place&rsquo;<br /> is its ability to bridge<br /> the scholarly realm of the academic geographer<br /> and everyday terrain of ordinary people<br /> trying to understand the world<br /> and make it better.<br /> Without &lsquo;place,&rsquo; geographers risk<br /> losing their most important audience:<br /> those engaged in the struggle<br /> to carve something meaningful<br /> out of an impersonal, abstract world.&rdquo;<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup><br /></p> </div> <h2 id="stendhal"><span class="org-todo done DONE">DONE</span> Stendhal at Hand in Vilnius</h2> <style>.org-center { margin-left: auto; margin-right: auto; text-align: center; }</style> <div class="org-center"> <p><strong>——————————————————————————————</strong></p> </div> <p>Stendhal might have spent the night in a building near where I live.</p> <p>There is a plaque on the wall of the building — a bookstore now, specializing in French literature — memorializing the night that Stendhal is said to have stayed there.</p> <p>With its bilingual inscription and <em>bas relief</em> portrait of the artist, the plaque brings some kind of life to that corner, projecting a line clear to a far side of Europe.</p> <p>Something of French culture once comforted itself here, if you can imagine.</p> <style>.org-center { margin-left: auto; margin-right: auto; text-align: center; }</style> <div class="org-center"> <p><strong>—————</strong></p> </div> <p>You’ll have to imagine.</p> <p>The plaque does not cite its sources. It does not quote from the writer. It does not paint a picture of an event, a time, or a place.</p> <blockquote> <p>ŠIAME NAME &hellip; BUVO APSISTOJES &hellip; STENDALIS</p></blockquote> <!--quoteend--> <blockquote> <p>DANS CETTE MAISON STENDHAL &hellip; FIT ETAPE</p></blockquote> <p>Where would one look if one were inclined to dig up the truth of what may or may not have happened in this or another place at this or that time so many decades, centuries since?</p> <p>But then, who would care to doubt these chiseled records?</p> <style>.org-center { margin-left: auto; margin-right: auto; text-align: center; }</style> <div class="org-center"> <p><strong>—————</strong></p> </div> <p>All told, the plaque is less a statement of fact than one of values.</p> <p>&ldquo;Draw this place closer, in your mind, to what you might already know well,&rdquo; it says.</p> <p>&ldquo;Comfort yourself, that you are not so far away, so disconnected, as you thought—as you might have feared.&rdquo;</p> <style>.org-center { margin-left: auto; margin-right: auto; text-align: center; }</style> <div class="org-center"> <p><strong>—————</strong></p> </div> <p>In some letters Stendhal notes his passing, while marching with Napoleon’s army, through various cities and towns in the region. His remarks are spare, revealing an experience of dismal early winter and little else.<sup id="fnref:2"><a href="#fn:2" class="footnote-ref" role="doc-noteref">2</a></sup></p> <h2 id="the-wise-man"><span class="org-todo done DONE">DONE</span> The Wise Man of Švarco</h2> <p><em>There is a man who looks at me where I walk my dog in the park.</em></p> <style>.org-center { margin-left: auto; margin-right: auto; text-align: center; }</style> <div class="org-center"> <p><strong>——————————————————————————————</strong></p> </div> <p>Near the French embassy, up the street from the university, he stands in a long black coat and hat, peering over a significant beard, maintained with care for decades, or so one can deduce from its stately sweep.</p> <p>He is a painting on a wall. Less a mural or a portrait than an icon.</p> <p>The wall marks the boundary of what was the Jewish ghetto in Vilnius, established during the Nazi occupation.<sup id="fnref:3"><a href="#fn:3" class="footnote-ref" role="doc-noteref">3</a></sup></p> <p>This representation, notably greater than life-size, is rendered in a stenciled style. It was placed here as a reminder of the kinds of lives that used to pass not just behind, through, around, and in front of walls like the one it appears on, but also—and perhaps most importantly—with no special regard for such things: unheeded and undetermined by the barriers such walls would become.</p> <p>This painting—one of many in the area—has been given a nickname: “The Wise Man.” His arms are folded, his hands are tucked into opposing sleeves, his head is tilted knowingly. His posture is one of forbearance, as much as wisdom, or anything else. One feels suffered to look, but not to linger.</p> <p>I pass him with the briefest acknowledgment and return home. He does not follow me.</p> <style>.org-center { margin-left: auto; margin-right: auto; text-align: center; }</style> <div class="org-center"> <p><strong>—————</strong></p> </div> <p>This man’s likeness, it turns out, was drawn from an archival photograph.<sup id="fnref:4"><a href="#fn:4" class="footnote-ref" role="doc-noteref">4</a></sup></p> <p>Upon learning this, I started to feel whatever life, wisdom, forbearance, and otherwise that the painting purported to represent drain out of that static, flattened artifact.</p> <p>What of the real man, himself? Did he live in this sector? Or in this city? Was he wise? Did he, in his life, stand for what he has been made to stand for, now? And how, and to whom, did he convey whatever wisdom he might might have possessed?</p> <p>Of what is this painting a reminder? Perhaps only a reminder to remember — which may be enough, and plenty, for a given moment.<sup id="fnref:5"><a href="#fn:5" class="footnote-ref" role="doc-noteref">5</a></sup></p> <div class="footnotes" role="doc-endnotes"> <hr> <ol> <li id="fn:1"> <p>Steven Hoelscher, “Place,” in <i>The Wiley-Blackwell Companion to Human Geography</i>, ed. John A. Agnew and James S. Duncan (Chichester, West Sussex: Malden, MA : Wiley-Blackwell, 2011), 256–57.&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p> </li> <li id="fn:2"> <p>Antanas Vaičiulaitis, “Stendhal in Lithuania,” trans. M. Vasiliauskas, <i>Lituanus: Lithuanian Quarterly Journal of Arts and Sciences</i> 22, no. 2 (1976).&#160;<a href="#fnref:2" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p> </li> <li id="fn:3"> <p>For the record: <a href="https://en.wikipedia.org/wiki/Vilna_Ghetto" target="_blank">https://en.wikipedia.org/wiki/Vilna_Ghetto</a>&#160;<a href="#fnref:3" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p> </li> <li id="fn:4"> <p>I have opted not to include any photos here, though one should be easy to find, if not the other. The project behind this work is called &ldquo;Sienos prisimena,&rdquo; or &ldquo;Walls that Remember.&rdquo;&#160;<a href="#fnref:4" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p> </li> <li id="fn:5"> <p><a href="https://www.passport-journal.com/en/product/passport-journal-iii-t-lietuviu-k/" target="_blank">A perhaps more thorough resource, if less public and immediate.</a>&#160;<a href="#fnref:5" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p> </li> </ol> </div>