<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" >

  <title>Erik L. Arneson — Writer and Software Developer</title>
  <subtitle>Erik L. Arneson is a freelance writer and software developer with WordPress experience. He is located in Portland, Oregon.</subtitle>
  <generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator>
  <link href="https://arnesonium.com/feeds/writing.xml" rel="self" type="application/atom+xml" />
  <link href="https://arnesonium.com/" rel="alternate" type="text/html" />
  <updated>2026-06-18T15:03:10+00:00</updated>
  <id>https://arnesonium.com/feeds/writing.xml</id>
  <author>
    <name>Erik L. Arneson</name>
  </author>
      <entry>
        
        <title>Emacs as the Freelancer&apos;s Command Center</title>
        <author>
          <name>Erik L. Arneson</name>
        </author>        
        <link href="https://arnesonium.com/2026/04/emacs-freelance-command-center" rel="alternate" type="text/html" title="Emacs as the Freelancer's Command Center" />
        <updated>2026-04-10T00:00:00+00:00</updated>
        <id>https://arnesonium.com/2026/04/emacs-freelance-command-center</id>
          <category term="emacs" />
        
          <category term="org-mode" />
        
          <category term="programming" />
        
          <category term="writing" />
        
          <category term="music" />
        
          <category term="wordpress" />
        
          <category term="emacs-lisp" />
        
          <category term="email" />
        
          <category term="git" />
        
          <category term="tools" />
        <content type="html" xml:base="https://arnesonium.com/2026/04/emacs-freelance-command-center">&lt;p&gt;Freelancing for small businesses and organizations leads to a position where you are juggling a
number of projects for multiple clients. You need to keep track of a number of tasks ranging from
software development to sending emails to project management. This is a lot easier when you have a
system that can do a bunch of the work for you, which is why I use Emacs as my freelancer command
center.&lt;/p&gt;

&lt;p&gt;I would like to share some of the tools and workflows I use in Emacs to help me keep on top of
multiple clients’ needs and expectations.&lt;/p&gt;

&lt;!--more--&gt;

&lt;h2 id=&quot;organization-with-org-mode&quot;&gt;Organization with org-mode&lt;/h2&gt;

&lt;p&gt;It should be no surprise that at the center of my Emacs command center is &lt;a href=&quot;https://orgmode.org/&quot;&gt;org-mode&lt;/a&gt;. I have already
&lt;a href=&quot;/tags/org-mode/&quot;&gt;written about it a lot&lt;/a&gt;. Every org-mode user seems to have their own way of keeping track of things,
so please don’t take my organizational scheme as some kind of gospel. A couple of years ago, I wrote
about &lt;a href=&quot;/2024/10/todo-lists-in-org-mode&quot;&gt;how I handle to-do lists in org-mode&lt;/a&gt;, and I am still using that method for to-do keywords.
However, file structure is also important. I have a number of core files.&lt;/p&gt;

&lt;h3 id=&quot;freelanceorg&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Freelance.org&lt;/code&gt;&lt;/h3&gt;

&lt;p&gt;This top-level file contains all of my ongoing business tasks, such as tracking potential new
clients, recurring tasks like website maintenance and checking my &lt;a href=&quot;https://mainwp.com/&quot;&gt;MainWP dashboard&lt;/a&gt;. I also have
recurring tasks for invoicing, tracking expenses, and other important business things.&lt;/p&gt;

&lt;p&gt;This file is also where I have my primary time tracking and reporting. Org-mode already supports
this pretty nicely, I just use the built-in &lt;a href=&quot;https://orgmode.org/manual/The-clock-table.html&quot;&gt;clocktable feature&lt;/a&gt;.&lt;/p&gt;

