<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Jacmoe&#39;s Cyber Soapbox</title>
    <link>https://jacmoe.uber.space/</link>
    <description>Recent content on Jacmoe&#39;s Cyber Soapbox</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <copyright>&amp;copy; 2022-2025 Jacob Moena</copyright>
    <lastBuildDate>Fri, 25 Jul 2025 00:00:00 +0000</lastBuildDate><atom:link href="https://jacmoe.uber.space/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Projects</title>
      <link>https://jacmoe.uber.space/projects/projects/</link>
      <pubDate>Sun, 10 Sep 2023 23:38:00 +0200</pubDate>
      
      <guid>https://jacmoe.uber.space/projects/projects/</guid>
      <description>&lt;p&gt;Projects&lt;/p&gt;
</description>
      
    </item>
    
    <item>
      <title>About</title>
      <link>https://jacmoe.uber.space/about/about/</link>
      <pubDate>Sun, 10 Sep 2023 01:34:00 +0200</pubDate>
      
      <guid>https://jacmoe.uber.space/about/about/</guid>
      <description>&lt;div class=&#34;postmedia&#34;&gt;
&lt;p&gt;On the other hand, we denounce with righteous indignation and dislike men who are so beguiled and demoralized by the charms of pleasure of the moment, so blinded by desire, that they cannot foresee the pain and trouble that are bound to ensue; and equal blame belongs to those who fail in their duty through weakness of will, which is the same as saying through shrinking from toil and pain.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&#34;postmedia&#34;&gt;
&lt;p&gt;On the other hand, we denounce with righteous indignation and dislike men who are so beguiled and demoralized by the charms of pleasure of the moment, so blinded by desire, that they cannot foresee the pain and trouble that are bound to ensue; and equal blame belongs to those who fail in their duty through weakness of will, which is the same as saying through shrinking from toil and pain.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&#34;postmedia&#34;&gt;
&lt;p&gt;On the other hand, we denounce with righteous indignation and dislike men who are so beguiled and demoralized by the charms of pleasure of the moment, so blinded by desire, that they cannot foresee the pain and trouble that are bound to ensue; and equal blame belongs to those who fail in their duty through weakness of will, which is the same as saying through shrinking from toil and pain.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&#34;postmedia&#34;&gt;
&lt;p&gt;On the other hand, we denounce with righteous indignation and dislike men who are so beguiled and demoralized by the charms of pleasure of the moment, so blinded by desire, that they cannot foresee the pain and trouble that are bound to ensue; and equal blame belongs to those who fail in their duty through weakness of will, which is the same as saying through shrinking from toil and pain.&lt;/p&gt;
&lt;/div&gt;
</description>
      
    </item>
    
    <item>
      <title>First Entry in my new Gemini Log</title>
      <link>https://jacmoe.uber.space/posts/first_entry_in_my_new_gemini_log/</link>
      <pubDate>Fri, 17 Mar 2023 00:00:00 +0000</pubDate>
      
      <guid>https://jacmoe.uber.space/posts/first_entry_in_my_new_gemini_log/</guid>
      <description>&lt;p&gt;
The first entry of my &lt;a href=&#34;https://geminiprotocol.net&#34;&gt;Gemini&lt;/a&gt; Log (Gemlog) is up: &lt;a href=&#34;https://tilde.team/~jacmoe/gemfeed/2023-03-17-hello-universe.html&#34;&gt;2023-03-17 - Hello, Universe!&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
I am thinking that my Gemini Capsule should be a place for me to share my writing, my writer’s journal, and my musings about writing.&lt;/p&gt;
&lt;p&gt;
Much simpler to put something up on Gemini: simply write a simple text, and put it on the server.&lt;/p&gt;
&lt;p&gt;
Here’s to many more entries in the Gemlog! 🚀&lt;/p&gt;
</description>
      <media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://jacmoe.uber.space/posts/first_entry_in_my_new_gemini_log/feature-gemtext.png" />
    </item>
    
    <item>
      <title>Local Gemini Server - Quick and Dirty</title>
      <link>https://jacmoe.uber.space/posts/local_gemini_server_quick_and_dirty/</link>
      <pubDate>Tue, 14 Mar 2023 14:22:00 +0100</pubDate>
      
      <guid>https://jacmoe.uber.space/posts/local_gemini_server_quick_and_dirty/</guid>
      <description>&lt;p&gt;
