From b5b85066bc8bfa6db6eaa33e3f14c0eaafafe5af Mon Sep 17 00:00:00 2001
From: Bill <bill@billserver.senders.io>
Date: Sat, 31 Dec 2022 21:14:51 -0500
Subject: RSS Blog and Generate RSS Feed!

---
 www/blog/2022-12-31/index.html |  273 +++++++
 www/blog/feed.rss              | 1583 ++++++++++++++++++++++++++++++++++++++++
 www/blog/index.html            |    3 +
 3 files changed, 1859 insertions(+)
 create mode 100644 www/blog/2022-12-31/index.html
 create mode 100644 www/blog/feed.rss

(limited to 'www/blog')

diff --git a/www/blog/2022-12-31/index.html b/www/blog/2022-12-31/index.html
new file mode 100644
index 0000000..f878326
--- /dev/null
+++ b/www/blog/2022-12-31/index.html
@@ -0,0 +1,273 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="utf-8">
+  <meta name="generator"
+        content="HTML Tidy for HTML5 for Linux version 5.6.0">
+  <title>senders.io - RSS - A Follow-up</title>
+  <link rel='stylesheet'
+        type='text/css'
+        href='/index.css'>
+  <meta name="viewport"
+        content="width=device-width, initial-scale=1">
+</head>
+<body>
+  <div id='header'>
+    <a class='title'
+         href='/'>senders.io</a>
+    <nav>
+      <a href="/blog">blog</a> <a rel="external noopener noreferrer"
+           target="_blank"
+           href="https://github.com/s3nd3r5">github</a> <a rel=
+           "external noopener noreferrer"
+           target="_blank"
+           href="https://git.senders.io">cgit</a> <a rel=
+           "me external noopener noreferrer"
+           target="_blank"
+           href="https://mastodon.online/@senders">mastodon</a>
+    </nav>
+  </div>
+  <div id="body">
+    <article>
+      <h1>RSS - A Follow-up</h1>
+      <p>Get an RSS reader and connect everything to it!</p>
+      <p>Between switching to Mastodon for my social media allowance, and using
+      a dedicated RSS reader has really cut down my overall consumption and
+      wasted PC time.</p>
+      <blockquote>
+        <p>this blogpost is originally posted to my gemini gemlog: <a href=
+        "gemini://senders.io/gemlog/2022-12-31-rss-a-follow-up.gmi">gemini://senders.io/gemlog/2022-12-31-rss-a-follow-up.gmi</a>
+        which is where I do most of my writing, converting some useful to share
+        things over here. It is also where the original RSS gemlog this is a
+        follow-up to was posted. For context, I wanted to cutback on a lot of
+        my web consumption, wasting time and just being mindless online. So I
+        looked to RSS to help centralize and solve this issue.</p>
+      </blockquote>
+      <h2>Recap</h2>
+      <p>So I am using <a rel="external noopener noreferrer"
+         target="_blank"
+         href="https://tt-rss.org">https://tt-rss.org/</a> as my RSS
+         aggregator. It’s a self-hosted RSS aggregator that, using profiles,
+         allows you to subscribe to multiple feeds and have them “synced”
+         between multiple devices (they’re not synced, you’re connecting to a
+         central server). I like this because I don’t ever have to worry about
+         dismissing, reading, or marking anything on my phone to have it still
+         present on my PC. And I don’t have to worry about feed subscriptions
+         or my phone pinging a bunch of feeds, or obviously, any third-party
+         hosting.</p>
+      <h2>How I’ve been using it</h2>
+      <p>So as always, please send me interesting RSS feeds! Or even your own!
+      I am trying to read more blogs, and if you have something you enjoy drop
+      me a DM or email! I’ll share what I am following throughout this section
+      &lt;3</p>
+      <h3>Blogs</h3>
+      <p>Obviously, I am following blogs, one of the last holdouts of RSS. I
+      have a few that I follow, mostly other transfolk on Mastodon that I found
+      had their own blogs. Most non-trans folks I follow are using gemini and
+      still rely on the feed aggregators for that.</p>
+      <p>If you’re interested the two main ones I am reading right now are:</p>
+      <ol>
+        <li>
+          <a rel="external noopener noreferrer"
+              target="_blank"
+              href="https://erininthemorn.substack.com">Erin In The Morn
+              (substack)</a>
+        </li>
+        <li>
+          <a rel="external noopener noreferrer"
+              target="_blank"
+              href="https://www.selfawaresoup.com/">Selfaware Soup</a>
+        </li>
+      </ol>
+      <p>Which have been pretty insightful. Erin sharing a lot of US
+      transgender news, which is good since I have dropped off using Reddit
+      which is where I “got” my “news” from.</p>
+      <h3>Podcasts</h3>
+      <p>The other mainstay in RSS is podcasts. Some even say if a podcast
+      can’t be consumed via RSS, is it even a podcast? I would agree.
+      Everything else is just a show. I don’t <em>need</em> the content to be
+      consumable from my reader, but I’d really appreciate it if were. I am
+      always on the lookout for more podcasts though. With the only two
+      consistent listens being:</p>
+      <ol>
+        <li>
+          <a rel="external noopener noreferrer"
+              target="_blank"
+              href="https://www.relay.fm/penaddict">The Pen Addict Podcast
+              (relay.fm)</a>
+        </li>
+        <li>
+          <a rel="external noopener noreferrer"
+              target="_blank"
+              href="https://www.relay.fm/cortex">Cortex Podcast (relay.fm)</a>
+        </li>
+      </ol>
+      <p>And currently off-season:</p>
+      <ul>
+        <li>
+          <a rel="external noopener noreferrer"
+              target="_blank"
+              href="https://www.relay.fm/backmarkers">Backmarkers Podcast
+              (relay.fm)</a>
+        </li>
+      </ul>
+      <p>Which has a YouTube video format. Though, I honestly really don’t care
+      for Austin Evans, I just enjoy consuming some F1 content and pretending I
+      have friends I can talk to about motor racing.</p>
+      <p>While writing this section I added:</p>
+      <ul>
+        <li>
+          <a rel="external noopener noreferrer"
+              target="_blank"
+              href="https://inside.java/podcast/">Inside.java Podcast</a>
+        </li>
+      </ul>
+      <p>I have yet to listen, some of the topics seem interesting and being
+      infrequent gives me hope its quality over quantity. (And I like having
+      podcasts for chores to distract my brain)</p>
+      <h3>Tech News</h3>
+      <p>Right now I follow two main news sources in tech:</p>
+      <ol>
+        <li>
+          <a rel="external noopener noreferrer"
+              target="_blank"
+              href="https://www.debian.org/News/">debian.org/news</a>
+        </li>
+        <li>
+          <a rel="external noopener noreferrer"
+              target="_blank"
+              href="https://lwn.net/">LWN.net</a>
+        </li>
+      </ol>
+      <p>Running servers using stable debian - it’s good to know when security
+      updates come in, as well as distro updates. And LWN is fantastic, I’ve
+      been a subscriber for many years and while sometimes (Jake) can focus a
+      bit heavy on Python news, has been always interesting to read.</p>
+      <p>This is the section I plan on adding more and more to. I had other
+      tech blogs that just felt like clutter and were pushing out daily
+      articles that I couldn’t care less about (opensource.com cough cough).
+      But that’s just me. Tech news is mainly where I want to focus - since
+      fluff blogs are rarely my cup of tea.</p>
+      <p>LWN has some links in their weekly editions for other news feeds I
+      might consider directly subscribing too, but for now I have these.</p>
+      <h3>Music News</h3>
+      <p>Some folk have an RSS feed for their site updates, which I appreciate.
+      Some use sites like Squarespace but don’t properly connect up the RSS
+      feed which I do NOT appreciate.</p>
+      <p>So right now I have two bandsites that DO update it seems (as their
+      site aligns with the feed) - but the only one I’ll mention is: <a rel=
+      "external noopener noreferrer"
+         target="_blank"
+         href="https://raisedbyswans.com/">raisedbyswans.com</a> I’ve spoken of
+         this artist in my Music Spotlight MANY times and is one of my
+         favorites. His site, while entirely simple, is setup with RSS and has
+         been publishing his updates consistently. I appreciate this. Always a
+         strong rec from me!</p>
+      <p>I’ve been toying with Music Review sites that talk about new releases
+      in the genres they specialize in, but I haven’t settled on anything that
+      is helping me discover new music.</p>
+      <h3>YouTube</h3>
+      <p>This is probably where the biggest change has actually come in. Having
+      my YouTube feed fed through RSS has been fantastic. I am able to not only
+      refresh and not miss any updates (since YouTube sometimes likes to pull
+      updates in out of order than I don’t see it because it’s buried between
+      some other videos that I’d already seen.</p>
+      <p>But this also allows me one further level of filtering on my YouTube
+      subscriptions. I can stay subscribed to channels I am interested in
+      watching <em>occasionally</em> but not every video, and keep those off my
+      RSS feed. And for the “I like to watch most if not all the new videos” I
+      can subscribe to those via RSS. So it’s like the “bell” but without the
+      app basically. And since on Mobile I do NOT use the YouTube app (so I can
+      take advantage of the Ad Blocker in Firefox) that’s great!</p>
+      <p>What sucks / is tricky is actually subscribing to the RSS feeds
+      because YouTube buried that feature now. You just need the channel_id or
+      the username and you can subscribe using the following URL:</p>
+      <pre><code>https://www.youtube.com/feeds/videos.xml?channel_id={ID}
+</code></pre>
+      <p>And you can obtain the channel_id either using the URL (though with
+      aliases now (@channelname) its rare to see a channel_id in the URL) if
+      present otherwise a little console JS can print it out:</p>
+      <pre><code>ytInitialData.metadata.channelMetadataRenderer.externalId
+</code></pre>
+      <p>A note however - you’ll need to clear the console if you navigate to
+      the next channel, at least in Firefox, it caches the result otherwise and
+      you’ll print out the duplicate value. There are some tools where you can
+      print your subscribers list into these feed URLs and bulk subscribe. I’ve
+      lost the link (and it’s what I did initially) but I recommend doing the
+      manual add at least to focus on the channels you WANT in RSS, since you
+      can always fallback to the main subscriptions page on YouTube.</p>
+      <p>But what this has given me is the ability to effectively ignore
+      YouTube almost entirely. Ideally, I’d script something with YouTube-dl
+      but I don’t REALLY care that much, and I’ve gotten into the habit of
+      closing the tab after the video so I don’t stick around and get sucked
+      into the algorithm.</p>
+      <p>What my morning looks like is sitting down, switching to my tt-rss
+      tab, seeing what’s fresh, and watching a video with my coffee maybe, then
+      just moving on and doing something else. I still lurk Mastodon, or get
+      sucked into my computer in some way or another, but it’s been really
+      positive! I can count on one hand how many times since dedicating to RSS
+      I’ve just clicked around YouTube.</p>
+      <h3>Hobby</h3>
+      <p>The last section which really is an extension of Blogs/News is “hobby”
+      RSS feeds. These feed a bit into the consumerist side of life and why I
+      keep them separate. Right now it’s almost <em>entirely</em> fountain pen
+      related (Who&#39;da thought this community would still be writing blogs
+      :P) but since most of the blog posts are either about products or reviews
+      in some way, I try and limit how much I expose myself to them. I have
+      been working on a draft about consumerism for quite a while now and just
+      haven’t really worked it into a post that isn’t just DAE consumerism BAD?
+      low-effort Toot level. (But basically, I kinda hate how all my hobbies,
+      and hobbies in general rely heavily on a consumerism mindset, GAS, and
+      such). So I’ve been trying to be more appreciative of what I already have
+      and such.</p>
+      <p>But these blogs are nice, and often keep in the know about my hobbies
+      and can react to anything meaningful that’s being released. A good video
+      sorta on this topic was by Adam Neely(<a rel=
+      "external noopener noreferrer"
+         target="_blank"
+         href="https://www.youtube.com/v/mHoljbkyAEs">Adam Neely - How In-Ear
+         Monitors are Making Better Musicians</a>), and how his band spend
+         $6000 on gear for their tour, but what it did was eliminate stress and
+         enable them to more easily fine tune and control how they monitor
+         their live performance. He touches on the fact that gear videos feed
+         into the consumerist mindset of music making, but gear is often
+         necessary to facilitate certain things, and setting up a portable
+         in-ear-monitor rig for their entire band is well… unavoidable. It’s
+         just a minor aside in a much deeper video about IEMs and touring and
+         FEEL. And quite the departure from his usual music education content.
+         But it sums up the main thesis of my consumerism gemlog quite nicely I
+         feel (or at least I am projecting my thoughts into a brief aside he
+         makes).</p>
+      <h2>tt-rss - in retrospect</h2>
+      <p>So tt-rss is <em>fine</em> honestly, I think I need to setup a better
+      theme, something that has a bit more contrast. I don’t REALLY read in it,
+      I just use it as the aggregator and then open the links directly. I don’t
+      mind the way it renders the full articles with images, but I do mind how
+      GREY it is by default (in “night” theme). It looks totally customizable
+      and I bet I can download a decent theme for it if I look. But I may spend
+      some time doing that and try and read more in application.</p>
+      <p>But other than that it’s been quite the improvement over my internet
+      experience. More RSS!!</p>
+      <h2>Conclusion</h2>
+      <p>I need more feeds, as I do enjoy reading. So I’m always on the look
+      out. I hate to throw in engagement-y things like “let me know” stuff but
+      I am genuinely looking for interesting suggestions for stuff you might
+      subscribe to over RSS. Even if it’s just “this is my webblog” :) I always
+      like reading people’s things. I should troll the aggregators and look at
+      folks capsule landings to see what is linked!</p>
+      <p>Anyway, you should look into getting an RSS aggregator setup. It’s
+      been really impactful on cutting down on internet scrolling and
+      mindlessness.</p>
+    </article>
+    <div id="footer">
+      <i>December 31, 2022</i>
+    </div>
+    <div id='copyright'>
+      © 2023 senders dot io - <a rel="license external noopener noreferrer"
+           target="_blank"
+           href="https://creativecommons.org/licenses/by/4.0/">CC BY-SA 4.0</a>
+           unless otherwise noted.
+    </div>
+  </div>
+</body>
+</html>
diff --git a/www/blog/feed.rss b/www/blog/feed.rss
new file mode 100644
index 0000000..f41185e
--- /dev/null
+++ b/www/blog/feed.rss
@@ -0,0 +1,1583 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<rss version="2.0">
+<channel>
+ <title>senders.io - Blog</title>
+ <description>senders.io's blog feed</description>
+ <link>https://www.senders.io/</link>
+ <copyright>2023 senders dot io - CC BY-SA 4.0</copyright>
+ <language>en-US</language>
+ <ttl>60</ttl>
+ <lastBuildDate>Sat, 31 Dec 2022 20:55:34 -0500</lastBuildDate>
+ <pubDate>Sat, 31 Dec 2022 00:00:00 -0500</pubDate>
+ <item>
+  <title>RSS - A Follow-up</title>
+  <link>https://www.senders.io/blog/2022-12-31/</link>
+  <guid isPermaLink="true">https://www.senders.io/blog/2022-12-31/index.html</guid>
+  <pubDate>Sat, 31 Dec 2022 00:00:00 -0500</pubDate>
+  <description>
+  <![CDATA[
+    <article>
+      <h1>RSS - A Follow-up</h1>
+      <p>Get an RSS reader and connect everything to it!</p>
+      <p>Between switching to Mastodon for my social media allowance, and using
+      a dedicated RSS reader has really cut down my overall consumption and
+      wasted PC time.</p>
+      <blockquote>
+        <p>this blogpost is originally posted to my gemini gemlog: <a href=
+        "gemini://senders.io/gemlog/2022-12-31-rss-a-follow-up.gmi">gemini://senders.io/gemlog/2022-12-31-rss-a-follow-up.gmi</a>
+        which is where I do most of my writing, converting some useful to share
+        things over here. It is also where the original RSS gemlog this is a
+        follow-up to was posted. For context, I wanted to cutback on a lot of
+        my web consumption, wasting time and just being mindless online. So I
+        looked to RSS to help centralize and solve this issue.</p>
+      </blockquote>
+      <h2>Recap</h2>
+      <p>So I am using <a rel="external noopener noreferrer"
+         target="_blank"
+         href="https://tt-rss.org">https://tt-rss.org/</a> as my RSS
+         aggregator. It’s a self-hosted RSS aggregator that, using profiles,
+         allows you to subscribe to multiple feeds and have them “synced”
+         between multiple devices (they’re not synced, you’re connecting to a
+         central server). I like this because I don’t ever have to worry about
+         dismissing, reading, or marking anything on my phone to have it still
+         present on my PC. And I don’t have to worry about feed subscriptions
+         or my phone pinging a bunch of feeds, or obviously, any third-party
+         hosting.</p>
+      <h2>How I’ve been using it</h2>
+      <p>So as always, please send me interesting RSS feeds! Or even your own!
+      I am trying to read more blogs, and if you have something you enjoy drop
+      me a DM or email! I’ll share what I am following throughout this section
+      &lt;3</p>
+      <h3>Blogs</h3>
+      <p>Obviously, I am following blogs, one of the last holdouts of RSS. I
+      have a few that I follow, mostly other transfolk on Mastodon that I found
+      had their own blogs. Most non-trans folks I follow are using gemini and
+      still rely on the feed aggregators for that.</p>
+      <p>If you’re interested the two main ones I am reading right now are:</p>
+      <ol>
+        <li>
+          <a rel="external noopener noreferrer"
+              target="_blank"
+              href="https://erininthemorn.substack.com">Erin In The Morn
+              (substack)</a>
+        </li>
+        <li>
+          <a rel="external noopener noreferrer"
+              target="_blank"
+              href="https://www.selfawaresoup.com/">Selfaware Soup</a>
+        </li>
+      </ol>
+      <p>Which have been pretty insightful. Erin sharing a lot of US
+      transgender news, which is good since I have dropped off using Reddit
+      which is where I “got” my “news” from.</p>
+      <h3>Podcasts</h3>
+      <p>The other mainstay in RSS is podcasts. Some even say if a podcast
+      can’t be consumed via RSS, is it even a podcast? I would agree.
+      Everything else is just a show. I don’t <em>need</em> the content to be
+      consumable from my reader, but I’d really appreciate it if were. I am
+      always on the lookout for more podcasts though. With the only two
+      consistent listens being:</p>
+      <ol>
+        <li>
+          <a rel="external noopener noreferrer"
+              target="_blank"
+              href="https://www.relay.fm/penaddict">The Pen Addict Podcast
+              (relay.fm)</a>
+        </li>
+        <li>
+          <a rel="external noopener noreferrer"
+              target="_blank"
+              href="https://www.relay.fm/cortex">Cortex Podcast (relay.fm)</a>
+        </li>
+      </ol>
+      <p>And currently off-season:</p>
+      <ul>
+        <li>
+          <a rel="external noopener noreferrer"
+              target="_blank"
+              href="https://www.relay.fm/backmarkers">Backmarkers Podcast
+              (relay.fm)</a>
+        </li>
+      </ul>
+      <p>Which has a YouTube video format. Though, I honestly really don’t care
+      for Austin Evans, I just enjoy consuming some F1 content and pretending I
+      have friends I can talk to about motor racing.</p>
+      <p>While writing this section I added:</p>
+      <ul>
+        <li>
+          <a rel="external noopener noreferrer"
+              target="_blank"
+              href="https://inside.java/podcast/">Inside.java Podcast</a>
+        </li>
+      </ul>
+      <p>I have yet to listen, some of the topics seem interesting and being
+      infrequent gives me hope its quality over quantity. (And I like having
+      podcasts for chores to distract my brain)</p>
+      <h3>Tech News</h3>
+      <p>Right now I follow two main news sources in tech:</p>
+      <ol>
+        <li>
+          <a rel="external noopener noreferrer"
+              target="_blank"
+              href="https://www.debian.org/News/">debian.org/news</a>
+        </li>
+        <li>
+          <a rel="external noopener noreferrer"
+              target="_blank"
+              href="https://lwn.net/">LWN.net</a>
+        </li>
+      </ol>
+      <p>Running servers using stable debian - it’s good to know when security
+      updates come in, as well as distro updates. And LWN is fantastic, I’ve
+      been a subscriber for many years and while sometimes (Jake) can focus a
+      bit heavy on Python news, has been always interesting to read.</p>
+      <p>This is the section I plan on adding more and more to. I had other
+      tech blogs that just felt like clutter and were pushing out daily
+      articles that I couldn’t care less about (opensource.com cough cough).
+      But that’s just me. Tech news is mainly where I want to focus - since
+      fluff blogs are rarely my cup of tea.</p>
+      <p>LWN has some links in their weekly editions for other news feeds I
+      might consider directly subscribing too, but for now I have these.</p>
+      <h3>Music News</h3>
+      <p>Some folk have an RSS feed for their site updates, which I appreciate.
+      Some use sites like Squarespace but don’t properly connect up the RSS
+      feed which I do NOT appreciate.</p>
+      <p>So right now I have two bandsites that DO update it seems (as their
+      site aligns with the feed) - but the only one I’ll mention is: <a rel=
+      "external noopener noreferrer"
+         target="_blank"
+         href="https://raisedbyswans.com/">raisedbyswans.com</a> I’ve spoken of
+         this artist in my Music Spotlight MANY times and is one of my
+         favorites. His site, while entirely simple, is setup with RSS and has
+         been publishing his updates consistently. I appreciate this. Always a
+         strong rec from me!</p>
+      <p>I’ve been toying with Music Review sites that talk about new releases
+      in the genres they specialize in, but I haven’t settled on anything that
+      is helping me discover new music.</p>
+      <h3>YouTube</h3>
+      <p>This is probably where the biggest change has actually come in. Having
+      my YouTube feed fed through RSS has been fantastic. I am able to not only
+      refresh and not miss any updates (since YouTube sometimes likes to pull
+      updates in out of order than I don’t see it because it’s buried between
+      some other videos that I’d already seen.</p>
+      <p>But this also allows me one further level of filtering on my YouTube
+      subscriptions. I can stay subscribed to channels I am interested in
+      watching <em>occasionally</em> but not every video, and keep those off my
+      RSS feed. And for the “I like to watch most if not all the new videos” I
+      can subscribe to those via RSS. So it’s like the “bell” but without the
+      app basically. And since on Mobile I do NOT use the YouTube app (so I can
+      take advantage of the Ad Blocker in Firefox) that’s great!</p>
+      <p>What sucks / is tricky is actually subscribing to the RSS feeds
+      because YouTube buried that feature now. You just need the channel_id or
+      the username and you can subscribe using the following URL:</p>
+      <pre><code>https://www.youtube.com/feeds/videos.xml?channel_id={ID}
+</code></pre>
+      <p>And you can obtain the channel_id either using the URL (though with
+      aliases now (@channelname) its rare to see a channel_id in the URL) if
+      present otherwise a little console JS can print it out:</p>
+      <pre><code>ytInitialData.metadata.channelMetadataRenderer.externalId
+</code></pre>
+      <p>A note however - you’ll need to clear the console if you navigate to
+      the next channel, at least in Firefox, it caches the result otherwise and
+      you’ll print out the duplicate value. There are some tools where you can
+      print your subscribers list into these feed URLs and bulk subscribe. I’ve
+      lost the link (and it’s what I did initially) but I recommend doing the
+      manual add at least to focus on the channels you WANT in RSS, since you
+      can always fallback to the main subscriptions page on YouTube.</p>
+      <p>But what this has given me is the ability to effectively ignore
+      YouTube almost entirely. Ideally, I’d script something with YouTube-dl
+      but I don’t REALLY care that much, and I’ve gotten into the habit of
+      closing the tab after the video so I don’t stick around and get sucked
+      into the algorithm.</p>
+      <p>What my morning looks like is sitting down, switching to my tt-rss
+      tab, seeing what’s fresh, and watching a video with my coffee maybe, then
+      just moving on and doing something else. I still lurk Mastodon, or get
+      sucked into my computer in some way or another, but it’s been really
+      positive! I can count on one hand how many times since dedicating to RSS
+      I’ve just clicked around YouTube.</p>
+      <h3>Hobby</h3>
+      <p>The last section which really is an extension of Blogs/News is “hobby”
+      RSS feeds. These feed a bit into the consumerist side of life and why I
+      keep them separate. Right now it’s almost <em>entirely</em> fountain pen
+      related (Who&#39;da thought this community would still be writing blogs
+      :P) but since most of the blog posts are either about products or reviews
+      in some way, I try and limit how much I expose myself to them. I have
+      been working on a draft about consumerism for quite a while now and just
+      haven’t really worked it into a post that isn’t just DAE consumerism BAD?
+      low-effort Toot level. (But basically, I kinda hate how all my hobbies,
+      and hobbies in general rely heavily on a consumerism mindset, GAS, and
+      such). So I’ve been trying to be more appreciative of what I already have
+      and such.</p>
+      <p>But these blogs are nice, and often keep in the know about my hobbies
+      and can react to anything meaningful that’s being released. A good video
+      sorta on this topic was by Adam Neely(<a rel=
+      "external noopener noreferrer"
+         target="_blank"
+         href="https://www.youtube.com/v/mHoljbkyAEs">Adam Neely - How In-Ear
+         Monitors are Making Better Musicians</a>), and how his band spend
+         $6000 on gear for their tour, but what it did was eliminate stress and
+         enable them to more easily fine tune and control how they monitor
+         their live performance. He touches on the fact that gear videos feed
+         into the consumerist mindset of music making, but gear is often
+         necessary to facilitate certain things, and setting up a portable
+         in-ear-monitor rig for their entire band is well… unavoidable. It’s
+         just a minor aside in a much deeper video about IEMs and touring and
+         FEEL. And quite the departure from his usual music education content.
+         But it sums up the main thesis of my consumerism gemlog quite nicely I
+         feel (or at least I am projecting my thoughts into a brief aside he
+         makes).</p>
+      <h2>tt-rss - in retrospect</h2>
+      <p>So tt-rss is <em>fine</em> honestly, I think I need to setup a better
+      theme, something that has a bit more contrast. I don’t REALLY read in it,
+      I just use it as the aggregator and then open the links directly. I don’t
+      mind the way it renders the full articles with images, but I do mind how
+      GREY it is by default (in “night” theme). It looks totally customizable
+      and I bet I can download a decent theme for it if I look. But I may spend
+      some time doing that and try and read more in application.</p>
+      <p>But other than that it’s been quite the improvement over my internet
+      experience. More RSS!!</p>
+      <h2>Conclusion</h2>
+      <p>I need more feeds, as I do enjoy reading. So I’m always on the look
+      out. I hate to throw in engagement-y things like “let me know” stuff but
+      I am genuinely looking for interesting suggestions for stuff you might
+      subscribe to over RSS. Even if it’s just “this is my webblog” :) I always
+      like reading people’s things. I should troll the aggregators and look at
+      folks capsule landings to see what is linked!</p>
+      <p>Anyway, you should look into getting an RSS aggregator setup. It’s
+      been really impactful on cutting down on internet scrolling and
+      mindlessness.</p>
+    </article>
+  ]]>
+  </description>
+ </item>
+ <item>
+  <title>RSS - A Follow-up</title>
+  <link>https://www.senders.io/blog/2022-12-31/</link>
+  <guid isPermaLink="true">https://www.senders.io/blog/2022-12-31/index.html</guid>
+  <pubDate>Sat, 31 Dec 2022 00:00:00 -0500</pubDate>
+  <description>
+  <![CDATA[
+    <article>
+      <h1>RSS - A Follow-up</h1>
+      <p>Get an RSS reader and connect everything to it!</p>
+      <p>Between switching to Mastodon for my social media allowance, and using
+      a dedicated RSS reader has really cut down my overall consumption and
+      wasted PC time.</p>
+      <blockquote>
+        <p>this blogpost is originally posted to my gemini gemlog:
+        gemini://senders.io/gemlog/2022-12-31-rss-a-follow-up.gmi which is
+        where I do most of my writing, converting some useful to share things
+        over here. It is also where the original RSS gemlog this is a follow-up
+        to was posted. For context, I wanted to cutback on a lot of my web
+        consumption, wasting time and just being mindless online. So I looked
+        to RSS to help centralize and solve this issue.</p>
+      </blockquote>
+      <h2>Recap</h2>
+      <p>So I am using <a rel="external noopener noreferrer"
+         target="_blank"
+         href="https://tt-rss.org">https://tt-rss.org/</a> as my RSS
+         aggregator. It’s a self-hosted RSS aggregator that, using profiles,
+         allows you to subscribe to multiple feeds and have them “synced”
+         between multiple devices (they’re not synced, you’re connecting to a
+         central server). I like this because I don’t ever have to worry about
+         dismissing, reading, or marking anything on my phone to have it still
+         present on my PC. And I don’t have to worry about feed subscriptions
+         or my phone pinging a bunch of feeds, or obviously, any third-party
+         hosting.</p>
+      <h2>How I’ve been using it</h2>
+      <p>So as always, please send me interesting RSS feeds! Or even your own!
+      I am trying to read more blogs, and if you have something you enjoy drop
+      me a DM or email! I’ll share what I am following throughout this section
+      &lt;3</p>
+      <h3>Blogs</h3>
+      <p>Obviously, I am following blogs, one of the last holdouts of RSS. I
+      have a few that I follow, mostly other transfolk on Mastodon that I found
+      had their own blogs. Most non-trans folks I follow are using gemini and
+      still rely on the feed aggregators for that.</p>
+      <p>If you’re interested the two main ones I am reading right now are:</p>
+      <ol>
+        <li>
+          <a rel="external noopener noreferrer"
+              target="_blank"
+              href="https://erininthemorn.substack.com">Erin In The Morn
+              (substack)</a>
+        </li>
+        <li>
+          <a rel="external noopener noreferrer"
+              target="_blank"
+              href="https://www.selfawaresoup.com/">Selfaware Soup</a>
+        </li>
+      </ol>
+      <p>Which have been pretty insightful. Erin sharing a lot of US
+      transgender news, which is good since I have dropped off using Reddit
+      which is where I “got” my “news” from.</p>
+      <h3>Podcasts</h3>
+      <p>The other mainstay in RSS is podcasts. Some even say if a podcast
+      can’t be consumed via RSS, is it even a podcast? I would agree.
+      Everything else is just a show. I don’t <em>need</em> the content to be
+      consumable from my reader, but I’d really appreciate it if were. I am
+      always on the lookout for more podcasts though. With the only two
+      consistent listens being:</p>
+      <ol>
+        <li>
+          <a rel="external noopener noreferrer"
+              target="_blank"
+              href="https://www.relay.fm/penaddict">The Pen Addict Podcast
+              (relay.fm)</a>
+        </li>
+        <li>
+          <a rel="external noopener noreferrer"
+              target="_blank"
+              href="https://www.relay.fm/cortex">Cortex Podcast (relay.fm)</a>
+        </li>
+      </ol>
+      <p>And currently off-season:</p>
+      <ul>
+        <li>
+          <a rel="external noopener noreferrer"
+              target="_blank"
+              href="https://www.relay.fm/backmarkers">Backmarkers Podcast
+              (relay.fm)</a>
+        </li>
+      </ul>
+      <p>Which has a YouTube video format. Though, I honestly really don’t care
+      for Austin Evans, I just enjoy consuming some F1 content and pretending I
+      have friends I can talk to about motor racing.</p>
+      <p>While writing this section I added:</p>
+      <ul>
+        <li>
+          <a rel="external noopener noreferrer"
+              target="_blank"
+              href="https://inside.java/podcast/">Inside.java Podcast</a>
+        </li>
+      </ul>
+      <p>I have yet to listen, some of the topics seem interesting and being
+      infrequent gives me hope its quality over quantity. (And I like having
+      podcasts for chores to distract my brain)</p>
+      <h3>Tech News</h3>
+      <p>Right now I follow two main news sources in tech:</p>
+      <ol>
+        <li>
+          <a rel="external noopener noreferrer"
+              target="_blank"
+              href="https://www.debian.org/News/">debian.org/news</a>
+        </li>
+        <li>
+          <a rel="external noopener noreferrer"
+              target="_blank"
+              href="https://lwn.net/">LWN.net</a>
+        </li>
+      </ol>
+      <p>Running servers using stable debian - it’s good to know when security
+      updates come in, as well as distro updates. And LWN is fantastic, I’ve
+      been a subscriber for many years and while sometimes (Jake) can focus a
+      bit heavy on Python news, has been always interesting to read.</p>
+      <p>This is the section I plan on adding more and more to. I had other
+      tech blogs that just felt like clutter and were pushing out daily
+      articles that I couldn’t care less about (opensource.com cough cough).
+      But that’s just me. Tech news is mainly where I want to focus - since
+      fluff blogs are rarely my cup of tea.</p>
+      <p>LWN has some links in their weekly editions for other news feeds I
+      might consider directly subscribing too, but for now I have these.</p>
+      <h3>Music News</h3>
+      <p>Some folk have an RSS feed for their site updates, which I appreciate.
+      Some use sites like Squarespace but don’t properly connect up the RSS
+      feed which I do NOT appreciate.</p>
+      <p>So right now I have two bandsites that DO update it seems (as their
+      site aligns with the feed) - but the only one I’ll mention is: <a rel=
+      "external noopener noreferrer"
+         target="_blank"
+         href="https://raisedbyswans.com/">raisedbyswans.com</a> I’ve spoken of
+         this artist in my Music Spotlight MANY times and is one of my
+         favorites. His site, while entirely simple, is setup with RSS and has
+         been publishing his updates consistently. I appreciate this. Always a
+         strong rec from me!</p>
+      <p>I’ve been toying with Music Review sites that talk about new releases
+      in the genres they specialize in, but I haven’t settled on anything that
+      is helping me discover new music.</p>
+      <h3>YouTube</h3>
+      <p>This is probably where the biggest change has actually come in. Having
+      my YouTube feed fed through RSS has been fantastic. I am able to not only
+      refresh and not miss any updates (since YouTube sometimes likes to pull
+      updates in out of order than I don’t see it because it’s buried between
+      some other videos that I’d already seen.</p>
+      <p>But this also allows me one further level of filtering on my YouTube
+      subscriptions. I can stay subscribed to channels I am interested in
+      watching <em>occasionally</em> but not every video, and keep those off my
+      RSS feed. And for the “I like to watch most if not all the new videos” I
+      can subscribe to those via RSS. So it’s like the “bell” but without the
+      app basically. And since on Mobile I do NOT use the YouTube app (so I can
+      take advantage of the Ad Blocker in Firefox) that’s great!</p>
+      <p>What sucks / is tricky is actually subscribing to the RSS feeds
+      because YouTube buried that feature now. You just need the channel_id or
+      the username and you can subscribe using the following URL:</p>
+      <pre><code>https://www.youtube.com/feeds/videos.xml?channel_id={ID}
+</code></pre>
+      <p>And you can obtain the channel_id either using the URL (though with
+      aliases now (@channelname) its rare to see a channel_id in the URL) if
+      present otherwise a little console JS can print it out:</p>
+      <pre><code>ytInitialData.metadata.channelMetadataRenderer.externalId
+</code></pre>
+      <p>A note however - you’ll need to clear the console if you navigate to
+      the next channel, at least in Firefox, it caches the result otherwise and
+      you’ll print out the duplicate value. There are some tools where you can
+      print your subscribers list into these feed URLs and bulk subscribe. I’ve
+      lost the link (and it’s what I did initially) but I recommend doing the
+      manual add at least to focus on the channels you WANT in RSS, since you
+      can always fallback to the main subscriptions page on YouTube.</p>
+      <p>But what this has given me is the ability to effectively ignore
+      YouTube almost entirely. Ideally, I’d script something with YouTube-dl
+      but I don’t REALLY care that much, and I’ve gotten into the habit of
+      closing the tab after the video so I don’t stick around and get sucked
+      into the algorithm.</p>
+      <p>What my morning looks like is sitting down, switching to my tt-rss
+      tab, seeing what’s fresh, and watching a video with my coffee maybe, then
+      just moving on and doing something else. I still lurk Mastodon, or get
+      sucked into my computer in some way or another, but it’s been really
+      positive! I can count on one hand how many times since dedicating to RSS
+      I’ve just clicked around YouTube.</p>
+      <h3>Hobby</h3>
+      <p>The last section which really is an extension of Blogs/News is “hobby”
+      RSS feeds. These feed a bit into the consumerist side of life and why I
+      keep them separate. Right now it’s almost <em>entirely</em> fountain pen
+      related (Who&#39;da thought this community would still be writing blogs
+      :P) but since most of the blog posts are either about products or reviews
+      in some way, I try and limit how much I expose myself to them. I have
+      been working on a draft about consumerism for quite a while now and just
+      haven’t really worked it into a post that isn’t just DAE consumerism BAD?
+      low-effort Toot level. (But basically, I kinda hate how all my hobbies,
+      and hobbies in general rely heavily on a consumerism mindset, GAS, and
+      such). So I’ve been trying to be more appreciative of what I already have
+      and such.</p>
+      <p>But these blogs are nice, and often keep in the know about my hobbies
+      and can react to anything meaningful that’s being released. A good video
+      sorta on this topic was by Adam Neely(<a rel=
+      "external noopener noreferrer"
+         target="_blank"
+         href="https://www.youtube.com/v/mHoljbkyAEs">Adam Neely - How In-Ear
+         Monitors are Making Better Musicians</a>), and how his band spend
+         $6000 on gear for their tour, but what it did was eliminate stress and
+         enable them to more easily fine tune and control how they monitor
+         their live performance. He touches on the fact that gear videos feed
+         into the consumerist mindset of music making, but gear is often
+         necessary to facilitate certain things, and setting up a portable
+         in-ear-monitor rig for their entire band is well… unavoidable. It’s
+         just a minor aside in a much deeper video about IEMs and touring and
+         FEEL. And quite the departure from his usual music education content.
+         But it sums up the main thesis of my consumerism gemlog quite nicely I
+         feel (or at least I am projecting my thoughts into a brief aside he
+         makes).</p>
+      <h2>tt-rss - in retrospect</h2>
+      <p>So tt-rss is <em>fine</em> honestly, I think I need to setup a better
+      theme, something that has a bit more contrast. I don’t REALLY read in it,
+      I just use it as the aggregator and then open the links directly. I don’t
+      mind the way it renders the full articles with images, but I do mind how
+      GREY it is by default (in “night” theme). It looks totally customizable
+      and I bet I can download a decent theme for it if I look. But I may spend
+      some time doing that and try and read more in application.</p>
+      <p>But other than that it’s been quite the improvement over my internet
+      experience. More RSS!!</p>
+      <h2>Conclusion</h2>
+      <p>I need more feeds, as I do enjoy reading. So I’m always on the look
+      out. I hate to throw in engagement-y things like “let me know” stuff but
+      I am genuinely looking for interesting suggestions for stuff you might
+      subscribe to over RSS. Even if it’s just “this is my webblog” :) I always
+      like reading people’s things. I should troll the aggregators and look at
+      folks capsule landings to see what is linked!</p>
+      <p>Anyway, you should look into getting an RSS aggregator setup. It’s
+      been really impactful on cutting down on internet scrolling and
+      mindlessness.</p>
+    </article>
+  ]]>
+  </description>
+ </item>
+ <item>
+  <title>CSS Themes Exist Now!?</title>
+  <link>https://www.senders.io/blog/2022-12-05/</link>
+  <guid isPermaLink="true">https://www.senders.io/blog/2022-12-05/index.html</guid>
+  <pubDate>Mon, 05 Dec 2022 00:00:00 -0500</pubDate>
+  <description>
+  <![CDATA[
+    <article>
+      <h2>CSS Themes Exist Now!?</h2>
+      <p>Yeah news to me too! Seems like according to <a rel=
+      "external noopener noreferrer"
+         target="_blank"
+         href=
+         "https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-color-scheme#browser_compatibility">
+      the MDN</a> it’s been supported since 2019 for most browsers and
+      supported by all by now.</p>
+      <p>This is so wild!</p>
+      <h3>Why is this cool?</h3>
+      <p>Well you may have noticed this is in dark mode now (if you set your
+      preferences to dark in your OS/Browser). But this is cool because it
+      means we’re no longer restricted to using Javascript and custom
+      preferences for websites.</p>
+      <p>I had assumed this existed because sites like GitHub were defaulting
+      to darkmode despite me never setting anything in like my profile
+      settings. But I just assumed based off of my legacy knowledge this was
+      some custom render trick using javascript.</p>
+      <h4>Still no JS!</h4>
+      <p>I keep this blog JS free! While not all pages under the senders.io
+      umbrella are javascript free - everything in www.senders.io (this blog)
+      will always be.</p>
+      <p>I try to keep that, not only for my sake, but for your sake too - a
+      javascript free blog means the priority is reading.</p>
+      <h3>Examples</h3>
+      <p>So I achieve darkmode in this blog by doing the following:</p>
+      <pre><code>/* default / light */
+:root {
+  --background: white;
+  --font: black;
+  --quote: #eee;
+  --link: #0303ee;
+  --linkv: #551a8b;
+  --linkf: #f02727;
+  --articleborder: #060606;
+  --tableborder: #aaa;
+  --tablehead: #ebcfff;
+  --tablez: #eee;
+}
+@media (prefers-color-scheme: dark) {
+  :root {
+    --background: #1e1e1e;
+    --font: #eee;
+    --quote: #444;
+    --link: #00d3d3;
+    --linkv: #cd78f4;
+    --linkf: #f02727;
+    --articleborder: #23ed9b;
+    --tableborder: #aaa;
+    --tablehead: #6f5a7e;
+    --tablez: #313131;
+  }
+}
+</code></pre>
+      <p>Essentially, I leverage <a rel="external noopener noreferrer"
+         target="_blank"
+         href=
+         "https://developer.mozilla.org/en-US/docs/Web/CSS/Using_CSS_custom_properties">
+      CSS Variables</a> to define the specific areas I set theme specific
+      colors (my nav bar is static regardless of dark/light mode for
+      example).</p>
+      <p>Then if the media preference is dark - I overwrite the variables with
+      my dark mode values!</p>
+      <p>Whats tricky is originally most of these values didn’t actually HAVE
+      values set - I relied on the system default for things like links and the
+      page colors in an effort to use minimum CSS as well.</p>
+      <p>I still feel like I am honoring that since I don’t have to duplicate
+      any actual CSS this way, I just have a lookup table of color values.</p>
+      <p>That being said my CSS file is still only about 3kB which is not so
+      bad. And I’ve actually covered most themed properties already - links,
+      tables, quotes.</p>
+      <h4>Toggling Themes</h4>
+      <p>Something else I found out during this experiment is you can actually
+      toggle the themes directly in your developer tooling. By opening your
+      devtools and going to Inspector (in firefox at least) there are two
+      buttons in the styles section “toggle light color scheme” and “toggle
+      dark color scheme” using a sun and moon icon.</p>
+      <p>This made testing VERY easy and actually is what I noticed to prompt
+      me into looking up if this was a standard CSS thing or not. So thanks
+      Mozilla!</p>
+      <h3>Conclusion</h3>
+      <p>Yeah if you’ve never realized this check out the MDN guides on both
+      variables (I didn’t realize these got put in the standard either!) and
+      themes!</p>
+      <ul>
+        <li>CSS Variables: <a rel="external noopener noreferrer"
+              target="_blank"
+              href=
+              "https://developer.mozilla.org/en-US/docs/Web/CSS/Using_CSS_custom_properties">
+          https://developer.mozilla.org/en-US/docs/Web/CSS/Using_CSS_custom_properties</a>
+        </li>
+        <li>CSS Media prefers-color-scheme: <a rel=
+        "external noopener noreferrer"
+              target="_blank"
+              href=
+              "https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-color-scheme">
+          https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-color-scheme</a>
+        </li>
+      </ul>
+    </article>
+  ]]>
+  </description>
+ </item>
+ <item>
+  <title>My Markdown -> HTML Setup</title>
+  <link>https://www.senders.io/blog/2022-11-06/</link>
+  <guid isPermaLink="true">https://www.senders.io/blog/2022-11-06/index.html</guid>
+  <pubDate>Sun, 06 Nov 2022 00:00:00 -0400</pubDate>
+  <description>
+  <![CDATA[
+    <article>
+      <h2>My Markdown -&gt; HTML Setup</h2>
+      <p>A common way I see a lot of people blog, especially micro-blog, is in
+      <a rel="external noopener noreferrer"
+         target="_blank"
+         href="https://daringfireball.net/projects/markdown/">markdown</a>.</p>
+      <figure>
+        <blockquote>
+          <p>Markdown is a lightweight markup language for creating formatted
+          text using a plain-text editor.</p>
+        </blockquote>
+        <figcaption>
+          <cite>— <a rel="external noopener noreferrer"
+             target="_blank"
+             href="https://en.wikipedia.org/wiki/Markdown">Wikipedia |
+             Markdown</a></cite>
+        </figcaption>
+      </figure>
+      <p>It built itself on-top of common syntax prevalent on the web and was
+      designed to be converted into simple HTML output. Since it leveraged
+      preexisting syntax it was easy for new users to pick up, and is now found
+      all over the web and applications.</p>
+      <p>Since I started this website, I had been writing each page by hand
+      using a few tools to facilitate that - and for a while I had been looking
+      for a good way to try out using markdown to generate some lighter pages
+      and these blogposts.</p>
+      <h3>Writing HTML by hand</h3>
+      <p>When it comes to blogging a lot of platforms offer WYSIWYG editor –
+      allowing users to write in rich-text that then gets converted into HTML
+      in the style of the platform. But for my case, since I self host this
+      website, I decided to stick to my roots and write PURE HTML instead.</p>
+      <p>HTML is fairly simple and easy once you get use to the basic structure
+      of the system. And since I’ve been working in HTML almost two decades
+      now, at the time it felt like the best solution to make a clean
+      website.</p>
+      <p>I briefly touched on my design process in <a href=
+      "/blog/2019-01-21/">2019-01-21 - First! A New Years Resolution</a>
+      outlining that I wanted to make a very lightweight and simple website.
+      And at the time I believed the best way to achieve this goal was to
+      carefully structure and craft my website’s HTML by hand.</p>
+      <p>This article is making the process sound far more difficult than it is
+      – it’s mostly just tedious.</p>
+      <pre><code>&lt;article&gt;
+&lt;h2&gt; Title &lt;/h2&gt;
+&lt;p&gt;
+   Some paragraph....
+&lt;/p&gt;
+&lt;h3&gt;
+&lt;p&gt; some subsection &lt;/p&gt;
+&lt;/h3&gt;
+&lt;p&gt; more text &lt;/p&gt;
+... etc
+</code></pre>
+      <p>Is essentially what the website looks like - you can view the source
+      of this page to see – it’s very simple HTML.</p>
+      <p>The benefit I found doing this, mostly leveraging <a href=
+      "www.html-tidy.org/">tidy</a>, allowed a very easy to edit codebase. And
+      by leveraging the existing tags and their properties I also attempted to
+      keep the styling to an absolute minimum. Using existing tags to enforce
+      the styling I desired.</p>
+      <p>Only for certain areas (tables, code, quotes) where readability is an
+      issue do I setup custom CSS.</p>
+      <p>Most of this process is actually what will continue to happen but the
+      actual writing process will be unobstructed by the tedium of writing
+      HTML.</p>
+      <h3>Micro-blogging in general</h3>
+      <p>At the time of writing this, I have no ported over any of my <a rel=
+      "external noopener noreferrer"
+         target="_blank"
+         href="https://gemini.circumlunar.space/">Gemini</a> micro-blogs. This
+         warrants a longer post, since I wrote consistently in gemini from
+         March 2021 through May 2021 – having only stopped due to a long move
+         leading to a lot of server downtime breaking the habit. My gemini
+         updated multiple days a week - mostly due to the extremely lightweight
+         and limited nature of the platform.</p>
+      <h4>Gemtext</h4>
+      <p><a rel="external noopener noreferrer"
+         target="_blank"
+         href="https://gemini.circumlunar.space/docs/gemtext.gmi">Gemtext</a>
+         was the gemini protocol’s standard MIME type. It was a basic markup
+         language that relied on line based syntax. It was purposefully as lean
+         as necessary because this was what was ACTUALLY being served to
+         clients – unlike Markdown which first needed to be converted to HTML,
+         gemtext was the actual text served and rendered on the viewers client.
+         You could customize the style of your client - but you could not, as
+         an author, dictate how your content would be viewed. This meant the
+         only aspects of your blog you had control over was the actual content
+         and it’s structure – which for a blog is really all you should care
+         about.</p>
+      <p>It’s syntax contained most of what I was actually using here already
+      from HTML:</p>
+      <ol>
+        <li>headings</li>
+        <li>paragraphs that were wrapped based on page-width</li>
+        <li>links</li>
+        <li>lists</li>
+        <li>quotes</li>
+        <li>preformatted-text / codeblocks</li>
+      </ol>
+      <p>Besides links - it also leveraged the same common syntaxes that
+      markdown did.</p>
+      <h4>Gemtext links</h4>
+      <p>From my brief time in the IRC and in geminispace in general - a lot of
+      the “recommendations” came from new users about providing in-line links.
+      The philosophy was that by forcing links to exist on their own line -
+      clients could configure how they wanted these to be seen and not have to
+      worry about links interfering with the text.</p>
+      <figure>
+        <blockquote>
+          <p>Like Gopher (and unlike Markdown or HTML), Gemtext only lets you
+          put links to other documents on a line of their own. You can’t make a
+          single word in the middle of a sentence into a link. This takes a
+          little getting used to, but it means that links are extremely easy to
+          find, and clients can style them differently (e.g. to make it clear
+          which protocol they use, or to display the domain name to help users
+          decide whether they want to follow them or not) without interfering
+          with the readability of your actual textual content.</p>
+        </blockquote>
+        <figcaption>
+          — <cite><a rel="external noopener noreferrer"
+             target="_blank"
+             href=
+             "https://gemini.circumlunar.space/docs/gemtext.gmi">gemini.circumlunar.space
+             – A quick introduction to “gemtext” markup | Links</a></cite>
+        </figcaption>
+      </figure>
+      <p>I felt that this provided a lot of useful limitations that removed a
+      huge barrier for me to actually write down ideas without feeling over
+      burdened. I also lurked in the IRC - as well as <a rel=
+      "external noopener noreferrer"
+         target="_blank"
+         href="https://github.com/s3nd3r5/java-gemini-server">implemented my
+         own gemini server</a>.</p>
+      <p>As a quick aside – the java server was a lot of fun! The protocol was
+      very simple to work with for basic gemtext. I felt the ultimate downside
+      was trying to build something for basic gemini capsule hosting (like I
+      was using for a decent chunk of my time with gemini) - and something for
+      developers to use as a base application server. At the time in 2021 a lot
+      of talk was happening on IRC of users starting to look to provide more
+      complex experiences via the protocol and I wanted a way for those
+      interactions to be built out in Java - since most were in Go or Python at
+      the time. This decision lead to me burning out due to difficulties
+      splitting those responsiblities easily - where you could host along side
+      your application - since I lacked the experience with more complex Gemini
+      capsule applications.</p>
+      <p>But it was a good experience and I got hands on experience with Certs,
+      Netty, and SNI - which actually came in handy at my job!</p>
+      <h3>Wasn’t this about Markdown?</h3>
+      <p>A lot of what I liked about Gemini I found missing when I returned to
+      the World Wide Web. Writing a new post was tedious and I actually had a
+      few drafts sitting unposted. They’re probably checked into my git at this
+      moment! So I thought - why not just use markdown and convert to HTML?
+      That’s what it’s built for - and I already designed my site to work with
+      minimal customization of raw HTML tags!</p>
+      <h3>How I use Markdown</h3>
+      <p>Firstly, this blogpost was written in Markdown (with minimal HTML
+      sprinkled in). Then I render the markdown into HTML using <a rel=
+      "external noopener noreferrer"
+         target="_blank"
+         href=
+         "https://www.pell.portland.or.us/~orc/Code/discount/">Discount</a>.
+         Frankly, I don’t know how I stumbled across this markdown parser - I
+         think it came pre-installed on my KDE Arch system because another KDE
+         program used it. But I liked it, and it seemed extensible enough for
+         my needs.</p>
+      <p>This would produce the “body” of my articles - and I could then
+      prepend and append the template-head and foot to my html output to form a
+      blog post/web page.</p>
+      <h4>Customizations</h4>
+      <p>After I generated the output file, I replaced some placeholders in the
+      templates via <code>sed</code> and then <code>tidy</code>’d the HTML. The
+      only other major issue was Discount had no way of appending any link
+      attributes – so for external links I had <code>sed</code> append the
+      <code>rel</code> and <code>target</code> attributes - which work off the
+      assumption they’re not there. A lot of my home-server scripts rely on
+      assumptions…</p>
+      <p>This is all bundled up in a simple script file so I can just supply a
+      few arguments and the full page is re-rendered on command.</p>
+      <h3>Two Sources of Truth</h3>
+      <p>In the sytem I devised the markdown files are really the “source of
+      truth” but you could argue that the HTML files hold equal weigh - as
+      they’re what you’re reading right now. The markdown is only useful if I
+      render it as HTML. There exist nginx extensions to serve markdown as HTML
+      so I store everything as markdown. I could also provide some heading
+      information to the markdowns to remove the command arguments and have on
+      boot it generate the .html files in place before launching the site… But
+      these are all nice ideas for a later date.</p>
+      <p>Ultimately, this is something I contribute to ocassionally - I don’t
+      need something too complicated. I just need to output some HTML a few
+      times a year. So if I manually publish the HTML each time - that’s likely
+      far more efficent then re-rendering.</p>
+      <h3>Learnings</h3>
+      <p>This is the first post that uses this - though I’ve converted a page
+      over to this already. But once I worked out the kinks and built a flow
+      that works for me - this made the writing process a LOT easier. Another
+      issue was that once I <code>tidy</code>’d the HTML file - it became
+      frustrating to edit, and I didn’t always re-tidy it. Because the output
+      is always <code>tidy</code>’d by the script - I can edit the raw markdown
+      as needed. And the script generally will always output the same file
+      (with whatever changes I made of course). This makes the editing and git
+      history a lot clearer.</p>
+      <p>I would recommend writing in markdown - or even trying out gemini -
+      you can host your gemini capsule on the web even! (Most gemini webpages
+      are gemini capsules converted). I am sure other “blog focused markups”
+      also exist too.</p>
+    </article>
+  ]]>
+  </description>
+ </item>
+ <item>
+  <title>Manjaro Followup - Breaking things!</title>
+  <link>https://www.senders.io/blog/2021-01-05/</link>
+  <guid isPermaLink="true">https://www.senders.io/blog/2021-01-05/index.html</guid>
+  <pubDate>Tue, 05 Jan 2021 00:00:00 -0500</pubDate>
+  <description>
+  <![CDATA[
+    <article>
+      <h2>Manjaro Follow-up - Breaking things!</h2>
+      <p>I wanted to write a quick follow-up covering how I managed to break,
+      and then recover, everything when I went to remove my old debian
+      partition.</p>
+      <h3>Recap</h3>
+      <p>To recap: I installed Manjaro alongside a Debian/sid and Windows 10
+      install. Each of those OSs were on their own SSDs. I went from a 128SSD
+      with Windows installed, to adding a 256 installing Debian. Years later I
+      split the Debian SSD into two parts - installing Manjaro on my new slice.
+      Since my last update I have been playing around with Manjaro and having
+      made my i3 keybindings for Kwin I&#39;ve been pretty happy. But then I
+      started breaking things.</p>
+      <h3>Break stuff</h3>
+      <p>I broke my Manjaro by updating my Debian (apparently). To be honest
+      this is the one part I don&#39;t fully understand <i>why</i> it happened.
+      From what I could find online I didn&#39;t setup my system to handle two
+      separate Linux OS installs. But I was no longer able to boot directly
+      into Manjaro without using the initramfs failover boot option. I only
+      updated my Debian install because I was debugging something on my work
+      install, which both run Debian/sid. (Otherwise I would&#39;ve used my
+      server which runs Debian/Stable). But considering I hadn&#39;t had any
+      need to boot back into Debian I decided to just get rid of it!</p>
+      <h3>GParted, Grub, Gotchas!</h3>
+      <p>I went in knowing I&#39;d have to fix my Grub since I&#39;d be
+      removing Debian, which was the OS that I configured when I first
+      dualbooted the machine, so I assumed they were linked somehow and I would
+      need to reinstall it. The process I followed was:</p>
+      <ul>
+        <li>Create a GParted Live USB</li>
+        <li>Launch GParted reconfigure my partitions</li>
+        <li>Open the terminal in the live USB and reinstall Grub</li>
+      </ul>The 3rd point being a bit of a &quot;rest of the owl&quot; I
+      wasn&#39;t sure what to expect. GParted thankfully warns you
+      &quot;you&#39;re probably going to break stuff see our FAQ&quot; which
+      had a section on reinstalling grub. Reading that the 3rd part became:
+      <ul>
+        <li>mount the linux OS</li>
+        <li>bind the live dirs that are needed: <code class='inline'>/dir /sys
+        /proc</code></li>
+        <li>chroot into the mounted folder</li>
+        <li>run <code class='inline'>grub-install &lt;device&gt;</code></li>
+      </ul>But what I failed to realize (stupidly in hindsight) was the
+      &quot;device&quot; is the Master Boot Record (MBR) device. So in my case
+      Windows or <code class="inline">/dev/sdb</code>. I had assumed it was the
+      device of the linux install so I tried that and got notified my EFI boot
+      directory didn&#39;t look like an EFI partition... and from here it was
+      rabbit holes.
+      <h3>Where is my EFI partition?</h3>
+      <p>I have a fairly old Windows 7 install that has been upgraded to
+      Windows 10 during this whole journey. I&#39;ve been meaning to reinstall
+      it (on a larger drive). But rather than having a few partitions on my
+      drive (typically having a boot partition) I just have the one (and a
+      recovery partition). Its marked as boot, and even mounted to <code class=
+      'inline'>/boot/efi</code> I found when I was able to boot into Manjaro
+      again. But it made no sense to me. If I needed an EFI partition, why was
+      my efi pointed to the root of my Windows C drive? The rabbit hole
+      consisted of:</p>
+      <ul>
+        <li>Creating a 200MB Fat32 Boot partition</li>
+        <li>Mounting that as my efi-directory</li>
+        <li>Reinstalling grub (again on my Linux device)</li>
+        <li>Eventually getting it to boot straight into Manjaro</li>
+        <li>Modifying my <code class='inline'>/etc/fstab</code> to mount my
+        boot/efi to the new partition (oops)</li>
+        <li>Repeating the above steps 5 times hoping something would be
+        different</li>
+        <li>Eventually finding in a forum that grub should be on the
+        MBR...</li>
+      </ul>
+      <h3>The Fix and Final Steps</h3>
+      <p>The fix was to basically follow the steps above but use the MBR:</p>
+      <ul>
+        <li>Boot GParted Live USB</li>
+        <li>Properly configure any partitions (this case delete the
+        &quot;EFI&quot; partition)</li>
+        <li>Mount the linux device</li>
+        <li>Bind the necessary live dirs to the linux mount</li>
+        <li>Run grub-install to the MBR device</li>
+        <li>Reboot</li>
+      </ul>It was that misunderstanding about the MBR that sent me on a path,
+      but now I at least feel semi-confident in changing around my OSs knowing
+      how to fix Grub. But what bout the Fstab?
+      <p>Like all true movie monsters, my stupidity came back for the final
+      scare. I booted into Manjaro, from Grub! to have it crash on me. It
+      couldn&#39;t mount one of the devices! The deleted partition! I was in
+      the recover shell and was able to modify the Fstab to point back to the
+      correct boot/efi device. (Thankfully I was familiar with Fstab to begin
+      with). But editing two files in a super-low-res terminal is not my idea
+      of fun (okay, maybe it is).</p>
+      <h3>Conclusion</h3>
+      <p>One of my new years resolutions was to learn more about my system. So
+      lighting a fire I had to put out was a great way to get some more
+      knowledge on maintence for grub/dualbooting.</p>
+    </article>
+  ]]>
+  </description>
+ </item>
+ <item>
+  <title>Manjaro Experiment</title>
+  <link>https://www.senders.io/blog/2020-12-17/</link>
+  <guid isPermaLink="true">https://www.senders.io/blog/2020-12-17/index.html</guid>
+  <pubDate>Thu, 17 Dec 2020 00:00:00 -0500</pubDate>
+  <description>
+  <![CDATA[
+    <article>
+      <h2>Manjaro Experiment</h2>
+      <p>After years on Debian, running i3, I decided to try out a more
+      traditional Linux setup, and take a stab at gaming on Linux. I chose
+      Manjaro for a few reasons:</p>
+      <ul>
+        <li>It&#39;s not Debian based (it&#39;s arch btw /s)</li>
+        <li>It&#39;s still on Systemd so I won&#39;t lose that familiarity</li>
+        <li>For gaming it comes with pretty up to date drivers and setup for
+        running Steam games</li>
+        <li>It has a KDE installation which is what I wanted to run</li>
+      </ul>
+      <h3>Why &quot;not Debian&quot;</h3>
+      <p>Debian is home for me. I have used it for years on both work machines,
+      servers, personal desktop. But it comes with its own quirks. Starters - I
+      am running base Debian, not a Debian based system, which generally means
+      some packages are out of date. To get around this I run Sid/Unstable.
+      This hasn&#39;t been a particular issue, but sometimes there are version
+      conflicts and other just nuisances and no real <i>easy</i> way to get
+      every package in the proper version configuration. This was a particular
+      pain-point with getting Steam (nonfree too which adds another layer of
+      configurations) Wine and a few other packages all set up. Plus
+      32-bit!</p>
+      <h4>i3</h4>
+      <p>I have been using i3 as my window manager and without really any other
+      desktop environment programs. My login is the typical tty debian login.
+      But running i3 and then having windows appear, especially game windows
+      which can be tempermental, getting tiled to have to break it out again is
+      just a hassle. While I could&#39;ve gone with another Debian base running
+      a proper desktop environment + window manager I figured that&#39;d be
+      boring and I&#39;d just be trying out the programs and not the Linux,
+      which is half the fun.</p>
+      <p>That being said. i3 <i>is</i> Linux for me. Being able to just move
+      between windows with a macro and every bit of it just being intutive
+      (after you&#39;ve learned!) is a productivity booster. Which is why I
+      still use it on my work machine, and can&#39;t see myself ever switching
+      off.</p>
+      <h3>KDE</h3>
+      <p>I&#39;ve used Gnome and XFCE as desktop environments before, and
+      they&#39;re fine, but I&#39;ve always like the customability,
+      flexibility, and polished look of KDE.</p>
+      <h4>Setting up KDE for an i3 addict</h4>
+      <p>By default KDE isn&#39;t really too hard to &quot;get used to&quot;
+      since it feels like any other OS, especially a windows setup. But the
+      main thing I needed to change is the <code class=
+      'inline'>meta+&lt;key&gt;</code> commands.</p>
+      <ul>
+        <li>Remapping the Virtual Desktop changes</li>
+        <li>Remapping the KWin window focuses</li>
+        <li>Remapping the KWin move to desktop</li>
+        <li>Installing DMenu</li>
+        <li>Shrinking the &quot;start bar&quot; panel</li>
+        <li>Removing Pager</li>
+        <li>Changing Task Manger to Window List</li>
+        <li>Configuring Desktop Layout to &quot;Desktop&quot; (this removes the
+        icons)</li>
+      </ul>Doing this helped make me feel at home so far, and not have to
+      retrain my brain.
+      <h4>Some of the key remappings</h4>
+      <p>Setting up the KWin window keymapping was really what made me feel at
+      home. For the first few hours with it, I felt as limited in my
+      productivity as with Windows. KDE and Windows share by default a lot of
+      the same keymappings around window manipulation and virtual desktop
+      changes. <b>Switch to desktop N</b> setting this as <code class=
+      'inline'>meta+&lt;N&gt;</code> where N is the dekstop 1-10 (0). <b>Switch
+      to Window to the Left/Right/Up/Down</b> This was one I was nervous
+      wouldn&#39;t exist as a keybind. But What was <code class=
+      'inline'>meta+alt+&lt;dir&gt;</code> was mapped to without the alt. This
+      allowed for the very annoying lack of ability to just jump between
+      browser and terminal, or especially two separate terminals. <b>Quit
+      Window</b> with <code class='inline'>meta+shift+Q</code>, <b>Tile
+      Window</b> command to use the Shift key rather, especially as
+      <code class='inline'>meta+&lt;dir&gt;</code> was overwritten by the focus
+      switching.</p>
+      <h3>Manjaro</h3>
+      <p>So I went with KDE Manjaro. Manjaro aims for the gaming desktop
+      experience. Arch is new for me, so I feel that would be something to
+      adjust to and learn.</p>
+      <h2>Gaming</h2>
+      <p>It has only been a day with it as I am writing. But I was able to get
+      a fair amount of the fighting games I wanted to play work.</p>
+      <h3>Proton + Steam</h3>
+      <p>So far my main focus has been running the fighting games I noodle
+      around on in Steam. To do this I launched Steam and installed the proton
+      and setup to run all games, regardless of compatibility. None of the
+      games I hoped to run had worked this way. I then opt&#39;d into the beta
+      for Proton running the experimental builds, which should generally have
+      the more up-to-date tunings for games. With this setup I was able to get
+      Soulcalibur VI to work. Battle for the Grid and Dragon Ball FighterZ both
+      had launching issues. So I looked around and found <a href=
+      "https://github.com/GloriousEggroll/proton-ge-custom/">Proton Ge
+      Custom</a> which is a custom fork of Proton that contains custom settings
+      and tweeks for various games. One of which is Battle For the Grid which
+      is how I found it. Using this I was able to play every game except Dragon
+      Ball FighterZ! A callout for Dead or Alive 6 which is performing
+      questionably. It can run and isn&#39;t actually too bad, but in windowed
+      or borderless it stutters and drops frames.</p>
+      <h4>Other issues</h4>
+      <p>Even on Windows there are issues with some games and your standard
+      configurations. Disabling Steam Overlay and adjusting the Steam Input
+      Setting on some games helped get some games working.</p>
+      <h3>Conclusion</h3>
+      <p>Gaming on Linux is still not great. Its MILES ahead of where it was
+      even a few years ago when I setup this PC. And I think it will take some
+      adjustment getting a feel for an i3less workflow.</p>
+      <h2>Update!</h2>
+      <h3>NTFS mounting</h3>
+      <p>Update! I got DOA and a few other games to run a bit smoother by
+      remounting my NTFS drives properly. I ended up using the following for my
+      /etc/fstab configuraiton for my NTFS drives: <code>UUID=&lt;drive-id&gt;
+      /mount/path ntfs
+      uid=1000,gid=1000,rw,user,exec,async,locale=en_US.utf8,umask=000 0
+      0</code> I had noticed that both steam and mount.ntfs was running at
+      20-40% CPU while not really doing anything. And then upwards of 80%
+      during gameplay.</p>
+      <h3>i3 Compatibility</h3>
+      <p>As I spend more time using the OS I made a few more adjustments:</p>
+      <ul>
+        <li>Removed everything except the Clock and System Tray.</li>
+        <li>I added KRunner to <code class='inline'>meta+space</code> to ease
+        running KDE specific programs that I can&#39;t be bothered to memorize
+        the name of</li>
+        <li>Back and forth on forcing &quot;No border&quot; on all windows.
+        Part of the reason I moved away from i3 was so that I had better
+        floating window management. And doing this would basically put me in an
+        equally hard to manage system for floating game windows. So until I
+        find a plugin that makes small taskbar/borders for the windows I&#39;ll
+        be sticking with the default.</li>
+        <li>On Manjaro at least: UNINSTALL mesa-demos! <code class=
+        'inline'>sudo pacman -R lib32mesa-demos mesa-demos</code> This package
+        had the annoying &quot;fire&quot; demo which made dmenu opening firefox
+        a pain in the ass.</li>
+      </ul>The biggest difference was removing the Application Launcher from
+      the main panel. Having it there really felt like a crutch for running
+      programs. It is equal I would say to running apps as dmenu via
+      <code class='inline'>meta+d</code> vs just <code class=
+      'inline'>meta</code> to launch the Application Launcher. However, the
+      bulky UI of it, even using just Window List, took away from the look/feel
+      I was going for.
+    </article>
+  ]]>
+  </description>
+ </item>
+ <item>
+  <title>Bread Blog (First post)</title>
+  <link>https://www.senders.io/blog/bread/</link>
+  <guid isPermaLink="true">https://www.senders.io/blog/bread/index.html</guid>
+  <pubDate>Mon, 17 Feb 2020 00:00:00 -0500</pubDate>
+  <description>
+  <![CDATA[
+    <article>
+      <h2>Bread</h2>
+      <p>I decided to make a singular dedicated page to my recent bread bakes.
+      I am trying to at least keep a log of each bake, what went wrong/right in
+      hopes of nailing a recipe that works best for me.</p>
+      <h3 id="2020-02-17">February 17, 2020</h3>
+      <p>First post! I have done four bakes in 2020 that are worth mentioning.
+      Three that ended up rather successful and one lesson learned. Because
+      this is my first post its containing three very similar bakes that were
+      effectively the same recipe</p>
+      <h4>Boules</h4>
+      <p>I have made two very good boules in 2020. I first made a pate
+      fermentee using the following ratio using 50% of my total flour weight:
+      (500g, so 250g).</p>
+      <table class="bake-info">
+        <caption>
+          Pate Fermentee
+        </caption>
+        <thead>
+          <tr>
+            <th>Item</th>
+            <th>%</th>
+          </tr>
+        </thead>
+        <tbody>
+          <tr>
+            <td>Flour (Bread)</td>
+            <td>100%</td>
+          </tr>
+          <tr>
+            <td>Water (Room temp)</td>
+            <td>70%</td>
+          </tr>
+          <tr>
+            <td>Yeast (Instant)</td>
+            <td>0.55%</td>
+          </tr>
+          <tr>
+            <td>Salt</td>
+            <td>10%</td>
+          </tr>
+        </tbody>
+      </table>To make the pate, I mixed all the dry ingredients together, then
+      added the room temperature water. I let that loose mixture rest for 15
+      minutes. Once it was rested, I wet my hands and bench (lightly) and
+      kneaded for roughly 8 minutes. After kneading I tightened the dough into
+      a boule and let it sit in a plastic wrap covered greased bowl for an
+      hour. After an hour I placed it into the friged, as is.
+      <p>The next day, basically in the AM when I had time to bake I took the
+      dough out of the fridge, cut it into smaller bits (four), and let it come
+      to room temperature (ish, about an hour). I prepped the same ratio above
+      except with warmer water (~108°F). When I added the water to the dry
+      ingredients I added the pate along with it. I used the curved edge of my
+      scrapper to cut into the pate and incorporate it fully. Once I felt it
+      was all one loose mess I let it sit for 15 minutes. After the 15 minutes
+      I wet my hands, and bench, and began to knead the dough for 8 minutes.
+      After kneading I formed the dough into a boule and placed it into a
+      greased bowl covered in plastic wrap. I let that sit on my bench for 90
+      minutes or so. After the first proof I dampened my bench and took the
+      risen dough out of the bowl and lightly pressed it into a thick circle. I
+      then took the, what would be, corners of the mass and folded them into
+      the center, rotating after each fold. This process creates a boule shape
+      while creating tension. I would continue to do this about 8-10 times
+      really until it felt like I couldn&#39;t grab anymore/it wouldn&#39;t
+      stick. Then I flipped the dough over and tightened the boule in a
+      scooping motion as I rotated it. Then placed it into my floured banneton.
+      I let it rise again for about 45 minutes. Around the 30 minute mark I
+      would preheat my oven to 500°F. Once the oven was preheated and its been
+      at least 45 minutes. I flipped out the dough onto the peel (dusted with
+      corn flour) and scored it. I then misted the top with a spray bottle of
+      water and slid it onto my baking stone. While preheating the oven I also
+      set a kettle to boil some water which I poured into the preheating baking
+      sheet on the bottom rack. I set the timer for 10 minutes and every two
+      minutes or so I would add more boiling water. After 6 minutes I rotated
+      the dough using the peel (careful not to damage it). And misted the
+      facing side with the spray bottle (I found the back is lighter so this
+      helps make the entire steaming more even). After the turn and mist I add
+      twenty minutes to my timer and drop the temperature to 450°F.</p>
+      <p>This produces a nice, well risen boule with a golden brown crust.</p>
+      <p>I skipped the pate in my most recent bake and just did 100% (500g)
+      starting from &quot;day 2&quot;. I also subtituted 100g with AP
+      flour.</p>
+      <h4>Baguettes</h4>
+      <p>I actually did the boule recipe first for my baguettes. I did aiming
+      for 1000g flour so my pate was with 500g and a 50/50 AP/Bread mix. I
+      screwed up the ratio for yeast and added almost double. The recipe is
+      essentially the same with the final steps being the difference.</p>
+      <p>After the first proof I sliced the dough into three chunks. Then I
+      formed those into boules and let them sit for 5 minutes. After resting I
+      then rolled them into batards and let them sit for 10 minutes. After 10
+      minutes I then rolled them into baguettes and placed them on the baguette
+      sheet. And then baked them. After letting them rise for 45 or so
+      minutes.</p>
+      <h4>Accidents</h4>
+      <p>Baguette rolling is hard. And I need to let the dough rest longer
+      between each shape.</p>
+      <p>1000g for three ~15 inch baguettes is too much. I would do 750g next
+      time.</p>
+      <p>Proofing on the sheet is not recommended in the future as the rose
+      really well (probably all that extra yeast!) and ended up sticking
+      together.</p>
+      <p>I broke my oven light with my spray bottle. And I ruined my cast irons
+      seasoning usnig that for the boiling water.</p>
+      <h4>What to do next time</h4>
+      <p>Next french style boule, I want to do a pate again. As I&#39;ve only
+      done it for one boule loaf. And I want to try making two loafs from
+      it.</p>
+      <h2>Resources</h2>
+      <p><a target="_blank"
+         href="https://bakewithjack.co.uk">Bake With Jack&#39;s Youtube
+         Channel</a> really helped me shape up my shaping up. And the core of
+         the pate+french bread recipe is based on that from <a target="_blank"
+         href=
+         "https://www.goodreads.com/book/show/39910.The_Bread_Baker_s_Apprentice">The
+         Bread Baker&#39;s Apprentice</a></p>
+    </article>
+  ]]>
+  </description>
+ </item>
+ <item>
+  <title>remember/recall - what could’ve been a command line tool</title>
+  <link>https://www.senders.io/blog/2020-01-13/</link>
+  <guid isPermaLink="true">https://www.senders.io/blog/2020-01-13/index.html</guid>
+  <pubDate>Mon, 13 Jan 2020 00:00:00 -0500</pubDate>
+  <description>
+  <![CDATA[
+    <article>
+      <h2>remember/recall - what could&#39;ve been a command line tool</h2>
+      <p>During a meeting at work when I realized I often forget useful
+      commands. So I had the bright idea to create a command line tool that
+      would basically append a file with the command you wanted to remember
+      that you could search over later if you wanted to recall a certain
+      command. I figured I could it could just be a simple bash script that
+      recalls your bash-history and appends it to a file, all things that are
+      incredibly easy to do... or so I thought.</p>
+      <h3>Look before you leap</h3>
+      <p>This article is a reminder to myself to test the core functionality
+      first, before decorating your program/script with all those bells and
+      whistles. While I did learn a lot in the process it is always a good to
+      check the basics first.</p>
+      <h3>What went right</h3>
+      <p>I actually ended up learning a lot during the development of the
+      (never finished) tool. I had never used <code>getopts</code> inside a
+      script before, which turned out to be extremely intuitive. That was all
+      that went right...</p>
+      <h3>What went wrong</h3>
+      <p>Literally, everything else that could&#39;ve went wrong did. The
+      &quot;project&quot; was a single bash script roughly 160 lines long
+      before I found out it wouldn&#39;t work. It was a series of flags that
+      enabled actions that called functions, some of which ended the script
+      either successfully or not. It wasn&#39;t necessarily a mess to read (I
+      tried to make it that every function ended up in an exit so I knew if I
+      entered I would need to assume it terminated) but it was hard to follow
+      when writing. I tried to allow it so you could default an action to make
+      the CLI intuitive which lead to a messy set of if/elses and switch
+      cases.</p>
+      <h4>You can&#39;t access un-committed bash history</h4>
+      <p>History command in a bash shell commits the history at the end of the
+      session. This makes sense once you know this, there are a lot of reasons
+      saving the commands to file after every execution is probably not the
+      best idea. However, it can be enabled with a flag when you enable a shell
+      session. But I didn&#39;t want to build a tool that required me to
+      remember I had to add something to my bash_profile before it would work.
+      I wanted something I could just copy onto a new machine and have access
+      to its functionality.</p>
+      <h3>Lesson learned</h3>
+      <p>While developing a tool to help me remember things, I learned
+      something I cannot forget: Test the core, simplest functionality first.
+      Before you do anything validate what you&#39;re trying to do will work.
+      Because after building all of these fancy bells and whistles, if it
+      can&#39;t do the basics, there is no point.</p>
+    </article>
+  ]]>
+  </description>
+ </item>
+ <item>
+  <title>Lisps, Assembly, C, and Conlangs</title>
+  <link>https://www.senders.io/blog/2019-12-09/</link>
+  <guid isPermaLink="true">https://www.senders.io/blog/2019-12-09/index.html</guid>
+  <pubDate>Mon, 09 Dec 2019 00:00:00 -0500</pubDate>
+  <description>
+  <![CDATA[
+    <article>
+      <h2>Lisps, Assembly, C, and Conlangs</h2>
+      <p>I had originally hoped to do more blogging as a way of practicing my
+      writing and an incentive to do more hobby programming. The intent was
+      never to make this site solely programming, I had actually a few scrapped
+      posts about baking and guitar that just didn&#39;t get anywhere... but
+      that being said I did have a fair amount of hobbying in 2019 that I can
+      share some unfiltered, semi-structured thoughts on.</p>
+      <h3>Racket, 80x86, and even more C</h3>
+      <h4>Racket</h4>
+      <p><a target="_blank"
+         href="https://racket-lang.org">Racket</a> is a general-purpose
+         lisp-like language. I had began messing around in it with the
+         intention of creating a similar language to <a target="_blank"
+         href="https://docs.racket-lang.org/scribble/">Scribble</a> a document
+         authoring language written in Racket. I made <a target="_blank"
+         href="https://xkcd.com/1205/">the classic mistake</a> of trying to
+         create a productivity tool rather than just do the task I had
+         originally intended to do. It was interesting messing around in a
+         lisp/functional language which I haven&#39;t really used in a long
+         time. I wish I had more insightful things to say about it or project
+         to share. Either way its very worth the look.</p>
+      <h4>6502 -&gt; 80x86 -&gt; Commander X16</h4>
+      <p>I wanted to play around with writing some assembly language programs.
+      I looked back at the NES tutorials and tried writing some basic
+      hello-world programs for it, but never really came out with anything
+      worth while. I booted up dosbox and tried experimenting in some DOS
+      programming to get a kick of nostalgia. On my way over to a friends
+      apartment I stumbled across an 80x86 reference book which I took home and
+      dug into. I made some decent progress in, relative to my 6502 learning.
+      But this was in the summer, and I was preparing for what would turn into
+      a pretty time consuming move. After my move, my puppy, and some youtube,
+      <a target="_blank"
+         href="http://www.the8bitguy.com">The 8-Bit Guy</a> made a video about
+         his 8 Bit computer project <a target="_blank"
+         href="http://www.commanderx16.com/X16/Ready.html">Commander X16</a>
+         which I started looking into. Like all the other assembly language
+         projects they never amounted to more than a few print statements or
+         colors on the screen. But X16 is something I am going to keep an eye
+         on in 2020.<br>
+      <a target="_blank"
+         href="https://eater.net/">Ben Eater</a> also started a <a target=
+         "_blank"
+         href="https://eater.net/6502">6502 video series</a> which was amazing,
+         and thankfully my learnings from earlier in the year made the content
+         very understandable. In summary, I spent a lot of 2019 reading and
+         watching a lot of content about assembly language programming, but
+         never really did anything with it.</p>
+      <h4>Never ending C</h4>
+      <p>Without much to really say on the topic, I kept writing small programs
+      in C throughout the year. I spent a lot of time debugging and
+      troubleshooting a prefix terminal calculator with the intention of making
+      it a full utility to use on the command line / from within scripts. You
+      could do simple math without opening up x-calc, which I find myself doing
+      to check some quick math. Example code: <code class="inline">calc &quot;+
+      1 1&quot;</code>. To me this was far cleaner than writing: <code class=
+      'inline'>echo $((1+1))</code>. The big ideas I had for it was adding a
+      REPL and making it a command line calculator tool where you could get the
+      features of a standard calculator with store and recall functions. This
+      project involved making two stacks: the operations and the numbers.
+      Implementing two stacks from scratch was interesting and I may upload the
+      source and link it in an update. Overall it was full of breaks, bugs,
+      wrong turns, and bizarre memory issues. So needless to say it was a fun 3
+      days of programming.</p>
+      <h3>Non Programming Writing</h3>
+      <p>The project that soaked up a majority of my writing time, which sadly
+      should&#39;ve been documented here, was my conlang / world-building
+      project &quot;Tyur&quot;. This project spawned out of sci-fi story ideas
+      that, of course, never went anywhere (due to my poor dialog writing, and
+      writing in general) and my interest in language history. I have been
+      reading <a target="_blank"
+         href=
+         "https://www.goodreads.com/book/show/1831667.The_Horse_the_Wheel_and_Language">
+      The Horse the Wheel and Language</a> by David W. Anthony, which goes into
+      the history around Proto-Indo-European. It can be a bit dense so I had
+      been reading it on and off, and during the off times also started
+      <a target="_blank"
+         href=
+         "https://www.goodreads.com/book/show/18635317-the-origins-of-language">The
+         Origins of Language: A Slim Guide</a> by James R. Hurford, which tries
+         to provide insights on the evolutionary concept of language. Both of
+         these provided some fodder for the idea of creating my own <a target=
+         "_blank"
+         href="https://en.wikipedia.org/wiki/Constructed_language">conlang</a>.
+         My conlang is &quot;Tyur&quot; the language spoken by the Tyur people.
+         This process has really been a mix of world-building around the Tyur
+         and some fun fantasy mini story ideas similar to The Lord of the Rings
+         and old Warhammer Fantasy worlds. This however began my adventure down
+         the rabbit hole of trying to figure out how to create a font so I can
+         write more here about it. The documentation on this conlang is a mix
+         of loose-leaf folded in my bag that I scribble on when I get an idea.
+         So figuring out a proper way of building the alphabet and some root
+         words to start a dictionary are my current goals for the remainder of
+         the year/ start of 2020.</p>
+      <h3>Closing</h3>
+      <p>In closing, I think despite not writing much here, I messed around
+      with some interesting languages this year, and hope I can hobby more in
+      2020.</p>
+    </article>
+  ]]>
+  </description>
+ </item>
+ <item>
+  <title>Venturing back into C</title>
+  <link>https://www.senders.io/blog/2019-02-17/</link>
+  <guid isPermaLink="true">https://www.senders.io/blog/2019-02-17/index.html</guid>
+  <pubDate>Sun, 17 Feb 2019 00:00:00 -0500</pubDate>
+  <description>
+  <![CDATA[
+    <article>
+      <h2>Venturing back into C</h2>
+      <p>For the past two weeks or so I have been diving back into C
+      programming. I&#39;ve found it to be a very fun and refreshing experience
+      coming off of a slog of Java 11 updates at work. I&#39;ve found comfort
+      in its simplicity and frustrations in my &quot;I can do this without an
+      IDE&quot; mindset.</p>
+      <p>I started C programming in College during a 8 AM course of which all I
+      can remember is that it was at 8 AM. I loved programming in C, dealing
+      with memory, pointers, no strings, structs, no strings, linking, no
+      strings. It was a really interesting difference from the web and Java
+      programming I had done previously. Obviously the lack of the
+      &quot;string&quot; type made things interesting and initially a challenge
+      for me back then. In my most recent endevour I found <code class=
+      'inline'>char *</code> to be perfectly suitable for every case I came
+      across. It was usually a separate library that was failing me, not a
+      fixed char array. This was mostly due to the types of programs I was
+      writting in college were text adventures where all of what I did was
+      using strings. And my lack of understanding of what was actually
+      happening in C was really what was causing all the issues.</p>
+      <h3>The Project</h3>
+      <p>I started working on an application I had been meaning to develop
+      called <a href=
+      'https://github.com/s3nd3r5/reminder'><b>reminder.d</b></a>. This daemon
+      would monitor for reminder notifications I would send via a CLI. It queue
+      them up based on some time set to send the notification. I ended up
+      writing both the CLI and the daemon in this past week, both in C.</p>
+      <h4>The Beginning</h4>
+      <p>This project started with an outline (as a README) which I think was
+      the reason this ended up as an actually successful project. I had been
+      thinking about this for a long time, and had begun using a calendar to
+      keep track of long term reminders/dates etc. First, I outlined the
+      architecture &quot;how would I actually do want to send myself
+      remidners&quot;. Since half my day is spent infront of a computer, with a
+      terminal open or at least two keystrokes away, a CLI would do the trick.
+      Then how do I actually send myself notifications... writing them down. So
+      I can use the CLI to write to a file and have a daemon pick up the
+      changes and notify me once it hits the desired time posted.</p>
+      <h4>The CLI</h4>
+      <p>The CLI <b>remindme</b> took in messages and appened them to a file.
+      This file would be monitored by the daemon later on. Each reminder
+      consisted of three parts:</p>
+      <ul>
+        <li><i>Message</i> - The body of the notification.</li>
+        <li><i>Time</i> - This is either a datetime or a period for when the
+        notification should send.</li>
+        <li><i>Flag</i> - The Flag was set by the CLI when written to the file,
+        this marks the status of the reminder</li>
+      </ul>After a notification is written the daemon will pick up the
+      notification and notify if the time set is now/past.
+      <h4>The Daemon</h4>
+      <p>The Daemon <b>reminder-daemon</b> opened and tailed a file at
+      <i>/usr/local/etc/reminder.d/$USER.list</i>. It would tail the file
+      monitoring any incoming lines parsing them into reminders. The syntax of
+      the reminder is <code class='inline'>FLAG EPOCHSEC MESSAGE</code> .
+      Tokenizing on spaces it was then added to a linked-list sorted by time.
+      Every second it checks the file for any new lines, adding reminders as
+      they come in, then check the head of the list. If the reminder at the
+      head is ready to be notified the daemon pops it off the list and sends
+      the notification. After a notification is sent successfully the daemon
+      modifies that line in file updating its <code class='inline'>FLAG</code>
+      to &#39;d&#39;. This is so when the daemon starts back up it skips the
+      reminder. Notifications are sent via <i>libnotify</i>: <code class=
+      'inline'>Reminder - $DATETIME</code> with the message body. They are also
+      set to last until dismissed manually, this way if were to walk away, once
+      I sat down I&#39;d see the stale reminder waiting.</p>
+      <h4>Future Plans for Reminder.d</h4>
+      <p>Having a system to create and send myself notifications is incredibly
+      useful but having them limit to just the computer I sent them on makes
+      them a very limited. I have been using them at work for the last few days
+      and its nice to be able to tell myself to remeber to email a person after
+      lunch. But I would like to be able to tell myself things later in the
+      day. I have planned since the beginning to have a remote server I can
+      sync the reminders through. In addition having an application running on
+      my phone that also gets and sets reminders.</p>
+      <p>Remote syncing would change entirely how I deal with reminders in the
+      file.</p>
+      <pre>
+<code>
+ struct remnode { 
+   long fileptr; 
+   struct reminder* reminder; 
+   struct remnode* next; 
+ }; 
+      </code></pre>
+      <p>Is currently the struct I use to keep track of the reminders.
+      <code class='inline'>fileptr</code> is the line of the file where the
+      reminder is, so I can <code class='inline'>fseek</code> back to the
+      location and overwrite its flag. I cannot currently think of a way to
+      keep the files perfectly identical without introducing countless
+      edgecases. What I do think might work is providing some form of UUID.
+      When a remote pull tells the systems daemon that a notification has been
+      cleared it can mark it by ID. Right now the fileptr is effectively its
+      ID, but that will not work anymore. A composite key of the daemons own id
+      (generated at install?) with a new ID of each incoming message would help
+      ensure uniqueness across ID generations across multiple systems.</p>
+      <h3>What I&#39;ve learned</h3>
+      <p>First off, I probably could&#39;ve done this in bash. With
+      <code class='inline'>date notify-send git awk cron</code> and a few other
+      useful commands I could very easily keep track of file changes and push
+      notifications at a certain time. But seeing as I scrap together bash
+      scripts all the time I though C would make things more fun.</p>
+      <p>Writing manpages was the probably the most fun I had working on the
+      project. They have a simple elegance to them, similar to C. That being
+      said you could FEEL the age of the language. Every single decision is
+      there to make things simple to parse. Even compared to modern markup the
+      explicit direct nature of the language made it so easy to learn. Every
+      tag served a specific purpose and each objective I had had a flag to do
+      it.</p>
+      <pre><code>
+.TH REMINDME 1 
+.SH NAME
+ remindme \- Send yourself reminders at a specific time on one or more devices
+.SH SYNOPSIS
+.B remindme
+[\fB\-t\fR \fITIME\fR]
+[\fB\-\-at \fITIME\fR]
+[\fB\-i\fR \fIPERIOD\fR]
+[\fB\-\-in\fR \fIPERIOD\fR]
+        </code>
+      </pre>
+      <p>Libnotify was insanely easy to work with, from a programming
+      perspective.</p>
+      <pre><code>
+  NotifyNotification *notif = notify_notification_new(title, rem-&gt;message, &quot;info&quot;);
+  notify_notification_set_app_name(notif, APP_NAME);
+  notify_notification_set_timeout(notif, NOTIFY_EXPIRES_NEVER);
+
+  GError* error = NULL;
+  gboolean shown = notify_notification_show(notif, &amp;error);
+        </code>
+      </pre>
+      <h3>In closing</h3>
+      <p>Overall, this was an extremely fun first week of engineering. I look
+      forward to what I am able to do syncing and sending notifications on
+      android.</p>
+      <p>For the zero people reading, grab a beer and outline your project.
+      Full through. Think about the how, then write it down. Don&#39;t worry
+      about getting in the weeds of how to write a manfile, thats what is fun
+      about programming. I thought I botched my debian/sid environment
+      uninstalling and reinstalling a notification daemon. Infact I think its
+      caused me to take a stance on the whole systemd thing. Either way, start
+      a private repo (they&#39;re free now) write a README and a LICENSE file
+      and iterate on the README until you realize &quot;oh shit this is
+      something I can do&quot;. Then do it. This project still needs some work,
+      but for an MVP, its actually done. And now I can dive in the deep end of
+      trying to actually make it easy to setup on a fresh PC. Or dive into
+      modern android development and server syncing...</p>
+    </article>
+  ]]>
+  </description>
+ </item>
+ <item>
+  <title>First! A New Years Resolution</title>
+  <link>https://www.senders.io/blog/2019-01-21/</link>
+  <guid isPermaLink="true">https://www.senders.io/blog/2019-01-21/index.html</guid>
+  <pubDate>Mon, 21 Jan 2019 00:00:00 -0500</pubDate>
+  <description>
+  <![CDATA[
+    <article>
+      <h2>First! A New Years Resolution</h2>
+      <p>I like to write small hacky things from time to time when I have a
+      weekend to myself, or a day, or an hour... But I never had a place to put
+      them or the push to complete them beyond their initial hack. So I decided
+      I should write a blog about it.</p>
+      <p>Also for work I had to write some prose about myself, something beyond
+      a technical document or RFC and I realized I am shit at writing my
+      thoughts outside of a very direct specific technical way.</p>
+      <p>I am not sure if it is the age of the internet I grew up in where most
+      of my written communication was informal or for school. But my personal
+      writing skills are trash and this is my attempt to kill all the birds
+      with one stone</p>
+      <h3>What can be expected here</h3>
+      <p>My intentions for this site beyond just a landing page with my resume,
+      I hope to upload some code-snippets from things I found interesting,
+      ideally some recordings, drawings, and model-painting.</p>
+      <h3>How often do I intend to update this blog</h3>
+      <p>Ideally, whenever I have something that I feel is worth sharing. But
+      for the sake of my resolution I want to do at least one post a month, and
+      if I am keeping my other resolutions I should have content to put
+      here</p>
+      <h3>Designing my site</h3>
+      <p>Designing this blog actually took way more time than it should have.
+      It began when I wanted to tackle a <i>javascriptless</i> website. And I
+      found that a bit difficult if I wanted to have code with syntax
+      highlighting. So I wrote a python script to generate <code class=
+      'inline'>&lt;pre&gt;</code> tag wrapping Java code with partial syntax
+      highlighting.Possibly mistaking <code class='inline'>highlight.js</code>
+      usage documentation. But I would like to prevent having javascript on my
+      main website keeping it as simplistic as possible.</p>
+      <p>I test the site using both <code class='inline'>tidy</code> and
+      <code class='inline'>nginx</code> via <code class='inline'>docker</code>.
+      Using tidy I can validate the html (making sure I didn&#39;t miss any
+      tags etc) and tidy up any odd spacing. And then visually test it running
+      nginx. Having it served up similarly to s3 all the paths will work, and
+      is insanely easy to setup! If you&#39;re reading this and have anything
+      beyond a simple html file I recommend running docker + nginx over any
+      javascript server.</p>
+      <p>Then I deploy the site through <code class='inline'>s3-cli</code>
+      Which is simple and to the point.</p>
+      <h3>In Closing</h3>
+      <p>I wanted to include more but I ran out of time today to write more, I
+      will probably update this article with more information (and an updated
+      timestamp). Or just make another post of my code highlighting task.</p>
+    </article>
+  ]]>
+  </description>
+ </item>
+</channel>
+</rss>
diff --git a/www/blog/index.html b/www/blog/index.html
index d2252ea..d266b8e 100644
--- a/www/blog/index.html
+++ b/www/blog/index.html
@@ -32,6 +32,9 @@
     <article>
       <h1>Blog Index</h1>
       <ol>
+        <li>
+          <a href="/blog/2022-12-31/">2022-12-31 - RSS - A Follow-up</a>
+        </li>
         <li>
           <a href="/blog/2022-12-05/">2022-12-05 - CSS Themes Exist Now!?</a>
         </li>
-- 
cgit v1.2.3-54-g00ecf