&lt;h3 id=&quot;clientsorg&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Clients/*.org&lt;/code&gt;&lt;/h3&gt;

&lt;p&gt;Clients that have large projects or ongoing business get their own file. This makes organization a
lot easier. All tasks associated with a client and their various projects end up in these individual
files. The important part is making sure that these files are included in the time-tracking
clock table &lt;em&gt;and&lt;/em&gt; your org-mode agenda, so you can see what is going on every week.&lt;/p&gt;

&lt;h3 id=&quot;references-and-linking&quot;&gt;References and Linking&lt;/h3&gt;

&lt;p&gt;I have &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;C-c l&lt;/code&gt; bound to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;org-store-link&lt;/code&gt; and use it all the time to link to various files,
directories, URLs, and even emails. I can then use those links in my client notes, various tasks in
my to-do list, and so on. This helps me keep my agenda organized even when my filesystem and
browser bookmarks are a bit of a mess.&lt;/p&gt;

&lt;h2 id=&quot;email-with-mu4e&quot;&gt;Email with mu4e&lt;/h2&gt;

&lt;p&gt;I have been reading and managing my email in Emacs for over 25 years. There have been a few breaks
here and there where I have tried out other software or even web mail clients, but it has always been
a headache. I return to Emacs! Long ago, I used &lt;a href=&quot;https://gitlab.com/emacs-vm/vm&quot;&gt;VM&lt;/a&gt; (which seems to have taken on new life!), but
currently I use &lt;a href=&quot;https://djcbsoftware.nl/code/mu/mu4e/index.html&quot;&gt;mu4e&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;This gives me a ton of power and flexibility when dealing with email. I have custom functions to
help me compose and organize my email, and I can use &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;org-store-link&lt;/code&gt; to keep track of individual
emails from clients as they relate to agenda items. I even have a function to convert emails that I
have written in Markdown into HTML email, and one that searches for questions in a client email to
make sure I haven’t missed anything.&lt;/p&gt;

&lt;p&gt;The ability to write custom code to both process and create email is extremely powerful and a great
time saver.&lt;/p&gt;

&lt;h2 id=&quot;writing-code&quot;&gt;Writing Code&lt;/h2&gt;

&lt;p&gt;I don’t know what else to say about this, I use Emacs for doing all of my software development. I
make sure to use &lt;a href=&quot;https://github.com/joaotavora/eglot&quot;&gt;Eglot&lt;/a&gt; whenever there is a language server available, and I try to leverage all the
fancy features offered by Emacs whenever possible. The vast majority of projects for clients are PHP
(thanks &lt;a href=&quot;/wordpress/&quot;&gt;WordPress&lt;/a&gt;), Go, JavaScript, and TypeScript.&lt;/p&gt;

&lt;h2 id=&quot;writing-words&quot;&gt;Writing Words&lt;/h2&gt;

&lt;p&gt;Previously, I have shared quite a bit about &lt;a href=&quot;/tags/writing/&quot;&gt;writing in Emacs&lt;/a&gt;. I like to start everything in
org-mode, but I also write quite a bit in Markdown. Emacs has become a powerful tool for writing. I
use the &lt;a href=&quot;https://writewithharper.com/&quot;&gt;Harper language server&lt;/a&gt; along with Eglot to check grammar and spelling.&lt;/p&gt;

&lt;h2 id=&quot;track-all-changes-with-magit&quot;&gt;Track All Changes with Magit&lt;/h2&gt;

&lt;p&gt;Version control is essential, a lesson I have learned over 30+ years of software development. While
&lt;a href=&quot;https://git-scm.com/&quot;&gt;Git&lt;/a&gt; is not part of Emacs, the software I use to interface with Git is. &lt;a href=&quot;https://magit.vc/&quot;&gt;Magit&lt;/a&gt; is a Git user interface
that runs entirely in Emacs. I use it to track my writing, my source code, and even all of my
org-mode files. Using version control is so essential that I have a weekly repeating agenda task
reminding me to check all of my everyday files to make sure I have checked-in my changes for the
week.&lt;/p&gt;

&lt;h2 id=&quot;thinking-music-with-emms&quot;&gt;Thinking Music with EMMS&lt;/h2&gt;

&lt;p&gt;I like to have some soothing background music when I am programming, writing, or otherwise working
on my computer. However, if that background music has lyrics, it can be really distracting. It is
easy to make a playlist for various suitable &lt;a href=&quot;https://somafm.com/&quot;&gt;SomaFM&lt;/a&gt; channels to load into &lt;a href=&quot;https://www.gnu.org/software/emms/&quot;&gt;EMMS (the Emacs Multimedia
System)&lt;/a&gt; using the command &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;M-x emms-play-playlist&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Try saving the following into &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;playlist.el&lt;/code&gt; somewhere, and using it the next time you are writing:&lt;/p&gt;

&lt;div class=&quot;language-emacs-lisp highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt; &lt;span class=&quot;c1&quot;&gt;;;; This is an EMMS playlist file Play it with M-x emms-play-playlist&lt;/span&gt;
 &lt;span class=&quot;p&quot;&gt;((&lt;/span&gt;&lt;span class=&quot;vg&quot;&gt;*track*&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;type&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;name&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;https://somafm.com/synphaera.pls&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;vg&quot;&gt;*track*&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;type&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;name&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;https://somafm.com/gsclassic.pls&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;vg&quot;&gt;*track*&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;type&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;name&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;https://somafm.com/sonicuniverse.pls&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;vg&quot;&gt;*track*&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;type&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;name&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;https://somafm.com/groovesalad.pls&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;And make sure to check out SomaFM’s selection to find some good background music that suits your
tastes!&lt;/p&gt;

&lt;h2 id=&quot;and-the-tools-i-have-missed&quot;&gt;And the tools I have missed&lt;/h2&gt;

&lt;p&gt;There are undoubtedly Emacs tools that I have missed in this brief overview. I have been wracking my
brain as I write, trying to see what I have forgotten or overlooked. Frankly, Emacs has become such
a central part of the organization for my freelancing that there are probably many tools, packages,
and processes that I use every day without thinking about it too much.&lt;/p&gt;

&lt;p&gt;Emacs makes it possible for me to freelance for multiple clients and small businesses without losing
my mind with organization and task management. The tools it provides allow me to stay on top of
multiple projects, handle client relationships, and keep track of years worth of tasks,
communications, and projects. Without it, I’d be sunk!&lt;/p&gt;

&lt;p&gt;What Emacs tools are you using to manage your freelance business? I am always looking for ways to
improve or streamline my process.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The featured image for this post comes from Agostino Ramelli’s&lt;/em&gt; Le diverse et artificiose machine &lt;em&gt;(1588). &lt;a href=&quot;https://publicdomainreview.org/collection/agostino-ramelli-theatre-of-machines/&quot;&gt;Read more about it on the Public Domain Review.&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;</content>
      </entry>
    
      <entry>
        
        <title>Writing Experience (Emacs Carnival)</title>
        <author>
          <name>Erik L. Arneson</name>
        </author>        
        <link href="https://arnesonium.com/2025/07/writing-experience-emacs-carnival" rel="alternate" type="text/html" title="Writing Experience (Emacs Carnival)" />
        <updated>2025-07-07T00:00:00+00:00</updated>
        <id>https://arnesonium.com/2025/07/writing-experience</id>
          <category term="emacs" />
        
          <category term="writing" />
        
          <category term="org-mode" />
        <content type="html" xml:base="https://arnesonium.com/2025/07/writing-experience-emacs-carnival">&lt;p&gt;This is my contribution to month two of &lt;a href=&quot;https://gregnewman.io/blog/emacs-carnival-2025-07-writing-experience/&quot;&gt;Greg Newman’s Emacs Carnival&lt;/a&gt;. The topic this month is “Writing Experience,” which is perfect, since I write in Emacs all the time. In fact, I am writing this blog post in Emacs right now!
&lt;!--more--&gt;&lt;/p&gt;

&lt;h2 id=&quot;emacs-writing-history&quot;&gt;Emacs Writing History&lt;/h2&gt;

&lt;p&gt;I do not know how long I have been writing in Emacs, but I have documents written in LaTeX from the early 2000s that were definitely written in Emacs, and I know those weren’t the first. I guess what is interesting about my writing experience in Emacs is how it has developed over the years. Where I originally wrote everything in plain text or LaTeX, over time I moved to org-mode and Markdown.&lt;/p&gt;

&lt;p&gt;Writing LaTeX in Emacs taught me to view documents and writing the same way I view source code. Since all of my writing was in text formats, I could easily use version control software to store archives full of text. I began by using &lt;a href=&quot;https://en.wikipedia.org/wiki/Concurrent_Versions_System&quot;&gt;Concurrent Versions System (CVS)&lt;/a&gt;, but eventually moved to Git. I have a few Git repositories with writing, but my biggest dates back to 2009. Those early commits are all LaTeX and plain text files.&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;commit c64500897e2509bc3316d252cda10a9119384933
Author: Erik L. Arneson &amp;lt;pXXX@XXX.XXX&amp;gt;
Date:   Sat Dec 5 10:51:06 2009 -0800

    Initial import of an old repository.
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;The oldest org-mode file in my writing repository dates to December 27th, 2010, and is titled “Beer and Pizza.” The commit message indicates that I pulled some writing over from another repository in this commit, so obviously I had been writing with org-mode for quite a while. I know, for instance, that “Beer and Pizza” was an article that I wrote for an early incarnation of &lt;a href=&quot;https://southernoregonmagazine.com/&quot;&gt;Southern Oregon Magazine&lt;/a&gt;, and my notes are dated back to February of that year.&lt;/p&gt;

&lt;h2 id=&quot;org-mode-is-a-life-changer&quot;&gt;Org-mode Is A Life-changer&lt;/h2&gt;

&lt;p&gt;You have probably read other people’s experience with writing in org-mode in Emacs, so instead of sharing an exhausting list of all the life-changing, writing-improving things that it has brought me, here are a few bits that I really love about it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It is fantastic at organizing writing projects.&lt;/strong&gt; From being able to shift around headings and blocks of text, to combining to-do lists with writing projects, to being able to create macros and include different files—all of these things make org-mode perfect for working on medium and large projects. I write everything from blog posts to podcast scripts to &lt;em&gt;books&lt;/em&gt; in org-mode, and it helps me stay organized.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I do not have to write in Word or Google Docs.&lt;/strong&gt; The export functions in org-mode do a great job creating Word files, ODT files, HTML files, and all kinds of formats. If org-mode’s export abilities aren’t good enough, it can also interface with &lt;a href=&quot;https://pandoc.org/&quot;&gt;pandoc&lt;/a&gt; to cover all the other cases! This means I get to use all of my familiar tools and processes when writing, and I don’t have to worry about &lt;a href=&quot;https://lions-way-presents.captivate.fm/episode/the-word-processor-war/&quot;&gt;awful word processing software&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Everything I need to write can happen in org-mode!&lt;/strong&gt; I have several websites that are built entirely out of org-mode. When I need to create slides for a lecture, I do it in org-mode. When I write adventures for Dungeons &amp;amp; Dragons, I do it in org-mode. When I need to whip up a spreadsheet to handle my household budget, I do it in org-mode. When I need to write a formal letter, I do it in org-mode. Frankly, it is so expressive and flexible, that I don’t need to use other tools for writing. It’s all Emacs and org-mode.&lt;/p&gt;

&lt;h2 id=&quot;emacs-can-be-distraction-free&quot;&gt;Emacs Can Be Distraction-Free&lt;/h2&gt;

&lt;p&gt;I have a hotkey connected to &lt;a href=&quot;https://github.com/joostkremers/writeroom-mode&quot;&gt;writeroom-mode&lt;/a&gt;, which plonks me right into a full-screen, distraction-free writing mode. Easy as pie! This means that when I really need to get down to business and get a lot of writing done, I don’t need to switch to a new app, leave my familiar tools behind, or go through any extra trouble. It’s just right here, built in.&lt;/p&gt;

&lt;h2 id=&quot;no-going-back&quot;&gt;No Going Back&lt;/h2&gt;

&lt;p&gt;I’ve been writing with Emacs for decades. It is my comfortable writing spot. I honestly cannot see myself abandoning it for another writing tool, because it works for me. I just used a couple of commands to check my three biggest writing repositories, and I have approximately 630,000 words written in org-mode between them. That’s a commitment!&lt;/p&gt;

&lt;p&gt;I am aware that there are a lot of people out there using Emacs for writing, so I am excited to see what others share. I’m very pleased with Greg Newman’s choice for this second writing topic.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Edit:&lt;/strong&gt; I realized that what I was calling my second biggest writing repository was actually my third biggest. I updated some numbers to reflect another 130,000 words of writing I found.&lt;/p&gt;</content>
      </entry>
    
      <entry>
        
        <title>EmacsConf 2023 Retrospective</title>
        <author>
          <name>Erik L. Arneson</name>
        </author>        
        <link href="https://arnesonium.com/2023/12/emacsconf-retrospective" rel="alternate" type="text/html" title="EmacsConf 2023 Retrospective" />
        <updated>2023-12-04T00:00:00+00:00</updated>
        <id>https://arnesonium.com/2023/12/emacsconf</id>
          <category term="emacs" />
        
          <category term="programming" />
        
          <category term="conference" />
        
          <category term="writing" />
        <content type="html" xml:base="https://arnesonium.com/2023/12/emacsconf-retrospective">&lt;p&gt;This past weekend was &lt;a href=&quot;https://emacsconf.org/2023/&quot;&gt;EmacsConf 2023&lt;/a&gt;. It was held entirely online, which was great because I could attend in my pyjamas! Since it happened on Eastern Standard Time and I live on the Pacific coast, I found the pyjama-enablement to be quite conducive to an excellent conference experience. Here are some things I learned by waking up at 5:30 in the morning this weekend!
&lt;!--more--&gt;&lt;/p&gt;

&lt;p&gt;Before getting into the good stuff, I should add that I did not spend a lot of time taking notes during the conference. Instead, I usually jumped straight into my Emacs configuration and started tinkering and fooling around. This means that I’ve probably left out some great stuff.&lt;/p&gt;

&lt;h2 id=&quot;emacs-advocacy&quot;&gt;Emacs Advocacy&lt;/h2&gt;

&lt;p&gt;There were a couple of talks about Emacs advocacy, but the one that I paid the most attention to was &lt;a href=&quot;https://emacsconf.org/2023/talks/mentor/&quot;&gt;Mentoring VS-Coders as an Emacsian&lt;/a&gt; by &lt;a href=&quot;https://takeonrules.com&quot;&gt;Jeremy Friesen&lt;/a&gt;. I think the big takeaway was that he got more mileage out of showing the power of Emacs than he did by trying to argue with users of other editors. Emacs users tend to already understand the power and flexibility of the tool they are using; just show it off, let it do the work.&lt;/p&gt;

&lt;p&gt;However, another topic that was brought up in a number of talks was that having all of your projects available in the same tool seems to enable a better, richer type of thinking. Being able to both write effectively and program efficiently in Emacs helps generate more complete thoughts. It also seems to spur creativity and help people conceptualize projects better. This may be a big part of advocacy, as very few other programming editors are also good at writing and note-taking, which leads me to …&lt;/p&gt;

&lt;h2 id=&quot;writing&quot;&gt;Writing&lt;/h2&gt;

&lt;p&gt;I do &lt;a href=&quot;/tags/writing&quot;&gt;a lot of writing in Emacs&lt;/a&gt;, and I’m not the only one. &lt;a href=&quot;https://emacs.ch/@jameshowell&quot;&gt;James Howell&lt;/a&gt; gave a talk about &lt;a href=&quot;https://emacsconf.org/2023/talks/uni/&quot;&gt;authoring and presenting university courses with Emacs&lt;/a&gt;. I have also written and presented lectures and classes using just Emacs. It has the power to create slides, lecture notes, and even handouts from the same source. There were a few more great talks about writing, including another one by Jeremy Friesen (he seems to do a lot of cool stuff).&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.howardism.org/&quot;&gt;Howard Abrams&lt;/a&gt; talked about &lt;a href=&quot;https://emacsconf.org/2023/talks/solo/&quot;&gt;playing table-top role playing games (TTRPGs) in Emacs&lt;/a&gt;. He focused on how the pandemic had encouraged him to look into solo TTRPGs, which led him to &lt;a href=&quot;https://www.ironswornrpg.com/&quot;&gt;Ironsworn&lt;/a&gt;. Howard then created a full Ironsworn system in Emacs that allows him to play the game on its own. I am including this under the “Writing” section because solo TTRPG play is a lot like writing fiction, it’s just that you use rules and randomness to help you figure out where the story goes. One of the best things about this talk is that the pre-recorded video was produced by &lt;a href=&quot;https://youtu.be/6s1xF-Mya98?si=jbmzgUX9Mx5byV-n&quot;&gt;his son&lt;/a&gt;. It looks great!&lt;/p&gt;

&lt;h2 id=&quot;hyper-things-hyperbole-and-hyperdrive&quot;&gt;Hyper Things (Hyperbole and Hyperdrive)&lt;/h2&gt;

&lt;p&gt;I watched a talk about &lt;a href=&quot;https://www.gnu.org/software/hyperbole/&quot;&gt;Hyperbole&lt;/a&gt; again this year. This is an Emacs package that I would really love to figure out how to use, but it just doesn’t integrate cleanly into my configuration nor my workflow. I tried it last year and got kind of annoyed at it. I gave it another try during &lt;a href=&quot;https://emacsconf.org/2023/talks/hyperamp/&quot;&gt;Rob Weiner’s talk&lt;/a&gt;, but this time I couldn’t even get Hyperbole to properly set itself up. Anyhow, I gave up on it again. Until next year, Hyperbole!&lt;/p&gt;

&lt;p&gt;Now &lt;a href=&quot;https://ushin.org/hyperdrive/hyperdrive-manual.html&quot;&gt;Hyperdrive&lt;/a&gt;, on the other hand, was something new and interesting. Joseph Turner and Protesilaos Stavrou gave a talk on &lt;a href=&quot;https://emacsconf.org/2023/talks/hyperdrive/&quot;&gt;hyperdrive.el: Peer-to-peer filesystem in Emacs&lt;/a&gt;. Set up was extremely simple; &lt;em&gt;it just worked.&lt;/em&gt; I was quickly able to share hyperdrive files and links with others. It remains to be seen what my use-case for Hyperdrive will be, but I look forward to watching this project develop.&lt;/p&gt;

&lt;h2 id=&quot;emms&quot;&gt;EMMS&lt;/h2&gt;

&lt;p&gt;Yoni Rabkin gave &lt;a href=&quot;https://emacsconf.org/2023/talks/emms/&quot;&gt;a talk on the Emacs Multi-Media System (EMMS)&lt;/a&gt;. I like EMMS, but I don’t use it as regularly as I should. However, Rabkin’s talk encouraged me to give it another chance. I am currently listening to Information Society in EMMS while I write this blog post. I suspect that like most people, I don’t really dig into my old MP3 collection as much as I should. This is a good excuse! Rabkin was also happy to remind the audience that EMMS can handle streaming online music sources and playing pretty much every kind of media. It’s worth exploring EMMS again!&lt;/p&gt;

&lt;h2 id=&quot;overall-impression&quot;&gt;Overall Impression&lt;/h2&gt;

&lt;p&gt;I loved EmacsConf this year. I also loved it last year. The organizers and moderators did such a great job running this conference, and it seemed to have a lot of attendees. I followed along on IRC and on Mastodon, and there was a ton of great talk happening. In addition, the Q&amp;amp;A sessions that I saw were filled with enriching conversation. I’m really looking forward to next year. Maybe I’ll find something on which to present!&lt;/p&gt;</content>
      </entry>
    
      <entry>
        
        <title>FOSSY 2023 was Excellent</title>
        <author>
          <name>Erik L. Arneson</name>
        </author>        
        <link href="https://arnesonium.com/2023/07/fossy-2023-retrospective" rel="alternate" type="text/html" title="FOSSY 2023 was Excellent" />
        <updated>2023-07-18T00:00:00+00:00</updated>
        <id>https://arnesonium.com/2023/07/fossy-retrospective</id>
          <category term="open-source" />
        
          <category term="programming" />
        
          <category term="conference" />
        
          <category term="devops" />
        
          <category term="kubernetes" />
        
          <category term="containers" />
        
          <category term="artificial-intelligence" />
        
          <category term="machine-learning" />
        
          <category term="writing" />
        <content type="html" xml:base="https://arnesonium.com/2023/07/fossy-2023-retrospective">&lt;p&gt;This past weekend, I had the pleasure of attending the inaugural &lt;a href=&quot;https://2023.fossy.us/&quot;&gt;FOSSY conference&lt;/a&gt; in my home town of Portland, Oregon. FOSSY focuses on free and open source software, and included tracks on community, containers, compliance, diversity, gaming, and education. I got a chance to connect with friends &lt;em&gt;and&lt;/em&gt; make new friends. It was an excellent event, and in this post I’ll just focus on some highlights.&lt;/p&gt;

&lt;!--more--&gt;

&lt;h2 id=&quot;writing-and-machine-learning&quot;&gt;Writing and Machine Learning&lt;/h2&gt;

&lt;p&gt;Software developers may get a lot of attention in FOSS spaces, but a lot of different types of contributions are required to create a successful open source project. The most significant contributions I’ve made to a large open source project have been &lt;a href=&quot;https://www.kubernetes.dev/blog/2020/09/28/contributing-to-the-development-guide/&quot;&gt;writing for Kubernetes&lt;/a&gt;. Projects also need community leaders, software architects, web designers, publicity and marketing experts, and quality assurance technicians. There is plenty of space for additional contributions in almost every open source project.&lt;/p&gt;

&lt;p&gt;FOSSY had some excellent sessions on writing, both from the point of view of a contributor to open source projects, and in examining how various open source projects can help the writer. &lt;a href=&quot;https://derwen.ai/paco&quot;&gt;Paco Nathan&lt;/a&gt; gave a very informative talk about &lt;a href=&quot;https://derwen.ai/s/rhvg&quot;&gt;language tools available for creators&lt;/a&gt;, focusing on machine learning, graph technology, and natural language processing. I also really enjoyed Kyle Davis’s talk on writing for open source projects. He discussed issues of style guides, adjusting your writing voice, and differentiating between marketing copy and open source writing.&lt;/p&gt;

&lt;h2 id=&quot;containers-containers-containers&quot;&gt;Containers, Containers, Containers&lt;/h2&gt;

&lt;p&gt;The Container Days track was deeply technical and educational. I didn’t get to attend as much of this track as I would have liked, because there was too much to focus on across the conference. However, I did manage to catch &lt;a href=&quot;https://berkus.org/&quot;&gt;Josh Berkus’s&lt;/a&gt; excellent talk, “The Cloud Native Burrito.” In it, Josh explained the composition of a fully cloud-native application using a delicious metaphor. Kubernetes is the tortilla of your application, while other essential components such as your container runtime and virtual network are the rice and beans. The metaphor went on—and yes, it was before lunch—until eventually though your stomach rumbled, Kubernetes made more sense.&lt;/p&gt;

&lt;p&gt;There was also a talk on &lt;a href=&quot;https://containers.dev/&quot;&gt;Development Containers&lt;/a&gt; that I really wanted to attend, but there was just too much!&lt;/p&gt;

&lt;h2 id=&quot;open-source-philosophy&quot;&gt;Open Source Philosophy&lt;/h2&gt;

&lt;p&gt;The most thought-provoking talk I attended was “FOSS in World Affairs” by &lt;a href=&quot;https://mastodon.social/@delib&quot;&gt;Delib&lt;/a&gt;. This talk deconstructed the philosophy of open source until it could be applied more broadly to larger social issues such as abuses of capitalism and the breakdown of social contracts. It generated a ton of discussion, including talk about how a corporation could be completely open-sourced, in a way that would welcome both collaboration and competition. I came away from this talk with a lot to think about.&lt;/p&gt;

&lt;p&gt;I also attended a talk by Keith Bergelt on mitigating patent risks in open source projects. He introduced me to the &lt;a href=&quot;https://openinventionnetwork.com/&quot;&gt;Open Invention Network&lt;/a&gt;, which I feel I should have known about before. This organization seeks to cushion large open source projects from patent litigation through various means such as building a “patent non-aggression community”. Bergelt was careful to point out that there are plenty of companies out there who seek to stall open source by leveraging patents.&lt;/p&gt;

&lt;h2 id=&quot;conclusion-do-it-again&quot;&gt;Conclusion: Do it Again&lt;/h2&gt;

&lt;p&gt;FOSSY was great. I hadn’t attended an open source conference in years, and it was really enjoyable to be around so many like-minded nerds. I hope they do it again next year! I’ll endeavor to attend again.&lt;/p&gt;</content>
      </entry>
    
      <entry>
        
        <title>Update: Org to DOCX with Citations</title>
        <author>
          <name>Erik L. Arneson</name>
        </author>        
        <link href="https://arnesonium.com/2023/06/org-to-docx-with-citations" rel="alternate" type="text/html" title="Update: Org to DOCX with Citations" />
        <updated>2023-06-20T00:00:00+00:00</updated>
        <id>https://arnesonium.com/2023/06/org-docx-citations</id>
          <category term="org-mode" />
        
          <category term="pandoc" />
        
          <category term="emacs" />
        
          <category term="writing" />
        <content type="html" xml:base="https://arnesonium.com/2023/06/org-to-docx-with-citations">&lt;p&gt;Last year, I wrote about &lt;a href=&quot;/2022/10/org-mode-to-docx-pipeline&quot;&gt;converting Org to DOCX with pandoc&lt;/a&gt;. Well, that particular method has needed some improvements. I needed to also support converting Markdown files, and more vitally, I needed to support the new-ish &lt;a href=&quot;https://orgmode.org/manual/Citation-handling.html&quot;&gt;org-cite citation format&lt;/a&gt;.&lt;/p&gt;

&lt;!--more--&gt;

&lt;p&gt;The first thing I did was update to the &lt;a href=&quot;https://pandoc.org/installing.html&quot;&gt;latest version of Pandoc&lt;/a&gt;. Next, I had to learn how &lt;a href=&quot;https://pandoc.org/MANUAL.html#citations&quot;&gt;Pandoc’s citations&lt;/a&gt; work. Note that you have to enable the &lt;a href=&quot;https://pandoc.org/MANUAL.html#org-citations&quot;&gt;citations extension&lt;/a&gt; as well.&lt;/p&gt;

&lt;p&gt;For citations to work, you need to have a &lt;a href=&quot;https://docs.citationstyles.org/en/stable/specification.html&quot;&gt;Citation Style Language&lt;/a&gt; (CSL) file. Zotero comes with a ton of them, so check your Zotero installation for examples.&lt;/p&gt;

&lt;p&gt;In the updated fish shell function below, you will want to update both &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;refdoc&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;csldoc&lt;/code&gt; to point to your reference DOCX file and your CSL file, respectively.&lt;/p&gt;

&lt;pre&gt;&lt;code class=&quot;language-fish&quot;&gt;function org2docx --description &apos;Generate a DOCX file using a custom reference document&apos;
    set -l refdoc &quot;$PATH_TO_REFERENCE_DOCX&quot;
    set -l csldoc &quot;$PATH_TO_CSL&quot;
    set -l fromfmt (string match -r &apos;(?:org|md)$&apos; $argv)
    set -l base (basename -s .$fromfmt $argv)

    echo Generating $base.docx ...

    pandoc --from &quot;$fromfmt&quot;+citations \
        --citeproc --csl $csldoc \
        --reference-doc $refdoc -o $base.docx $argv
end
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;And there you have it! Now you can convert both Org files and Markdown files to DOCX. And I am sorry that you have to use DOCX!&lt;/p&gt;</content>
      </entry>
    
      <entry>
        
        <title>Writing and Reviewing Jupyter Notebooks</title>
        <author>
          <name>Erik L. Arneson</name>
        </author>        
        <link href="https://arnesonium.com/2023/05/reviewing-jupyter-process" rel="alternate" type="text/html" title="Writing and Reviewing Jupyter Notebooks" />
        <updated>2023-05-18T00:00:00+00:00</updated>
        <id>https://arnesonium.com/2023/05/reviewing-jupyter-process</id>
          <category term="jupyter" />
        
          <category term="writing" />
        
          <category term="emacs" />
        
          <category term="pandoc" />
        <content type="html" xml:base="https://arnesonium.com/2023/05/reviewing-jupyter-process">&lt;p&gt;A recent project involves delivering a finished product as a collection of &lt;a href=&quot;https://jupyter.org/&quot;&gt;Jupyter Notebooks&lt;/a&gt;. This process involves using Emacs for writing, Git for version control, and a slightly tricky process for enabling non-Jupyter, non-Emacs users to perform document review.&lt;/p&gt;

&lt;!--more--&gt;

&lt;p&gt;Writing—just like programming—ideally includes a review process before anything is delivered to the client. Even first drafts need at least two readers before delivery. I’ve previously discussed how &lt;a href=&quot;https://arnesonium.com/2022/10/org-mode-to-docx-pipeline&quot;&gt;I use Org Mode and Pandoc to deliver DOCX files&lt;/a&gt;, and DOCX or ODF files unfortunately remain the easiest way to track changes and edits among word processor users.&lt;/p&gt;

&lt;p&gt;Since Jupyter Notebooks are basically JSON documents, the best way to keep track of changes and revisions is using some kind of version control. &lt;a href=&quot;https://towardsdatascience.com/how-to-use-git-github-with-jupyter-notebook-7144d6577b44&quot;&gt;Here is one process using Git and GitHub.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When my notebook files are ready for review, converting them to DOCX files is pretty straightforward.&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;First, I use the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;jupyter&lt;/code&gt; command line tool to convert to Markdown, like this:&lt;/p&gt;

    &lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;jupyter nbconvert --to markdown *.ipynb
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;    &lt;/div&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Next, I use &lt;a href=&quot;https://pandoc.org/&quot;&gt;Pandoc&lt;/a&gt; to convert to DOCX using a reference link.&lt;/p&gt;

    &lt;pre&gt;&lt;code class=&quot;language-fish&quot;&gt;for file in *.md
    pandoc --reference-doc $path_to_refdoc -o $file.docx $file
end
&lt;/code&gt;&lt;/pre&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id=&quot;renaming-files-with-dired&quot;&gt;Renaming files with Dired&lt;/h2&gt;

&lt;p&gt;At this point, I needed to rename all of the DOCX files and move them to the proper shared folder, so my reviewer could get to them and know what’s going on. We have a &lt;a href=&quot;https://www.computerworld.com/article/2833158/4-rules-for-naming-your-files.html&quot;&gt;naming format for filenames&lt;/a&gt; that helps us track project and versions, so all of the files needed to have at least a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;v1&lt;/code&gt; in them.&lt;/p&gt;

&lt;p&gt;Emacs has a file manager called Dired, which contains powerful features that allow you to modify directory contents just like any other buffer. I now had a bunch of files that ended in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.md.docx&lt;/code&gt; that needed to instead end in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;-v1.docx&lt;/code&gt;. Here is the process I used to easily rename them.&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;In Emacs, use &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;M-x dired&lt;/code&gt; to open the directory.&lt;/li&gt;
  &lt;li&gt;Use &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;C-x C-q&lt;/code&gt; to run &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;dired-toggle-read-only&lt;/code&gt;.&lt;/li&gt;
  &lt;li&gt;Use &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;M-%&lt;/code&gt; to run &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;query-replace&lt;/code&gt;, and replace &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.md.docx&lt;/code&gt; with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;-v1.docx&lt;/code&gt;.&lt;/li&gt;
  &lt;li&gt;Finish “writing” the directory with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;C-c C-c&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;All done! It was nice and simple. The DOCX files were finally properly named and ready for review.&lt;/p&gt;</content>
      </entry>
    
      <entry>
        
        <title>An Org-mode to DOCX Pipeline</title>
        <author>
          <name>Erik L. Arneson</name>
        </author>        
        <link href="https://arnesonium.com/2022/10/org-mode-to-docx-pipeline" rel="alternate" type="text/html" title="An Org-mode to DOCX Pipeline" />
        <updated>2022-10-26T00:00:00+00:00</updated>
        <id>https://arnesonium.com/2022/10/org-to-docx</id>
          <category term="org-mode" />
        
          <category term="pandoc" />
        
          <category term="emacs" />
        
          <category term="writing" />
        <content type="html" xml:base="https://arnesonium.com/2022/10/org-mode-to-docx-pipeline">&lt;p&gt;Freelance writers need to deliver documents in the format requested by clients. However, frequently
the requested format is not the writer’s preferred working format. I like to write in Org Mode, but
many clients prefer delivery in Microsoft Word’s DOCX format.&lt;/p&gt;

&lt;p&gt;This is how I generate DOCX files for my clients.
&lt;!--more--&gt;&lt;/p&gt;

&lt;h2 id=&quot;what-is-org-mode&quot;&gt;What is Org Mode?&lt;/h2&gt;

&lt;p&gt;&lt;a href=&quot;https://orgmode.org/&quot;&gt;Org Mode&lt;/a&gt; is an Emacs package for writing and working with Org files. Org
files are highly structured plain text files that may appear to be a text outline, but can do so
much more. Org Mode is incredibly versatile, and can be used to track projects, manage schedules,
write outlines, and even create documents.&lt;/p&gt;

&lt;h2 id=&quot;choosing-between-org-export-and-pandoc&quot;&gt;Choosing between Org Export and Pandoc&lt;/h2&gt;

&lt;p&gt;Org Export runs inside Emacs and is capable of converting Org files to &lt;a href=&quot;https://orgmode.org/guide/Exporting.html&quot;&gt;a variety of other
formats&lt;/a&gt;. While it is very powerful, it also has its
idiosyncrasies. For instance, when converting Org files to DOCX files, it uses its own style names
such as “Org Title” and “Org Heading 1”.&lt;/p&gt;

&lt;p&gt;A second option for converting Org files to DOCX files is &lt;a href=&quot;https://pandoc.org/&quot;&gt;Pandoc&lt;/a&gt;. Pandoc
prides itself on being the Swiss army knife of document format conversion. It handles an impressive
variety of document formats and handles a dizzying collection of configuration options.&lt;/p&gt;

&lt;p&gt;Since the DOCX files that I create need to be shared with other writers, editors, and reviewers, I
need to make sure that they are easy to work with. This influenced my decision. Since Pandoc uses
more &lt;a href=&quot;https://pandoc.org/MANUAL.html#option--reference-doc&quot;&gt;standard style names&lt;/a&gt;, I decided to use
it for Org conversion.&lt;/p&gt;

&lt;h2 id=&quot;setting-up-pandoc&quot;&gt;Setting up Pandoc&lt;/h2&gt;

&lt;p&gt;To use Pandoc to generate nice looking DOCX files, you will need to configure a template
document. The recommended method for doing this is to generate a default template using Pandoc, and
then edit it in Word. I used &lt;a href=&quot;https://www.libreoffice.org/&quot;&gt;LibreOffice Writer&lt;/a&gt; for this, and it
worked just fine.&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Install the latest Pandoc &lt;a href=&quot;https://pandoc.org/installing.html&quot;&gt;using these instructions&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;Run the following command to generate &lt;strong&gt;reference.docx&lt;/strong&gt;
    &lt;div class=&quot;language-shell highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;pandoc &lt;span class=&quot;nt&quot;&gt;-o&lt;/span&gt; custom-reference.docx &lt;span class=&quot;nt&quot;&gt;--print-default-data-file&lt;/span&gt; reference.docx
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;    &lt;/div&gt;
  &lt;/li&gt;
  &lt;li&gt;Open &lt;strong&gt;reference.docx&lt;/strong&gt; in your word processor and edit the styles so they meet your needs.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id=&quot;converting-from-org-to-docx&quot;&gt;Converting from Org to DOCX&lt;/h2&gt;

&lt;p&gt;One option for running the conversion is to take advantage of the
&lt;a href=&quot;https://github.com/emacsorphanage/ox-pandoc&quot;&gt;ox-pandoc&lt;/a&gt; package for Emacs. If you will always be
using the same configuration for your exports, this is a great option.&lt;/p&gt;

&lt;p&gt;However, I need to use a number of different configurations for converting documents, so I tend to
run Pandoc from the command line. Recent versions of ox-pandoc support &lt;a href=&quot;https://github.com/emacsorphanage/ox-pandoc#passing-options-to-pandoc&quot;&gt;passing options via Org
headers&lt;/a&gt;, but I still haven’t
bothered to set that up. It should be very easy to template this using 
&lt;a href=&quot;/2022/09/yasnippet-emacs-writing&quot;&gt;Yasnippet&lt;/a&gt;, though.&lt;/p&gt;

&lt;p&gt;I use a custom &lt;a href=&quot;https://fishshell.com/&quot;&gt;fish shell&lt;/a&gt; function that looks like this:&lt;/p&gt;

&lt;pre&gt;&lt;code class=&quot;language-fish&quot;&gt;function org2docx --description &apos;Generate a DOCX file using a custom reference document&apos;
    set -l refdoc &quot;$PATH_TO_REFERENCE_DOCX&quot;
    set -l base (basename -s .org $argv)
    echo Generating $base.docx ...
    pandoc --reference-doc $refdoc -o $base.docx $argv
end
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;From my fish shell command line, I can then just run &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;org2docx whatever.org&lt;/code&gt; to generate
&lt;strong&gt;whatever.docx&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I have not found a level of automation that makes my converted DOCX files completely perfect,
unfortunately. After conversion, I always open the new file in my word processor to make final
tweaks and fixes.&lt;/p&gt;

&lt;h2 id=&quot;have-fun-converting-files&quot;&gt;Have fun converting files!&lt;/h2&gt;

&lt;p&gt;The method I’ve outline in this blog post is straightforward and fits my needs. There are definitely
improvements to be made, such as using templates to pass the proper options to Pandoc. Switching to
ox-pandoc would mean one fewer reason to leave Emacs, after all.&lt;/p&gt;

&lt;p&gt;In recent years, more and more clients are asking for files to be delivered via Google Docs. So far,
I have yet to find a good conversion pipeline to get Org files into Google Docs easily. My method
right now takes too many manual steps. That’s a problem I would love to solve.&lt;/p&gt;

&lt;p&gt;Do you have a conversion pipeline for documents that works for you? Leave me a comment and let me
know!&lt;/p&gt;</content>
      </entry>
    
      <entry>
        
        <title>Yasnippet and Emacs for Writing</title>
        <author>
          <name>Erik L. Arneson</name>
        </author>        
        <link href="https://arnesonium.com/2022/09/yasnippet-emacs-writing" rel="alternate" type="text/html" title="Yasnippet and Emacs for Writing" />
        <updated>2022-09-28T00:00:00+00:00</updated>
        <id>https://arnesonium.com/2022/09/yasnippet-emacs-writing</id>
          <category term="emacs" />
        
          <category term="writing" />
        
          <category term="lisp" />
        
          <category term="org-mode" />
        
          <category term="markdown" />
        
          <category term="podcast" />
        <content type="html" xml:base="https://arnesonium.com/2022/09/yasnippet-emacs-writing">&lt;p&gt;As a &lt;a href=&quot;/writing/&quot;&gt;freelance writer&lt;/a&gt;, I need to be ready to deliver high quality copy in a timely fashion. My editor of choice for writing is
Emacs. I have found that &lt;a href=&quot;https://github.com/joaotavora/yasnippet&quot;&gt;Yasnippet&lt;/a&gt; templates have streamlined my writing process.
&lt;!--more--&gt;&lt;/p&gt;

&lt;ul id=&quot;markdown-toc&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;#what-is-yasnippet&quot; id=&quot;markdown-toc-what-is-yasnippet&quot;&gt;What is Yasnippet?&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#installing-yasnippet&quot; id=&quot;markdown-toc-installing-yasnippet&quot;&gt;Installing Yasnippet&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#markdown-and-jekyll&quot; id=&quot;markdown-toc-markdown-and-jekyll&quot;&gt;Markdown and Jekyll&lt;/a&gt;    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;#bonus-snippets&quot; id=&quot;markdown-toc-bonus-snippets&quot;&gt;Bonus Snippets&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#org-mode-templates&quot; id=&quot;markdown-toc-org-mode-templates&quot;&gt;Org Mode Templates&lt;/a&gt;    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;#org2blog-and-podcast-show-notes&quot; id=&quot;markdown-toc-org2blog-and-podcast-show-notes&quot;&gt;org2blog and Podcast Show Notes&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#more-bonus-snippets&quot; id=&quot;markdown-toc-more-bonus-snippets&quot;&gt;More Bonus Snippets&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#writing-faster-is-writing-smarter&quot; id=&quot;markdown-toc-writing-faster-is-writing-smarter&quot;&gt;Writing Faster is Writing Smarter&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;what-is-yasnippet&quot;&gt;What is Yasnippet?&lt;/h2&gt;

&lt;p&gt;As a templating system for Emacs, Yasnippet is well known by programmers. It can quickly expand
function definitions, control structures, and other templates into blocks of source code. Source code is just text.&lt;/p&gt;

&lt;p&gt;Since most of my writing originates in text format, templates are great for speeding up document
creation and avoiding common errors and omissions.&lt;/p&gt;

&lt;h2 id=&quot;installing-yasnippet&quot;&gt;Installing Yasnippet&lt;/h2&gt;

&lt;p&gt;With &lt;a href=&quot;https://github.com/jwiegley/use-package&quot;&gt;use-package&lt;/a&gt;, you can get started quickly with Yasnippet by including the following in your
Emacs init file.&lt;/p&gt;

&lt;div class=&quot;language-elisp highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;use-package&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;yasnippet&lt;/span&gt;
  &lt;span class=&quot;ss&quot;&gt;:ensure&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;t&lt;/span&gt;
  &lt;span class=&quot;ss&quot;&gt;:config&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;yas-global-mode&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt;

&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;use-package&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;yasnippet-snippets&lt;/span&gt;
  &lt;span class=&quot;ss&quot;&gt;:ensure&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;t&lt;/span&gt;
  &lt;span class=&quot;ss&quot;&gt;:after&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;yasnippet&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;For more detailed installation instructions, &lt;a href=&quot;https://joaotavora.github.io/yasnippet/&quot;&gt;check the Yasnippet documentation&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&quot;markdown-and-jekyll&quot;&gt;Markdown and Jekyll&lt;/h2&gt;

&lt;p&gt;This blog is primarily written in Markdown for Jekyll, which means that each file needs a YAML block at the top with specific
information. I have a template that looks like this:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;# -*- mode: snippet -*-
# name: blogtop
# key: blogtop
# --
---
title: ${1:Title}
author: &quot;Erik L. Arneson&quot;
layout: post
permalink: `(format-time-string &quot;/%Y/%m/&quot;)`$2
comments: ${3:$$(yas-choose-value &apos;(&quot;true&quot; &quot;false&quot;))}
tags:
    - $4
---

$0
&amp;lt;!--more--&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Not only does this template save me from needing to remember the format of the YAML block, but it ensures that frequently forgetten items
are included, such as the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;permalink&lt;/code&gt; setting and the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;!--more--&amp;gt;&lt;/code&gt; tag.&lt;/p&gt;

&lt;h3 id=&quot;bonus-snippets&quot;&gt;Bonus Snippets&lt;/h3&gt;

&lt;p&gt;The &lt;a href=&quot;https://github.com/AndreaCrotti/yasnippet-snippets&quot;&gt;official snippet collection&lt;/a&gt; contains a bunch of extra Markdown templates. 
&lt;a href=&quot;https://github.com/AndreaCrotti/yasnippet-snippets/tree/master/snippets/markdown-mode&quot;&gt;Check them out here.&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;org-mode-templates&quot;&gt;Org Mode Templates&lt;/h2&gt;

&lt;p&gt;My &lt;a href=&quot;https://orgmode.org/&quot;&gt;Org Mode&lt;/a&gt; files are more complex. Many writing clients expect deliveries in Microsoft Word files, but
I also frequently find myself needing to produce OpenDocument files, HTML, and even Markdown. The headers for these files need to support
all of these options.&lt;/p&gt;

&lt;p&gt;I use the following template to support all of the Org Mode configuration and options I require.&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;# -*- mode: snippet -*-
# name: header
# key: header
# --
#+TITLE: $1
#+LANGUAGE: ${2:en}
#+AUTHOR: ${3:$$(yas/choose-value &apos;(&quot;Erik L. Arneson&quot; &quot;Some Other Name&quot;))}
#+EMAIL: ${4:$$(yas/choose-value &apos;(&quot;list-of-email-addresses&quot;))}${5:
#+DESCRIPTION: $6}${7:
#+KEYWORDS: $8}
#+OPTIONS: num:nil toc:nil
#+ODT_STYLES_FILE: ${9:$$(yas/choose-value &apos;(&quot;list-of-template-files&quot;))}
#+bibliography: /path/to/MyLibrary.bib
#+cite_export: csl ${10:$$(yas/choose-value &apos;(&quot;chicago-fullnote-bibliography.csl&quot; &quot;modern-language-association.csl&quot; &quot;apa.csl&quot;))}
#+WWG: ${11:$$(yas/choose-value &apos;(&quot;0&quot; &quot;250&quot; &quot;500&quot; &quot;1000&quot;))}

$0
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;org2blog-and-podcast-show-notes&quot;&gt;org2blog and Podcast Show Notes&lt;/h3&gt;

&lt;p&gt;I also use Org Mode to publish to WordPress websites using &lt;a href=&quot;https://github.com/org2blog/org2blog&quot;&gt;org2blog&lt;/a&gt;. For one of these websites, I
write show notes for podcast episodes. I use a template that looks like this.&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;# -*- mode: snippet -*-
# name: podcast
# key: podcast
# --
* $1
  :PROPERTIES:
  :POST_TAGS: $2
  :BLOG:      arnemancy
  :CATEGORY:  Podcast
  :POST_DATE: `(format-time-string &quot;[%Y-%m-%d %a %H:%M]&quot; nil nil)`
  :END:

$0

** Links

** Credits

#+begin_export html
Support me on Patreon: &amp;lt;a rel=&quot;payment&quot; href=&quot;https://www.patreon.com/arnemancy&quot;&amp;gt;https://www.patreon.com/arnemancy&amp;lt;/a&amp;gt;&amp;lt;br&amp;gt;
#+end_export
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;This template reminds me of important items I need to include in all show notes, like links, credits, and a Patreon link.&lt;/p&gt;

&lt;h3 id=&quot;more-bonus-snippets&quot;&gt;More Bonus Snippets&lt;/h3&gt;

&lt;p&gt;The official snippet collection also contains a bunch of Org Mode snippets. &lt;a href=&quot;https://github.com/AndreaCrotti/yasnippet-snippets/tree/master/snippets/org-mode&quot;&gt;Here is the whole
list.&lt;/a&gt; Since Org Mode contains so many complicated
structures like source blocks and optional keywords, these are great time savers. There are also snippets for supporting
&lt;a href=&quot;https://github.com/yjwen/org-reveal&quot;&gt;org-reveal&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&quot;writing-faster-is-writing-smarter&quot;&gt;Writing Faster is Writing Smarter&lt;/h2&gt;

&lt;p&gt;Don’t let your tools get in the way of your writing. Frequently, Emacs is portrayed as cumbersome and filled with obscure keybindings and
weird commands. However, I have found that it is an excellent tool for writing. Yasnippet templates let me get started on new documents
quickly without fretting over different syntaxes for configuration.&lt;/p&gt;

&lt;p&gt;And Yasnippet is just one of the tools I use when writing with Emacs. I will discuss more of these tools in the future.&lt;/p&gt;</content>
      </entry>
    
      <entry>
        
        <title>Slides on a Stick with Raspberry Pi Zero W</title>
        <author>
          <name>Erik L. Arneson</name>
        </author>        
        <link href="https://arnesonium.com/2017/10/slides-on-a-stick-with-raspberry-pi-zero-w/" rel="alternate" type="text/html" title="Slides on a Stick with Raspberry Pi Zero W" />
        <updated>2017-10-15T19:38:19+00:00</updated>
        <id>https://arnesonium.com/2017/10/slides-on-a-stick-with-raspberry-pi-zero-w</id>
          <category term="best-practices" />
        
          <category term="public-speaking" />
        
          <category term="raspberry-pi" />
        
          <category term="tutorial" />
        
          <category term="writing" />
        <content type="html" xml:base="https://arnesonium.com/2017/10/slides-on-a-stick-with-raspberry-pi-zero-w/">&lt;p&gt;If you give presentations often, you will know that one of the biggest headaches is managing slides. You have to figure out software, hardware, and connectors. I’ve usually resorted to bringing a USB thumb drive with my slides in PDF and ODP format, but then I came across an even better idea: the Raspberry Pi Zero W (or RPi0W).
&lt;!--more--&gt;&lt;/p&gt;

&lt;p&gt;Previously, I had been playing with using &lt;a href=&quot;https://arnesonium.com/2017/04/raspberry-pi-gpio-with-erlang/&quot;&gt;Erlang on the RPi0W to control stepper motors&lt;/a&gt;, but this seemed more useful. Follow along to see how I created a portable presentation machine that’s about the size of a pack of gum.&lt;/p&gt;

&lt;h2 id=&quot;hardware-used&quot;&gt;Hardware Used&lt;/h2&gt;

&lt;iframe style=&quot;width:120px;height:240px;float:right;&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; scrolling=&quot;no&quot; frameborder=&quot;0&quot; src=&quot;//ws-na.amazon-adsystem.com/widgets/q?ServiceVersion=20070822&amp;amp;OneJS=1&amp;amp;Operation=GetAdHtml&amp;amp;MarketPlace=US&amp;amp;source=ss&amp;amp;ref=as_ss_li_til&amp;amp;ad_type=product_link&amp;amp;tracking_id=aarggaminggroup&amp;amp;marketplace=amazon&amp;amp;region=US&amp;amp;placement=B01HG8DB5E&amp;amp;asins=B01HG8DB5E&amp;amp;linkId=5a34d4956347681153b14f52f9ee75a1&amp;amp;show_border=true&amp;amp;link_opens_in_new_window=true&quot;&gt;&lt;/iframe&gt;
&lt;p&gt;I purchased the RPi0W as part of a kit so it would have a nice case and all of the connectors I needed. I also wanted a good way to control it, so I found an inexpensive mini wireless keyboard and mouse on Amazon. You can follow my example or find your own alternatives.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.adafruit.com/product/3410&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;Raspberry Pi Zero W Budget Pack from Adafruit&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://amzn.to/2yq8A3E&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;Aerb 2.4GHz Mini Wireless Keyboard with Mouse Touchpad&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;installing-and-configuring-software&quot;&gt;Installing and Configuring Software&lt;/h2&gt;

&lt;p&gt;I’m not the first person to think of using a Raspberry Pi for slides and presentations. Rob Reilly wrote a &lt;a href=&quot;http://www.raspberry-pi-geek.com/Archive/2014/06/Equip-your-Pi-for-slide-and-video-presentations&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;great article on this topic for Raspberry Pi Geek&lt;/a&gt; which provides some great tips and recommendations. However, I wanted to create a presentation machine that was even faster and more portable.&lt;/p&gt;

&lt;p&gt;I used &lt;a href=&quot;https://www.raspberrypi.org/downloads/raspbian/&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;Raspbian Stretch with Desktop&lt;/a&gt;, but knew that I would run into memory and performance issues on the RPi0W. It only has 512MB of RAM, so I would need to use small, efficient applications and cut out unnecessary services and applications on the device. It’s really important that the machine boots up fast and gets running quickly.&lt;/p&gt;

&lt;p&gt;Quickly I gave up on the idea of running LibreOffice Impress. Instead, I would use a lightweight full-screen PDF viewer. I tested out a number of the smaller PDF readers available on Raspbian before finally settling on &lt;a href=&quot;https://naihe2010.github.io/apvlv/&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;apvlv&lt;/a&gt;. This reader is tiny, fast, and configurable. It also requires some additional setup.&lt;/p&gt;

&lt;p&gt;Install apvlv on your system with the following commands.&lt;/p&gt;

&lt;pre lang=&quot;bash&quot; line=&quot;1&quot;&gt;
sudo apt update &amp;amp;&amp;amp; sudo apt upgrade -y
sudo apt install -y apvlv
&lt;/pre&gt;

&lt;p&gt;These commands might take a while. When you are done, edit the apvlv preferences file. You will probably do this using the command &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;nano ~/.apvlvrc&lt;/code&gt; but you might want a different text editor. Edit to look like this.&lt;/p&gt;

&lt;pre lang=&quot;ini&quot; line=&quot;1&quot;&gt;
set fullscreen = yes
set zoom = fitwidth
set continuous = no
set scrollbar = no
set content = no
&lt;/pre&gt;

&lt;h2 id=&quot;displaying-slides&quot;&gt;Displaying Slides&lt;/h2&gt;

&lt;p&gt;You will need to get your PDF slides onto the RPi0W. I usually use a webpage to download them, or copy them over via &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;scp&lt;/code&gt;. Do whatever feels best to you.&lt;/p&gt;

&lt;p&gt;Simply use the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;apvlv&lt;/code&gt; command from a terminal or the menu to load your PDF file. The interface is a little arcane, but easy to get the hang of. You can use the up and down arrows on the mini keyboard to go forward and backward one slide. To exit, hit &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;q&lt;/code&gt; and to go to a specific slide type &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;:go &amp;lt;number&amp;gt;&lt;/code&gt; and replace “&amp;lt;number&amp;gt;” with the slide number.&lt;/p&gt;

&lt;p&gt;The RPi0W still takes a little while to boot, but you now have an extremely portable device that plugs into any HDMI screen or projector and displays your slides with as little fuss as possible!&lt;/p&gt;</content>
      </entry>
    
      <entry>
        
        <title>CenturyLink AppFog Tutorial</title>
        <author>
          <name>Erik L. Arneson</name>
        </author>        
        <link href="https://arnesonium.com/2016/01/centurylink-appfog-tutorial/" rel="alternate" type="text/html" title="CenturyLink AppFog Tutorial" />
        <updated>2016-01-15T17:26:41+00:00</updated>
        <id>https://arnesonium.com/2016/01/centurylink-appfog-tutorial</id>
          <category term="appfog" />
        
          <category term="centurylink-cloud" />
        
          <category term="cloud-computing" />
        
          <category term="cloudfoundry" />
        
          <category term="javascript" />
        
          <category term="node-js" />
        
          <category term="programming" />
        
          <category term="web-development" />
        
          <category term="writing" />
        <content type="html" xml:base="https://arnesonium.com/2016/01/centurylink-appfog-tutorial/">&lt;p&gt;Recently I wrote a tutorial with &lt;a href=&quot;http://wordlions.com/&quot; target=&quot;_blank&quot;&gt;Word Lions&lt;/a&gt; for &lt;a href=&quot;http://ctl.io/&quot; target=&quot;_blank&quot;&gt;CenturyLink Cloud&lt;/a&gt; that teaches how to build and deploy a Node.js application to CenturyLink AppFog. The tutorial and application were really fun to build and write. It was my first Node.js project, and my first experience with CloudFoundry. The tutorial uses the following CenturyLink Cloud products:
&lt;!--more--&gt;&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;&lt;a href=&quot;https://www.ctl.io/appfog/&quot;&gt;AppFog&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;https://www.ctl.io/orchestrate/&quot;&gt;Orchestrate&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;https://www.ctl.io/object-storage/&quot;&gt;Object Storage&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;AppFog is CenturyLink Cloud’s CloudFoundry system. It is really powerful, and it appears to be more flexible than &lt;a href=&quot;https://arnesonium.com/tag/google-cloud/&quot;&gt;Google App Engine&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;Read the Tutorial&lt;/h2&gt;

&lt;p&gt;The tutorial walks you through building a document storage system with a built-in PDF reader and comment storage. It also includes user authentication and some other neat Node.js tricks. You can follow the tutorial from the following links, which will include all of the information needed to get you up and running on AppFog with Node.js. Enjoy!&lt;/p&gt;

&lt;ol&gt;
	&lt;li&gt;&lt;a href=&quot;https://www.ctl.io/developers/blog/post/deploy-app-user-login&quot;&gt;Deploy an App With User Login&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;https://www.ctl.io/developers/blog/post/appfog-object-storage&quot;&gt;Using CenturyLink Cloud for Object Storage&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;https://www.ctl.io/developers/blog/post/search-document-metadata&quot;&gt;Add Search Capabilities with Orchestrate&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;https://www.ctl.io/developers/blog/post/document-review-comment&quot;&gt;Building a PDF Viewer and Comment System&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;</content>
      </entry>
    
      <entry>
        
        <title>Now Working with CommerceCollective!</title>
        <author>
          <name>Erik L. Arneson</name>
        </author>        
        <link href="https://arnesonium.com/2015/05/now-working-with-commercecollective/" rel="alternate" type="text/html" title="Now Working with CommerceCollective!" />
        <updated>2015-05-26T15:02:27+00:00</updated>
        <id>https://arnesonium.com/2015/05/now-working-with-commercecollective</id>
          <category term="announcement" />
        
          <category term="commercecollective" />
        
          <category term="portland" />
        
          <category term="web-design" />
        
          <category term="web-development" />
        
          <category term="writing" />
        <content type="html" xml:base="https://arnesonium.com/2015/05/now-working-with-commercecollective/">&lt;p&gt;I am now working with my good friends at &lt;a href=&quot;http://www.commercecollective.com/&quot; target=&quot;_blank&quot;&gt;CommerceCollective&lt;/a&gt;! CommerceCollective is a web presence management company located here in Portland, Oregon, and they are great at SEO and social media stuff. They also are really talented web designers. If you’re looking for a full website solution, from design down to the nuts and bolts, we are the place to go.&lt;/p&gt;

&lt;p&gt;I’ll be supplementing their services with full-stack web development, IT consulting, and a little bit of copy writing. &lt;a href=&quot;http://www.commercecollective.com/who-we-are/&quot; target=&quot;_blank&quot;&gt;Read more about our team here!&lt;/a&gt;&lt;/p&gt;</content>
      </entry>
    
      <entry>
        
        <title>Successful Article: Symbolism in Masonic Rings</title>
        <author>
          <name>Erik L. Arneson</name>
        </author>        
        <link href="https://arnesonium.com/2014/11/successful-article-symbolism-in-masonic-rings/" rel="alternate" type="text/html" title="Successful Article: Symbolism in Masonic Rings" />
        <updated>2014-11-17T17:16:59+00:00</updated>
        <id>https://arnesonium.com/2014/11/successful-article-symbolism-in-masonic-rings</id>
          <category term="freemasonry" />
        
          <category term="writing" />
        <content type="html" xml:base="https://arnesonium.com/2014/11/successful-article-symbolism-in-masonic-rings/">&lt;p&gt;I just checked Google Analytics, and over the last 18 months, my online article “Symbolism in Masonic Rings” has had over 6,000 page views. That’s excellent!&lt;/p&gt;

&lt;p&gt;If you’re interested, you can &lt;a href=&quot;http://transformason.org/papers/masonic_rings.html&quot;&gt;read it on Transformason.org&lt;/a&gt;. Please excuse the website. There’s a reason I outsource web design tasks.&lt;/p&gt;</content>
      </entry>
    
</feed>