If you, like me, are excited about &lt;a href=&#34;https://geminiprotocol.net&#34;&gt;Project Gemini&lt;/a&gt; and want to create your own capsule (Gemini site), you will probably wonder how you would test your capsule on your local machine before putting it out there.&lt;/p&gt;
&lt;p&gt;
This small (and dirty!) guide aims to remove that doubt.&lt;/p&gt;
&lt;p&gt;
So, without further dillydally, here goes:&lt;/p&gt;
&lt;p&gt;
Install &lt;a href=&#34;https://pypi.org/project/gmcapsule/&#34;&gt;GmCapsule&lt;/a&gt; by running the following command, assuming that Python is installed:&lt;/p&gt;
&lt;div class=&#34;src src-bash&#34;&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip install gmcapsule&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
Now, create a &lt;code&gt;.gmcapsulerc&lt;/code&gt; file in your home directory, with the following content:&lt;/p&gt;
&lt;div class=&#34;src src-bash&#34;&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;static&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;root&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; /&amp;lt;user_home&amp;gt;/gemini/capsule/&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;code&gt;&amp;lt;user_home&amp;gt;&lt;/code&gt; should obviously be replaced with your home directory.
&lt;code&gt;root&lt;/code&gt; should point to where the Gemini files are to be served from.&lt;/p&gt;
&lt;p&gt;
Notice that the server name is appended to the path above, which means that the real path to the &lt;code&gt;index.gmi&lt;/code&gt; file for the root of the site is located in &lt;code&gt;/&amp;lt;user_home&amp;gt;/gemini/capsule/localhost&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;
Now we need to create a server certificate and the corresponding key.&lt;/p&gt;
&lt;p&gt;
Create a directory called &lt;code&gt;.certs&lt;/code&gt; in your home directory, cd into it, and run the following command:&lt;/p&gt;
&lt;div class=&#34;src src-bash&#34;&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;openssl req -new -x509 -days &lt;span class=&#34;m&#34;&gt;365&lt;/span&gt; -nodes -out cert.pem -keyout key.pem -subj &lt;span class=&#34;s2&#34;&gt;&amp;#34;/CN=localhost&amp;#34;&lt;/span&gt; -newkey rsa:4096 -addext &lt;span class=&#34;s2&#34;&gt;&amp;#34;subjectAltName = DNS:localhost&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;The &lt;code&gt;.certs&lt;/code&gt; directory should now contain two files, &lt;code&gt;cert.pem&lt;/code&gt; and &lt;code&gt;key.pem&lt;/code&gt;. The GmCapsule server loads the certificate upon startup.&lt;/p&gt;
&lt;p&gt;
Now, start the server by running:&lt;/p&gt;
&lt;div class=&#34;src src-bash&#34;&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gmcapsuled&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
Use a Gemini client, like &lt;a href=&#34;https://github.com/makew0rld/amfora&#34;&gt;amfora&lt;/a&gt; to browse your local Gemini capsule:&lt;/p&gt;
&lt;div class=&#34;src src-bash&#34;&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;amfora gemini://localhost/&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
Now, enjoy creating content for Gemini!&lt;/p&gt;
&lt;p&gt;
I am excited about the whole idea of the small internet, and the syntax for the &lt;code&gt;.gmi&lt;/code&gt; files are so simple, much simpler than even Markdown. I like not having to mess around with HTML, CSS, JavaScript, fonts … Just plain text.&lt;/p&gt;
&lt;p&gt;
I will probably be writing more about Gemini in the future 🙂&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;PS: you might have to open port 1965 if you are running a firewall.&lt;/em&gt;&lt;/p&gt;
</description>
      <media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://jacmoe.uber.space/posts/local_gemini_server_quick_and_dirty/feature-swappy-20250724_185937.png" />
    </item>
    
    <item>
      <title>Welcome to my new blog</title>
      <link>https://jacmoe.uber.space/posts/welcome-to-my-new-blog/</link>
      <pubDate>Tue, 29 Mar 2022 00:00:00 +0000</pubDate>
      
      <guid>https://jacmoe.uber.space/posts/welcome-to-my-new-blog/</guid>
      <description>
&lt;p&gt;
My &lt;a href=&#34;https://jacmoes.wordpress.com/&#34;&gt;old blog&lt;/a&gt; at WordPress only has one single post in it.&lt;/p&gt;
&lt;p&gt;
I wrote it using Org-mode in Emacs, and used an extension to put it on WordPress.&lt;/p&gt;
&lt;p&gt;
That was good.&lt;/p&gt;
&lt;p&gt;
I had to perform a lot of tweaking to the HTML, however, and that has obviously put me off just writing blog posts.&lt;/p&gt;
&lt;p&gt;
That was bad.&lt;/p&gt;
&lt;p&gt;
So, I wanted something as easy as writing a blog post in my favorite writing environment, committing the changes to git source control, and pushing it to a remote repository to be hosted. I don&amp;#39;t want to deal with a website like WordPress, to be honest.&lt;/p&gt;
&lt;div id=&#34;outline-container-headline-1&#34; class=&#34;outline-3&#34;&gt;
&lt;h3 id=&#34;headline-1&#34;&gt;
Hugo and Emacs
&lt;/h3&gt;
&lt;div id=&#34;outline-text-headline-1&#34; class=&#34;outline-text-3&#34;&gt;
&lt;p&gt;After hunting around, I stumbled over a good workflow using &lt;a href=&#34;https://gohugo.io/&#34;&gt;Hugo &lt;/a&gt; and the excellent Emacs extension &lt;code class=&#34;verbatim&#34;&gt;ox-hugo&lt;/code&gt;.
All I have to do is write my blog posts in one org-file within Emacs, export to Hugo using the exporter, and let Hugo generate the output. Then I commit the changes to my git repository, push it to GitHub, and my homepage is updated.&lt;/p&gt;
&lt;p&gt;
I don&amp;#39;t have to mess around with anything, like I did in WordPress.&lt;/p&gt;
&lt;p&gt;
Since it&amp;#39;s now going to be much easier to get a blog post up, I am sure I will actually blog a post or two now 🙂&lt;/p&gt;
&lt;p&gt;
I have several ideas, and the good thing about it is, that I can have those posts in my org-file, as sub-trees, because the &lt;a href=&#34;https://ox-hugo.scripter.co/&#34;&gt;Emacs Hugo exporter&lt;/a&gt; will only export the trees that are &lt;code class=&#34;verbatim&#34;&gt;DONE&lt;/code&gt;, not the ones marked with &lt;code class=&#34;verbatim&#34;&gt;TODO&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;
It should be easy to blog, and I am most comfortable in Emacs. So, there&amp;#39;s that 😀&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
</description>
      <media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://jacmoe.uber.space/posts/welcome-to-my-new-blog/feature-hugoblog.png" />
    </item>
    
  </channel>
</rss>
