summaryrefslogtreecommitdiff
path: root/old
diff options
context:
space:
mode:
authorSteph Enders <steph@senders.io>2024-02-29 09:31:15 -0500
committerSteph Enders <steph@senders.io>2024-02-29 09:31:15 -0500
commit2b39175011422a0d8f96d7f598f46e2a781dd28f (patch)
treedd896a1e35e2ec194bfce829afd61f553652464a /old
parent350a5058cf383733a7e75f753abdcd1cb7aae2c5 (diff)
Initial rework commit: Build Script POC and CSS done
I've created the main CSS layout and a proof of concept for the build script: this will actually build any "done" _post/ file and generate it as a workable HTML file. However, no index file generate, rss, or gemini is implemented
Diffstat (limited to 'old')
-rw-r--r--old/README.md12
-rwxr-xr-xold/compile-md.sh41
-rwxr-xr-xold/docker-run.sh6
-rw-r--r--old/mds/blog/blog-index.md22
-rw-r--r--old/mds/blog/converting-form-mds.md122
-rw-r--r--old/mds/blog/css-themes-exist.md78
-rw-r--r--old/mds/blog/hormone-levels.md43
-rw-r--r--old/mds/blog/how-i-generate-my-rss-feed.md108
-rw-r--r--old/mds/blog/mastodon-and-twitter.md43
-rw-r--r--old/mds/blog/rss-a-follow-up.md108
-rw-r--r--old/mds/blog/top-2022.md241
-rw-r--r--old/mds/wishlist.md54
-rwxr-xr-xold/publish-blog.sh66
-rw-r--r--old/rss/items.xml2514
-rw-r--r--old/templates/blog-footer.html11
-rw-r--r--old/templates/blog-header.html31
-rw-r--r--old/templates/blog.html33
-rw-r--r--old/templates/page-footer.html8
-rw-r--r--old/templates/page-header.html25
-rw-r--r--old/templates/page.html25
-rw-r--r--old/templates/rss/rss-footer.xml2
-rw-r--r--old/templates/rss/rss-header.xml11
-rw-r--r--old/templates/rss/rss-item-footer.xml3
-rw-r--r--old/templates/rss/rss-item-header.xml7
-rw-r--r--old/tidy.conf14
-rwxr-xr-xold/tidy.sh13
-rwxr-xr-xold/update-blog-index.sh1
-rwxr-xr-xold/update-feed.sh79
28 files changed, 3721 insertions, 0 deletions
diff --git a/old/README.md b/old/README.md
new file mode 100644
index 0000000..bed830b
--- /dev/null
+++ b/old/README.md
@@ -0,0 +1,12 @@
+# senders-io
+Personal Homepage, Blog, Resume
+
+# run locally
+To run this locally you'll just need docker!
+
+`$ ./docker-run.sh` will launch an `nginx` server with the contents of `www` loaded into server and can be accessed at [http://localhost]
+
+# deploy
+To deploy run `./deploy.sh` this will require the AWS CLI to be configured properly, so make sure your creds are setup in the environment.
+
+It will also commit and create the `www/version.txt` file with the date of deployment.
diff --git a/old/compile-md.sh b/old/compile-md.sh
new file mode 100755
index 0000000..e0277eb
--- /dev/null
+++ b/old/compile-md.sh
@@ -0,0 +1,41 @@
+#!/usr/bin/env bash
+
+set -ex
+
+if [ $# -ne 4 ]; then
+ echo "./compile-md.sh [page|blog] [title] [in.md] [out.html]"
+ exit 1
+fi
+
+ptype=$1
+title=$2
+in=$3
+out=$4
+
+if [ $ptype == "blog" ]; then
+ cat templates/blog-header.html > $out
+else
+ if [ $ptype == "page" ]; then
+ cat templates/page-header.html > $out
+ else
+ echo "Missing first parameter: [page|blog]"
+ exit 1
+ fi
+fi
+
+pclass=$(echo "$title" | tr [:upper:] [:lower:])
+sed -i "s/PAGE_TITLE/$title/" $out # replace title
+sed -i "s/PAGE_CLASS/$pclass/" $out # replace class
+
+markdown -f fencedcode -f autolink $in >> $out
+
+if [ $1 == "blog" ]; then
+ cat templates/blog-footer.html >> $out
+else
+ cat templates/page-footer.html >> $out
+fi
+
+# update <a> tags that are external vs internal - assumes all internal links us relative routes
+sed -E -i "s/(<a)(.+href=\"http.+\".+>)/\1 rel=\"external noopener noreferrer\" target=\"_blank\" \2/g" $out
+
+./tidy.sh $out
diff --git a/old/docker-run.sh b/old/docker-run.sh
new file mode 100755
index 0000000..b4759c7
--- /dev/null
+++ b/old/docker-run.sh
@@ -0,0 +1,6 @@
+FLAG=-it
+if [ "$1" == "-d" ]; then
+ FLAG="-d"
+fi
+
+docker run $FLAG -v $PWD/www:/usr/share/nginx/html:ro nginx:latest
diff --git a/old/mds/blog/blog-index.md b/old/mds/blog/blog-index.md
new file mode 100644
index 0000000..cc127bb
--- /dev/null
+++ b/old/mds/blog/blog-index.md
@@ -0,0 +1,22 @@
+<article>
+# Blog Index
+
+<!--NEXT-->
+1. [2023-03-18 - Music: A Tour de Chorus](/blog/music/2023-03-18/)
+1. [2023-01-06 - Music: Reworking my THR100HD](/blog/music/2023-01-06/)
+1. [2023-01-06 - How I Generate My RSS Feed](/blog/2023-01-06/)
+1. [2023-01-03 - Music Spotlight: My Top Album 2022](/blog/2023-01-03/)
+1. [2022-12-31 - RSS - A Follow-up](/blog/2022-12-31/)
+1. [2022-12-05 - CSS Themes Exist Now!?](/blog/2022-12-05/)
+1. [2022-11-06 - My Markdown -> HTML Setup](/blog/2022-11-06/)
+1. [2021-01-05 - Manjaro Followup - Breaking things!](/blog/2021-01-05/)
+1. [2020-12-17 - Manjaro Experiment](/blog/2020-12-17/)
+1. [2020-02-17 - Bread Blog (First post)](/blog/bread/#2020-02-17/)
+1. [2020-01-13 - remember/recall - what could've been a command line tool](/blog/2020-01-13/)
+1. [2019-12-09 - Lisps, Assembly, C, and Conlangs](/blog/2019-12-09/)
+1. [2019-02-17 - Venturing back into C](/blog/2019-02-17/)
+1. [2019-01-21 - First! A New Years Resolution](/blog/2019-01-21/)
+</article>
+<div id='footer'>
+ <a href="/blog/feed.rss" rel="rss noopener" target="_blank">RSS Feed</a>
+</div>
diff --git a/old/mds/blog/converting-form-mds.md b/old/mds/blog/converting-form-mds.md
new file mode 100644
index 0000000..b1847bb
--- /dev/null
+++ b/old/mds/blog/converting-form-mds.md
@@ -0,0 +1,122 @@
+## My Markdown -> HTML Setup
+
+A common way I see a lot of people blog, especially micro-blog, is in [markdown](https://daringfireball.net/projects/markdown/).
+
+<figure>
+> Markdown is a lightweight markup language for creating formatted text using a plain-text editor.
+
+<figcaption><cite>--- [Wikipedia | Markdown](https://en.wikipedia.org/wiki/Markdown)</cite></figcaption>
+</figure>
+
+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.
+
+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.
+
+### Writing HTML by hand
+
+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.
+
+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.
+
+I briefly touched on my design process in [2019-01-21 - First! A New Years Resolution](/blog/2019-01-21/) 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.
+
+This article is making the process sound far more difficult than it is -- it's mostly just tedious.
+
+
+```
+<article>
+<h2> Title </h2>
+<p>
+ Some paragraph....
+</p>
+<h3>
+<p> some subsection </p>
+</h3>
+<p> more text </p>
+... etc
+```
+
+Is essentially what the website looks like - you can view the source of this page to see -- it's very simple HTML.
+
+The benefit I found doing this, mostly leveraging [tidy](www.html-tidy.org/), 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.
+
+Only for certain areas (tables, code, quotes) where readability is an issue do I setup custom CSS.
+
+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.
+
+### Micro-blogging in general
+
+At the time of writing this, I have no ported over any of my [Gemini](https://gemini.circumlunar.space/) 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.
+
+#### Gemtext
+
+[Gemtext](https://gemini.circumlunar.space/docs/gemtext.gmi) 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.
+
+It's syntax contained most of what I was actually using here already from HTML:
+
+ 1. headings
+ 1. paragraphs that were wrapped based on page-width
+ 1. links
+ 1. lists
+ 1. quotes
+ 1. preformatted-text / codeblocks
+
+Besides links - it also leveraged the same common syntaxes that markdown did.
+
+#### Gemtext links
+
+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.
+
+<figure>
+> 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.
+
+<figcaption>--- <cite>[gemini.circumlunar.space -- A quick introduction to "gemtext" markup | Links](https://gemini.circumlunar.space/docs/gemtext.gmi)</cite></figcaption>
+</figure>
+
+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 [implemented my own gemini server](https://github.com/s3nd3r5/java-gemini-server).
+
+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.
+
+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!
+
+### Wasn't this about Markdown?
+
+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!
+
+### How I use Markdown
+
+Firstly, this blogpost was written in Markdown (with minimal HTML sprinkled in). Then I render the markdown into HTML using [Discount](https://www.pell.portland.or.us/~orc/Code/discount/). 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.
+
+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.
+
+#### Customizations
+
+After I generated the output file, I replaced some placeholders in the templates via `sed` and then `tidy`'d the HTML. The only other major issue was Discount had no way of appending any link attributes -- so for external links I had `sed` append the `rel` and `target` attributes - which work off the assumption they're not there. A lot of my home-server scripts rely on assumptions...
+
+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.
+
+### Two Sources of Truth
+
+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.
+
+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.
+
+### Learnings
+
+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 `tidy`'d the HTML file - it became frustrating to edit, and I didn't always re-tidy it. Because the output is always `tidy`'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.
+
+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.
+
diff --git a/old/mds/blog/css-themes-exist.md b/old/mds/blog/css-themes-exist.md
new file mode 100644
index 0000000..263db13
--- /dev/null
+++ b/old/mds/blog/css-themes-exist.md
@@ -0,0 +1,78 @@
+## CSS Themes Exist Now!?
+
+Yeah news to me too! Seems like according to [the MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-color-scheme#browser_compatibility)
+it's been supported since 2019 for most browsers and supported by all by now.
+
+This is so wild!
+
+### Why is this cool?
+
+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.
+
+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.
+
+#### Still no JS!
+
+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.
+
+I try to keep that, not only for my sake, but for your sake too - a javascript free blog means the priority is reading.
+
+### Examples
+
+So I achieve darkmode in this blog by doing the following:
+
+```
+/* 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;
+ }
+}
+```
+
+Essentially, I leverage [CSS Variables](https://developer.mozilla.org/en-US/docs/Web/CSS/Using_CSS_custom_properties) to define the specific areas I set theme specific colors (my nav bar is static regardless of dark/light mode for example).
+
+Then if the media preference is dark - I overwrite the variables with my dark mode values!
+
+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.
+
+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.
+
+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.
+
+#### Toggling Themes
+
+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.
+
+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!
+
+### Conclusion
+
+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!
+
+* CSS Variables: [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)
+* CSS Media prefers-color-scheme: [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)
+
diff --git a/old/mds/blog/hormone-levels.md b/old/mds/blog/hormone-levels.md
new file mode 100644
index 0000000..87eaabf
--- /dev/null
+++ b/old/mds/blog/hormone-levels.md
@@ -0,0 +1,43 @@
+# Hormone Levels
+
+On Fedi I talk quite a bit about struggling to dial in my hormone levels. Part of that involves getting tested and such. So this page is going to be where I catalog everything so its easier for me to share more clearly whats going on.
+
+## The Problem
+
+I switched to injections from pills to injections in April of 2023. After a few weeks of injections I start to notice that over the weekend I am just wrecked. My emotions are all off, I feel like I did pre-HRT and I start getting depressed. This has been happening every weekend since starting injections.
+
+## My dosages
+
+I currently (as of August 04, 2023) on 0.15mL of 20mg/mL Estradiol Valerate injecting weekly on Monday mornings.
+
+My original dosage was 0.1mL of 40mg/mL of EV.
+
+## The trials
+
+So my doctor tested my levels on a Thursday a week after my initial message (due to my own error missing a call to get the next day locked in). Since I wouldn't be testing for a week she asked me to do 0.15mL of the 40mg. I tested. And then tested again 1 week later.
+Both results were in the mid 900s pg/mL which is insanely high. I was averaging in the high 200-300 range on pills.
+
+So she had me immediately return to 0.1mL and then actually dropped me to 0.75mL of the 40mg and prescribed 20mg EV so I could take 0.15mL of that instead.
+
+Thus began a 6 week waiting period while I adjusted to the lesser dosage. And the feelings only got worse.
+
+## Where I am now
+
+I got my bloodwork done on the afternoon of Friday August 4th to conclude the 6 week trial and am awaiting results.
+
+**Update**: The results came back as 253pg/mL. Awaiting call from provider.
+
+**Update**: On August 9th I followed up with my doctor about the levels and she recommended moving to a .1mL of the 20mg EV (down from .15mL of the 20mg EV) and inject every 5 days.
+
+So I am going to follow-up again in 3 weeks and report how I feel.
+
+## What Fedi has helped with
+
+Some possible things to note are:
+
+1. What day are you testing? Ideally I should've been testing the day before or morning of.
+2. I am doing weekly dosages. Some girls do every 5 days.
+3. I am generally stressed and anxious. But I can feel the hormonal difference on the weekends. Especially on Sat/Sun.
+4. I could switch to Friday injections since rarely do you test the day after. So that would allow for any day at the latter half of my injection cycle.
+
+But I suspect there is the possibility I am feeling the dip and not the actual level itself. So I feel amazing on the peak but the end of the cycle ramp down is so sever I just get depressed from it. In which case increasing frequency or other medical intervention (maybe anti-depressants) could combat this.
diff --git a/old/mds/blog/how-i-generate-my-rss-feed.md b/old/mds/blog/how-i-generate-my-rss-feed.md
new file mode 100644
index 0000000..4aae7fc
--- /dev/null
+++ b/old/mds/blog/how-i-generate-my-rss-feed.md
@@ -0,0 +1,108 @@
+# How I Generate My RSS Feed
+
+I only just now started supplying an RSS feed to you fine people! You can subscribe to it at [www.senders.io/blog/feed.rss](/blog/feed.rss)!
+
+I decided rather than manually generating the file contents I'd hook into my pre-existing publish scripts to be able to generate the RSS file.
+
+## Publishing blog posts - shell scripts ftw
+
+In [My Markdown -> HTML Setup](/blog/2022-11-06/) I touch on how I publish my markdown files into HTML for this blog. But what I don't _really_ touch on is the shell scripts that tie the whole process together.
+
+What I have is two, now three, scripts that feed the whole process:
+
+1. `publish-blog.sh` - the main script
+2. `compile-md.sh` - generates the HTML output
+3. `update-feed.sh` - generates/appends the RSS feed
+
+The `update-feed.sh` script is the new one I just added.
+
+`publish-blog.sh` is the primary interface, I supply the date of the post and the path to the md file and that calls compile and update to automate the entire process.
+
+Without going into TOO much detail you can view the latest versions of the scripts at [git.senders.io/senders/senders-io/tree/](https://git.senders.io/senders/senders-io/tree/).
+
+But the gist of the scripts is I parse out the necessary details, find/replace some tokens in template files I have setup for headers and footers, and concat the outputs into the final output HTML files, and now RSS feed.
+
+### update-feed.sh
+
+Source File: [git.senders.io/senders/senders-io/tree/update-feed.sh](https://git.senders.io/senders/senders-io/tree/update-feed.sh)
+
+This script is pretty interesting. I didn't want to deal with any XML parsers and libraries to just maintain a proper XML rss file and push items into the tree. Rather, I just follow a similar setup to my markdown generation. I leverage some temporary files to hold the contents, a static temp file for the previously generated content, and at the end swap the temp file with the real file.
+
+I take in an input of the publish date (this is the date from the publish script), the title, and the HTML file path. These are all already variables in the publish script, but also something I can manually supply if I need to publish an older article, or something I wrote directly in HTML.
+
+The core of the script is found here:
+
+```
+PUBDATE=$(date -d "$1" -R)
+TITLE=$2
+FILE_PATH=$3
+PERMALINK=$(echo "${FILE_PATH}" | sed -e "s,${TKN_URL_STRIP},${URL_PREFIX},g")
+LINK=$(echo "${PERMALINK}" | sed -e "s,${TKN_INDEX_STRIP},,g")
+
+# Generate TMP FEED File Header
+
+cat -s $FILE_RSS_HEADER > $FILE_TMP_FEED
+sed -i -E "s/${TKN_BUILDDATE}/${BUILDDATE}/g" $FILE_TMP_FEED
+sed -i -E "s/${TKN_PUBDATE}/${PUBDATE}/g" $FILE_TMP_FEED
+
+# Generate TMP Item File
+
+cat -s $FILE_RSS_ITEM_HEADER > $FILE_TMP_ITEM
+sed -i -E "s~${TKN_TITLE}~${TITLE}~g" $FILE_TMP_ITEM
+sed -i -E "s/${TKN_PUBDATE}/${PUBDATE}/g" $FILE_TMP_ITEM
+sed -i -E "s,${TKN_PERMALINK},${PERMALINK},g" $FILE_TMP_ITEM
+sed -i -E "s,${TKN_LINK},${LINK},g" $FILE_TMP_ITEM
+sed -n "/<article>/,/<\/article>/p" $FILE_PATH >> $FILE_TMP_ITEM
+cat -s $FILE_RSS_ITEM_FOOTER >> $FILE_TMP_ITEM
+
+# Prepend Item to items list and overwrite items file w/ prepended item
+## In order to "prepend" the item (so it's on top of the others)
+## We need to concat the tmp item file with the existing list, then
+## we can push the contents over the existing file
+## We use cat -s to squeeze the blank lines
+cat -s $FILE_ITEM_OUTPUT >> $FILE_TMP_ITEM
+cat -s $FILE_TMP_ITEM > $FILE_ITEM_OUTPUT
+
+# Push items to TMP FEED
+cat -s $FILE_ITEM_OUTPUT >> $FILE_TMP_FEED
+
+# Push RSS footer to TMP FEED
+cat -s $FILE_RSS_FOOTER >> $FILE_TMP_FEED
+echo $FILE_TMP_FEED
+
+# Publish feed
+cat -s $FILE_TMP_FEED > $FILE_RSS_OUTPUT
+
+echo "Finished generating feed"
+```
+
+Some key takeaways are:
+
+1. sed lets you do regex with delimiters that AREN'T `/` so you can substitute something that shouldn't actually ever show up in your regex. For me that is `~`.
+2. I always forget you can use sed to extract between tokens - which is how I get the CDATA for the RSS: `sed -n "/<article>/,/<\/article>/p"`
+3. `mktemp` is really REALLY useful - and I feel is under utilized in shellscripting
+
+The obvious cracks are:
+
+1. I rely SO much on `sed` that it's almost certainly going to break
+2. I don't have much other flag control to do partial generation - so if I need to do something either starting partway through or not finish the full process, I don't have that.
+3. Sometimes things can break silently and it will go through, there is no verification or like manual checking along the way before publishing the feed.rss
+
+The final two can easily be managed by writing the feed to a location that isn't a temp file and I can manually do the `cat -s $FILE_TMP_FEED > www/blog/feed.rss` myself after I check it over.
+
+But for now I'll see if I ever have to redo it. I don't think anyone will actually sub to this so I don't really need to care that much if I amend the feed.
+
+## Where to put the feed URL
+
+I never intended to provide an RSS feed. I doubt anyone but me reads this, and from my previous experience with gemini feed generation was a bit of a headache.
+
+A quick aside: I really only decided thanks to Mastodon. I was thinking during the Twitter meltdown "what if twitter but RSS" (I know super unique idea). But basically like a true "microblog". And some OSS tools to publish your blog. This got me reading the RSS spec and looking into it more - which then lead me down the using the RSS readers more (in conjunction with gemini, and Cortex podcast talking about using RSS more).
+
+But I've decided to just put the RSS feed in the blog index, on my homepage, and that's it. I don't need it permanently in the header.
+
+## Conclusion
+
+I didn't have much to share here, it doesn't make too much sense to write a big post on what can be explained better by just checking out the shell scripts in my git source. The code speaks better than I ever could.
+
+I really, really like shell scripting.
+
diff --git a/old/mds/blog/mastodon-and-twitter.md b/old/mds/blog/mastodon-and-twitter.md
new file mode 100644
index 0000000..7d288fe
--- /dev/null
+++ b/old/mds/blog/mastodon-and-twitter.md
@@ -0,0 +1,43 @@
+# Mastodon and Twitter... wow!
+
+So I was aware of the [Fediverse](https://en.wikipedia.org/wiki/Fediverse) quite some time ago.
+[Mastodon](https://en.wikipedia.org/wiki/Mastodon_(software)) is one of the microblogging social networking services
+that is.. "apart?" of the fediverse.
+
+[I joined mastodon](https://tech.lgbt/@senders) back in 2020 when I was looking into it more and it was blowing up again on sites like Reddit.
+Turns out I didn't really gel with it - primarily I realized I don't really like social media.
+
+## Twitter is on fire and I don't care
+
+So I joined Twitter sometime around 2010 because people kept talking about it and I wanted to follow some friends.
+This is pre-discord and post-skype sucking ass so my friends and I were in need of some way of sharing links and media online
+because SMS and MMS still and did suck back then too (TBH its the exact same). We'd DM eachother links and stuff and it was fun for a while.
+
+I did engage with the platform from a "I have thoughts that no one cares about, but at least I can tell Twitter" perspective. I didn't engage with it at all from:
+I follow people and hashtags because I care about the discourse. This is also when I started getting more into Reddit - which was much more up my alley so it was moderated and
+filtered for "higher tier content" (saying this now is like... hilarious - though as of Nov 2022, they're both just shitposts).
+
+In November of 2022, Twitter began to implode under god-awful leadership. And frankly, I couldn't care less... sorta.
+
+### The only good part about Twitter
+
+Apparently, Twitter is useful for distributed organization - we've seen how it works during movements to get the word out and spread the message.
+Most notably in Egypt during Arab Spring.
+
+This can happen in Mastodon - but by its nature - Mastodon is a bit... gatekeepy. And being able to just go to Twitter.com and search #hastag is very useful for this aspect.
+
+### But there is no other value, and that is like... not always a good thing
+
+But that type of organization isn't always for _positive change_. I mean, look at JKR tweeting about trans folk and Trump.
+
+## Mastodon
+
+So I didn't want this to be some history lesson. It was mostly a post about - I started using Mastodon this morning again. I find it sits nicely in this niche of blogging
+below things like Gemini or this blog - where someone would put _some effort_ into it. And mostly just get their quick thoughts out there.
+
+And I think that is fun. I am now more engaged with online creators than I was back in 2010 so I would probably want to have some YouTubers and bands migrate over so I could keep up-to-date on stuff.
+But I bet Instagram is going to win out for those - since they are already engaged on that platform.
+
+### Why not Instagram
+
+So I honestly believe if Twitter full shuts down (hard to believe but it COULD happen at this point - or at least get ditched enough for people to move on) it will be replaced by Instagram as the platform to engage with your favorite artists, creators, celebrities etc. It already is that - but its a different type of engagement. So I am curious how this transition will occur. I don't see enough general public moving to Mastodon - as the venn diagram of "how I engage with fans on this platform" is like 2/3s for Twitter instagram and there is like 1/3 that Twitter does that Instagram doesn't - and that's
diff --git a/old/mds/blog/rss-a-follow-up.md b/old/mds/blog/rss-a-follow-up.md
new file mode 100644
index 0000000..2b6bb37
--- /dev/null
+++ b/old/mds/blog/rss-a-follow-up.md
@@ -0,0 +1,108 @@
+# RSS - A Follow-up
+
+Get an RSS reader and connect everything to it!
+
+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.
+
+> this blogpost is originally posted to my gemini gemlog: [gemini://senders.io/gemlog/2022-12-31-rss-a-follow-up.gmi](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.
+
+## Recap
+
+So I am using [https://tt-rss.org/](https://tt-rss.org) 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.
+
+## How I've been using it
+
+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 <3
+
+### Blogs
+
+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.
+
+If you're interested the two main ones I am reading right now are:
+
+1. [Erin In The Morn (substack)](https://erininthemorn.substack.com)
+2. [Selfaware Soup](https://www.selfawaresoup.com/)
+
+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.
+
+### Podcasts
+
+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 _need_ 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:
+
+1. [The Pen Addict Podcast (relay.fm)](https://www.relay.fm/penaddict)
+2. [Cortex Podcast (relay.fm)](https://www.relay.fm/cortex)
+
+And currently off-season:
+
+* [Backmarkers Podcast (relay.fm)](https://www.relay.fm/backmarkers)
+
+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.
+
+While writing this section I added:
+
+* [Inside.java Podcast](https://inside.java/podcast/)
+
+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)
+
+### Tech News
+
+Right now I follow two main news sources in tech:
+
+1. [debian.org/news](https://www.debian.org/News/)
+2. [LWN.net](https://lwn.net/)
+
+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.
+
+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.
+
+LWN has some links in their weekly editions for other news feeds I might consider directly subscribing too, but for now I have these.
+
+### Music News
+
+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.
+
+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: [raisedbyswans.com]( https://raisedbyswans.com/) 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!
+
+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.
+
+### YouTube
+
+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.
+
+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 _occasionally_ 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!
+
+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:
+
+```
+https://www.youtube.com/feeds/videos.xml?channel_id={ID}
+```
+
+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:
+
+```
+ytInitialData.metadata.channelMetadataRenderer.externalId
+```
+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.
+
+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.
+
+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.
+
+### Hobby
+
+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 _entirely_ fountain pen related (Who'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.
+
+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([Adam Neely - How In-Ear Monitors are Making Better Musicians](https://www.youtube.com/v/mHoljbkyAEs)), 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).
+
+## tt-rss - in retrospect
+
+So tt-rss is _fine_ 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.
+
+But other than that it's been quite the improvement over my internet experience. More RSS!!
+
+## Conclusion
+
+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!
+
+Anyway, you should look into getting an RSS aggregator setup. It's been really impactful on cutting down on internet scrolling and mindlessness.
+
diff --git a/old/mds/blog/top-2022.md b/old/mds/blog/top-2022.md
new file mode 100644
index 0000000..974593e
--- /dev/null
+++ b/old/mds/blog/top-2022.md
@@ -0,0 +1,241 @@
+# Music Spotlight: My Top Album 2022
+
+The hype is real. I only recently wrote last years, so I bet your hype is nonexistent but for me I was writing that knowing full well there were some bangers waiting to be unleashed in this year end review!
+
+If you hadn't read my previous post for 2021 the link is at the bottom:
+
+> The winner was "KANGA - You and I Will Never Die"
+
+## The album pool
+
+As always the criteria:
+
+* it was released in 2022
+* it wasn't a single
+* if it was an EP it has to be substantial and intentional
+
+And the albums are...
+
+* Amining for Enrike - The Rats and the Children
+* And So I watch You from Afar - Jettison
+* Astronoid - Radiant Bloom
+* Carpenter Brut - Leather Terror
+* Cult of Luna - The Long Road North
+* Dance With the Dead - Driven to Madness
+* Elder - Innate Passage
+* Emma Ruth Rundle - EG2: Dowsing Voice
+* Giraffes? Giraffes! - Death Breath
+* God Mother - Obeveklig
+* Jay Hosking - Celestial spheres (and various other releases)
+* Long Distance Calling - Eraser
+* Ludovico Technique - Haunted People
+* MWWB - The Harvest (Mammoth Weed Wizard Bastard)
+* MØL - Diorama (Instrumental)
+* Psychostick - ... and Stuff
+* Russian Circles - Gnosis
+* SIERRA - See Me Now
+* Starcadian - Shadowcatcher
+* Tina Dickow - Bitte Små Ryk
+* Toundra - Hex
+* Waveshaper - Forgotten Shapes
+
+2022's playlist (+ 2 albums from bandcamp not on Spotify):
+
+* [[spotify] senders' Releases 2022 Spotify Playlist](https://open.spotify.com/playlist/2TCd910OyZcTjQ8l8Dc0Jy?si=efd0dc6286b84062)
+* [[bandcamp] Emma Ruth Rundle - EG2: Dowsing Voice](https://emmaruthrundle.bandcamp.com/album/eg2-dowsing-voice)
+* [[bandcamp] Jay Hosking - Celestial spheres](https://jayhosking.bandcamp.com/album/celestial-spheres)
+
+## The Top 5
+
+In alphabetical order:
+
+* Carpenter Brut - Leather Terror
+* Elder - Innate Passage
+* Emma Ruth Rundle - EG2: Dowsing Voice
+* Jay Hosking - Celestial spheres (and various other releases)
+* Tina Dickow - Bitte Små Ryk
+
+## Carpenter Brut - Leather Terror
+
+Some metal infused synthwave, Carpenter Brut managed to release a catchy and heavy banger of an album. Featuring a few guest performers, each of these tracks are unique and catchy in what I would consider a very "same-y" genre. It's nice having an infinite supply of retro synth tracks to drive to, but sometimes it's hard for one to really break through into "oh shit yes!". Typically, Starcadian is the one to do that for me, as they add an extra layer to their tracks through their music videos (each track being an "ear movie").
+
+Throughout the year I found myself coming back to a few tracks over and over - especially when I was showering or doing some other short activity and I just wanted something upbeat and fun as heck!
+
+Some call out featured songs are The Widow Maker featuring Gunship, Imaginary Fire featuring Greg Puciato, and Lipstick Masquerade featuring Persha. I looped these three songs quite a bit. But there are quite a few more to checkout.
+
+### Favorite Track
+
+This is tough, as I looped those three songs quite a bit - each bringing their own unique energy. So I'll pick all three - my list my rules:
+
+* The Widow maker - feat. Gunship
+This track is representative of the genre. It's synthwave to the core.
+
+* Imaginary Fire - feat. Greg Puciato
+This is a metal track with synths. Greg Puciato (of The Dillinger Escape Plan fame) is one of my favorite vocalists and is immensely talented. This is probably my favorite because I can't get enough of his vocal style - the screams and the clean vocals!
+
+* Lipstick Masquerade - feat. Persha
+This is a modern 80s track. This is what retrowave was designed around and while tracks like The Widow Maker are more typical of the genre, this is the song they all are basing their sound off of. This is kill pop song.
+
+### Special Commendation - Non Stop Bangers
+
+You throw this album on and it hits you with just banger after banger. I can't keep myself from dancing. Even as I listen back as I write this gemlog I am grooving in my chair! Like Kanga last year, this is just a series of tracks that just make you dance.
+
+### Album Link
+
+[[spotify] Carpenter Brut - Leather Terror](https://open.spotify.com/album/37PW0ipoWcjx3APS1MN0ql?si=HE0-siOqTsqVlJrlL9MWTw)
+
+## Elder - Innate Passage
+
+I toot'd a bit about this album, a later release in the year, this took this year end review and flipped it on its head. I thought it was wrapped up already with a separate release this year, but this makes the decision so hard.
+
+Elder came at us with what feels like a return to form. Having previously released Omens in 2020 and a collaboration album in 2021, Innate Passage takes the best parts of those two albums and builds on-top of more "classic Elder" albums like Lore. Elder has carved out their own niche in the genre making a blend of psych rock and stoner metal, with each release leaning harder and harder into psychedelic realms. Innate Passage has this almost ethereal feeling - especially in their opening track Catastasis.
+
+I think, however, they've left the doom and stoner metal behind. Dead Roots Stirring and Elder (self titled) were certainly "Doomy" and in that "doom/stoner" metal overlap. Lore, Reflections of a Floating World are both still very "stoner metal". But is playing psychedelic-metal with a big muff automatically stoner metal? I think since Omens they're probably, as a band, firmly outside of the stoner metal field - and more soundly in some psychedelic/prog metal genre?
+
+They introduce themselves as such in their website actually!
+
+<figure>
+
+> genre-pushing rock band that melds heavy psychedelic sounds with progressive elements and evocative soundscapes.
+
+<figcaption><cite>--- [https://beholdtheelder.com/elder-bio/](https://beholdtheelder.com/elder-bio/)</cite></figcaption>
+</figure>
+
+"Merged In Dreams - Ne Plus Ultra" is the track that flips this whole argument on its head and shows that regardless, they're still very much a metal band and one that you'll absolutely be head banging too, horn up \m/.
+
+### Favorite Track
+
+I think "Merged In Dreams - Ne Plus Ultra". A nearly 15 minute track that has everything in it you expect from Elder.
+
+### Special Commendation - Excellent Vinyl Record Cover
+
+I LOVE their record covers when they do the circular inserts. You can display this vinyl with having 3 separate views through the port, which while purely aesthetic - it's very nice!
+
+The quality of the vinyl release was great, though I find any non-black Vinyl has a 33% chance of being slightly warped upon arrival. I am going to stick to traditional black vinyls from now on sadly. It's too freaking often
+
+### Album Link
+
+[[spotify] Elder - Innate Passage](https://open.spotify.com/album/5XClGjeje4c3qPjbtT898K?si=PFgsT8S_TD6hu4dwbFp3Jw)
+
+## Emma Ruth Rundle - EG2: Dowsing Voice
+
+Her second album in her "Electric Guitar" series - Emma Ruth Rundle (ERR from here on out) has released "Dowsing Voice" a haunting follow-up to last years Engine of Hell. Holy holy HOLY hell, this album is an impactful, artistic, just WOW. It's hard to describe. I was listening to it for this review and my partner, sitting behind me relaxing, said "What the hell are you listening too, this is scary!". And scary, emotional, and difficult it is. ERR stretches the use of the "electric guitar" title, as the focus here is the additional layers and voices added on-top of the main tracks.
+
+An experimental release that, at this time is only available on bandcamp, is one I don't put on frequently, but when I do am fully captivated. If you like artistic records - please check this out.
+
+### Favorite Track
+
+Probably: Keening into Ffynnon Llanllawer - I love the guitar(?) part and the wailing/vocalization. It's haunting. As a recording is amazing.
+
+Though "In the Cave of The Cailleach's Death-Birth" is the /best/ track. Put some headphones on and give this a listen! Just amazing.
+
+### Special Commendation - Album Art
+
+This album, IS ART, but the album art is just... really suiting the music.
+
+### Album Link
+
+[[bandcamp] Emma Ruth Rundle - EG2: Dowsing Voice](https://emmaruthrundle.bandcamp.com/album/eg2-dowsing-voice)
+
+## Jay Hosking - Celestial spheres (and various other releases)
+
+This is an interesting pick. Having released JUST in time for this year, this is an album I have been engaging with in many, many ways. Firstly, I am a patron of this performer via Patreon. They make music videos (audio only performance videos of the songs) that they compile into albums. Last year's album is probably my actual favorite and likely SHOULD'VE snuck into the top 5 because of the final track alone, which was an emotional and just epic banger of a track (Linked at the bottom of this review).
+
+Celestial spheres is a compilation of 8 synth jams. Jay bills these as semi-improvisational, and while the YT channel is a synth nerds dream of these informative performances, the songs stand on their own. This one is no exception. Using various different pieces of hardware synths, grooveboxes, drum machines and traditional instruments - each track is unique while still carrying this /energy/ and style. It's so easy to hear Jays tracks and know it's him.
+
+I've been following him for years and really enjoy the music he makes, and the community he's built up around his music. Due to the disconnected nature of the singles (releasing effectively as YouTube videos prior to the album drop) it's difficult to ultimately rate these in these lists since I don't get a chance to really enjoy them /as an album/ until the end of the year (the past two times happened like this where they came out around the end of the year). And on my playlist "Future, Tense" is present as it's a "2022" album according to Spotify, but was out on bandcamp in 2021, and that's when I was gifted it by Jay.
+
+So yeah - this whole section is like "disclaimer disclaimer" but if you like groovy, typically instrumental synth music - check it out.
+
+### The various other releases
+
+This year Jay released a few albums actually which I didn't want to include separately. If you enjoy this album (which was mostly comprised of 2022 music, so was the primary focus) check out the other albums:
+
+https://jayhosking.bandcamp.com/album/cinematic-works
+https://jayhosking.bandcamp.com/album/away-music-for-a-productive-day
+https://jayhosking.bandcamp.com/album/home-music-for-a-productive-day
+
+### Favorite Track
+
+Without out a doubt it's Nychthemeron. It's truly a wild track, with so much happening in it. I suspect it was his favorite too since he made an actual music video for it:
+
+[[youtube] Jay Hosking - Nychthemeron (Official Music video)](https://www.youtube.com/watch?v=Ka-xE3Qo3dA)
+
+### Special Commendation - Each track has a live performance attached to it!
+
+If you enjoy videos - these each have a corresponding YT video linked at the bottom of the bandcamp page.
+
+### Album Link
+
+[[bandcamp] Jay Hosking - Celestial spheres](https://jayhosking.bandcamp.com/album/celestial-spheres)
+
+## Tina Dickow - Bitte Små Ryk
+
+Tina Dickow (sometimes credited as Tina Dico, depending on the release) is a fantastic Danish singer songwriter. Since her first solo album she's really found a way to elevate what is just folk indie pop. Her songwriting, arrangements, and performances are always so rich. She knows when to strip the song back - like Chefen Skal Ha' Fri - while, has certainly a lot happening beneath the lyrics - mixes them back a bit to let the layered vocals cut through as the song builds. Each song has so much to listen to! Picking out various instruments, layers, yet every song would work performed just her and her acoustic guitar. I find her style of pop music to be very engaging for that reason. I don't often listen to this style of music, but the production behind each track is so good it hooks me in. That and her beautiful voice - which drew me in first.
+
+It's a bit harder to talk about this album given the language barrier (I do not speak Danish!) Which is a shame, since her lyrics are often what I love about some of her previous albums. I've read the translations and done my own as a learning exercise, but there is a layer missing which is a shame given how strong this album is as whole.
+
+I've spoken about Tina before in two previous gemlogs
+([Music Spotlight: Awesome EPs](gemini://senders.io/gemlog/2021-04-27-music-spotlight-awesome-eps.gmi) and [5x5 Playlists](gemini://senders.io/gemlog/2021-05-18-5x5-playlists.gmi) (both gemini:// links))
+and is one of my absolute favorite artists of all time. I've been slowly collecting her entire discography, which can be tricky, given a lot of copies are out of print and the remaining stock/used copies are often in Europe. (And that 5x5 playlist is very telling given most of those artists have been featured in my top albums lists and were winners! Is this foreshadowing?!)
+
+### Favorite Track
+
+I shouldn't have introduced this section - it has been so hard each time! I think the title track, Bitte Små Ryk. It's got everything there, and is representative of the albums sound.
+
+### Special Commendation - Lovely
+
+This whole album is lovely. There is emotion here too, and while I don't speak the language its often very clear. But I love Tina and her music. It's lovely and hits this spot in me thats just warm.
+
+### Album Link
+
+[[spotify] Tina Dickow - Bitte Små Ryk](https://open.spotify.com/album/6YV4Gomk4iy0dUyVqPDN7T?si=e3wO7G3XTI-ZIwhOSCswJA)
+
+## My Top Pick
+
+This year has been especially hard, since I spent so much time listening to 2021s releases which are some of my favorite of all time. And between 2021 and 2022 (and mentioned in my 2021 spotlight) nearly every one of my favorite artists released an album. So I have been blessed with a lot to listen to.
+
+Anyone following me on mastodon may have seen Tina Dickow just owning my entire wrapped campaign, but with Elder releasing their album after the data collection stops for wrapped, that certainly isn't telling the whole story.
+
+And it wouldn't be a top album list if I didn't mention Starcadian being consistently in the top 10 year after year, just narrowly missing the top 5 - though technically, this release was in my 2020s list, as it was available then, but had since been pulled, and was released "officially" in 2022. Looking at what I can see it's the same tracklist, but the "inspired by" credits are entirely gone from the 2022 release.
+
+### Elder - Innate Passage
+
+Each year picking the winner is hard. Part of the reason I do this is I don't really add stuff to the list I don't like. A LOT of music comes out each year, and I add what I listen to. I don't listen to music I don't like - so by nature of the process - each album is a "top album" for me.
+
+But the top 5 is usually a mix of "omg obvs" and "yeah turns out I threw that on way more than I expected" (Carpenter Brut). But its really always a fight between those "obvs" - this year was Elder and Tina Dickow. Their releases were seriously top tier and repeat listens.
+
+Tina came in with the advantage of releasing in April, and Elder JUST released theirs at the end of November. But I did some math on my mastodon breaking down the comparison. Elder came at us with a longer albums, under half as many tracks, and over 2x the average song length (about 10min/track).
+
+They didn't waste a single second (neither did Tina) but just being such an accessible album - just direct pure energy and power - BOOM! It was great.
+
+### This should've been a tie
+
+Honestly, I was ready to call it a tie. I am actually writing this minutes before posting it, because that's how undecided I am and how close this is.
+
+Tina Dickow deserves the number one slot any other year, and both her and Elder's albums I hope to see more of in the next few years! Both are classic albums in their discographies (both albums of which I own and spin regularly). I forced myself to pick, and just knowing me, my tastes, and all the stuff I said above - I went with Elder. But seriously, listen to this record - Tina manages to pack so much musicality in carving out a unique sound and just amazing style. I love her <3 :)
+
+And if her music isn't your jam - check out her guest tracks on the Zero-7 stuff - angelic voice.
+
+## Conclusion
+
+I am REALLY disappointed I had to choose between Elder and Tina Dickow this year. Similarly, last year I had Raised by Swans, ERR, and Kanga! And our winner in 2020 was Bell Witch. These ARE my top six favorite musical artists currently active.
+
+I'll talk about music trends and my tastes later on. But I just wanted to emphasize how much of a banger these last 3 years have been musically and I am grateful I get to share these with you here.
+
+I am really excited for 2023!
+
+## This year's playlist (2023)
+
+[[spotify] senders' Releases 2023 Playlist](https://open.spotify.com/playlist/4zgdFBZslkcEq0xYFyME7U?si=4bc2bf7d015c4254)
+
+## Links
+
+If you use gemini:// you can check out my previous posts (until/unless I decided to port those over too)
+
+* [[gemini] Music Spotlight: Top Album 2021](gemini://senders.io/gemlog/2022-11-30-music-spotlight-top-album-2021.gmi)
+* [[gemini] Music Spotlight: Top Album 2020](gemini://senders.io/gemlog/2021-03-21-music-spotlight-top-album-2020.gmi)
+
+
+Thanks for reading! I don't always crosspost - I am trying something out :)
+
diff --git a/old/mds/wishlist.md b/old/mds/wishlist.md
new file mode 100644
index 0000000..e37df79
--- /dev/null
+++ b/old/mds/wishlist.md
@@ -0,0 +1,54 @@
+# Wishlist
+
+In general: Records, Gunpla, Warhammer are always welcome and likely to be most of what the following wishlist will contain.
+
+## Wishlist X-mas 2023
+
+
+### Assorted Things
+
+I'd love a jewlery holder! Any kind! My face is also puffy in the morning, so something for that!
+
+### Manga [🔗](#manga) {: #manga }
+
+| Series | Volume Range | Link(s) |
+| -- | -- | -- |
+| Run Away with me, girl | 1-3 | [B&N Series Page](https://www.barnesandnoble.com/s/%22Run+Away+With+Me%2C+Girl%22?Ntk=P_Series_Title&Ns=P_Series_Number&Ntx=mode+matchall) |
+| Our Teachers Are Dating! | 1-4 | [B&N Series Page](https://www.barnesandnoble.com/s/%22Our+Teachers+are+Dating%21%22?Ntk=P_Series_Title&Ns=P_Series_Number&Ntx=mode+matchall) |
+| Hinamatsuri | 1-18 | [B&N Series Page](https://www.barnesandnoble.com/s/%22Hinamatsuri+Series%22?Ntk=P_Series_Title&Ns=P_Series_Number&Ntx=mode+matchall) |
+
+### Records [🔗](#records) {: #records }
+
+| Artist | Album | Shop(s) | 💖 |
+| -- | -- | :-: | :-: |
+| Black Sabbath | Black Sabbath | [Discogs](https://www.discogs.com/artist/144998-Black-Sabbath) |
+| Black Sabbath | Master of Reality | ^ |
+| Iron Maiden | Iron Maiden | [Discogs](https://www.discogs.com/artist/251595-Iron-Maiden) |
+| Iron Maiden | Killers | ^ |
+| Iron Maiden | The Number of the Beast | ^ |
+| Iron Maiden | Piece of Mind | ^ |
+| Iron Maiden | Powerslave | ^ |
+| Iron Maiden | Brave New World | ^ |
+| Khemmis | Absolution | [LP Merch Site](https://www.20buckspin.com/collections/khemmis), [Discogs](https://www.discogs.com/artist/4497438-Khemmis) | 💖 |
+| Khemmis | Haunted | ^ | 💖 |
+| Khemmis | Desolation | ^ | 💖 |
+| Raised by Swans | Codes And Secret Longing (CD) | [Discogs](https://www.discogs.com/release/1173259-Raised-By-Swans-Codes-And-Secret-Longing) | |
+| Raised By Swans | Öxnadalur (CD) | [Bandcamp](https://raisedbyswans6.bandcamp.com/album/xnadalur) | 💖 |
+
+// Items marked with 💖 are things I would try for since they have official releases
+
+#### How to shop for records
+
+To shop for records generally, if the band is active/modern I try and link or share their official merch/bandcamp (generally you can websearch for the bands website where they usually link their US LP store).
+
+But otherwise using Discogs is the easiest way to shop for used records. Overall, you simply look through their releases filtering for Vinyl and the album and find a cheaper US release. Try and **avoid good or fair** quality as it usually means "pretty rough but it works". VG is my usual minimum. And do check the sellers shipping options. Sometimes, they make deals for 2+ records (like flatrate shipping) so sometimes ordering from the same store can save some money!.
+
+And PLEASE DO NOT EVER spend a lot on a record. Usually $30 is a brand new repress cost for a 2xLP and my maximum. I would much rather have something not on the above list - knowing it wasn't a total rip-off.
+
+Speaking of represses, represses are always fine. If there are notoriously bad represses/rereleases I'd make it known. But so far only the first two Iron Maiden albums (Self, Killers) suffer from originally bad mastering - so it doesn't _really_ matter if its a repress/release or not. Its mostly purists/nerds who care.
+
+### Else
+
+Interesting Fountain Pen ink shades: [Jetpens Store](https://www.jetpens.com/Fountain-Pen-Inks/ct/3250)
+
+
diff --git a/old/publish-blog.sh b/old/publish-blog.sh
new file mode 100755
index 0000000..33190b6
--- /dev/null
+++ b/old/publish-blog.sh
@@ -0,0 +1,66 @@
+#!/usr/bin/env bash
+set -ex
+
+if [ $# -gt 2 ]; then
+ echo "./publish-blog.sh [isodate] mds/blog/blog-file.md"
+ exit 1
+fi
+
+if [ $# -lt 1 ]; then
+ echo "./publish-blog.sh [isodate] mds/blog/blog-file.md"
+ exit 1
+fi
+
+# Setup Dates
+
+isodate=$(date -I)
+date=$(date +"%B %d, %Y")
+if [ $# -eq 2 ]; then
+ isodate=$1
+ date=$(date --date="${isodate}" +"%B %d, %Y")
+ in=$2
+else
+ in=$1
+fi
+
+# Get Page Title
+
+title=$(head -n1 $in | sed -E 's/^[#]{1,2}[[:space:]]*(.+)[[:space:]]*$/\1/g')
+
+# File info
+path=./www/blog/${isodate}
+out=${path}/index.html
+
+# Make path
+
+mkdir -p ${path}
+
+# Compile md
+
+./compile-md.sh blog "${title}" $in $out
+
+# Update date
+
+sed -E -i "s/BLOG_DATE/${date}/" $out
+
+# Update index (if needed)
+
+index=mds/blog/blog-index.md
+
+## check if exists
+exists=0
+grep -q -c "$isodate - $title" $index || exists=$?
+
+# Doesn't exist
+if [ $exists -eq 1 ]; then
+ marker="<!--NEXT-->"
+ line="1. [${isodate} - ${title}](/blog/${isodate}/)"
+ sed -E -i "/$marker/a $line" $index
+ ./compile-md.sh page "Blog Index" $index www/blog/index.html
+ ./update-feed.sh ${isodate} "${title}" $out
+else
+ echo "Already exists in index - not updating"
+fi
+
+echo "Done"
+
diff --git a/old/rss/items.xml b/old/rss/items.xml
new file mode 100644
index 0000000..d1be0ce
--- /dev/null
+++ b/old/rss/items.xml
@@ -0,0 +1,2514 @@
+ <item>
+ <title>Music: A Tour de Chorus</title>
+ <link>https://www.senders.io/blog/music/2023-03-18/</link>
+ <guid isPermaLink="true">https://www.senders.io/blog/music/2023-03-18/index.html</guid>
+ <pubDate>Sat, 18 Mar 2023 23:12:23 -0400</pubDate>
+ <description>
+ <![CDATA[
+ <article>
+ <h1>A Tour de Chorus</h1>
+ <p>I&#39;ve been talking a lot about chorus on my mastodon, like, A LOT.
+ So I thought it would be fun to explore my chorus pedals a bit and
+ present this information in some shareable way, since no one wants to
+ listen to 18 minutes of audio in a row.</p>
+ <h2>What&#39;s on display</h2>
+ <p>So I have three chorus pedals to show off today:</p>
+ <ul>
+ <li>Boss CE-20</li>
+ <li>Warlus Audio Julia</li>
+ <li>Multivox CB-1 Chorus Box</li>
+ </ul>
+ <h2>The other gear</h2>
+ <p>I will be playing each of these pedals through my THR-100HD (see
+ <a href="/blog/music/2023-01-06/"
+ rel="me noopener"
+ target="_blank">my previous music blog post</a> in which I deep dive a
+ bit into this amp). It&#39;s running on the crunch channel, just at
+ the edge of breakup, with little to no reverb.</p>
+ <p>As for guitar. I am using my Reverend Descent RA Baritone</p>
+ <h2>The demos</h2>
+ <p>For each of these demos I will be playing the same loop (mostly). I
+ recorded a loop into my Boss RC-3 to remove any playing bias towards the
+ more warbely chorus tones, and to make it easier for me! Each demo is
+ about 48s long (depending on how good my trimming was). I added a bit of
+ EQ in post to cut out some digital hum introduced when pairing my CE-20
+ with my RC-3 so sorry about that...</p>
+ <p>Let&#39;s start with the clean tone:</p>
+ <figure>
+ <audio controls=""><source src="/blog/music/2023-03-18/audio/clean.mp3">
+ <p>Download <a href="/blog/music/2023-03-18/audio/clean.mp3"
+ rel="me noopner"
+ target="_blank">MP3</a></p></audio>
+ </figure>This loop is something I had been noodling on all week, while on
+ my chorus kick. I feel it&#39;s actually a decent demo because it calls
+ on a lot of classic chorus sounds. Individually picked notes, bright open
+ strings, and then at the end some Nirvana-like dark power chord picking.
+ All classic chorus sounds to me.
+ <h3>CE-20</h3>
+ <p>Next we can go through the CE-20. The CE-20 has 4 modes we&#39;ll be
+ demoing, but there are a total of 6. We are demoing the &quot;Rich&quot;,
+ &quot;Standard&quot;, &quot;Dimensional D&quot;, and &quot;CE-1&quot;
+ settings. I skipped the &quot;Acoustic&quot; and &quot;Bass&quot;
+ settings as they&#39;ve always felt like some slight EQ on the
+ &quot;standard&quot; mode.</p>
+ <h4>Standard</h4>
+ <p>We can start with &quot;Standard&quot; as it&#39;s the most &quot;boss
+ chorus&quot;. Though I personally feel it lacks a bit of the bite the
+ CE-1 and CE-2 offer. But it wouldn&#39;t surprise me if
+ &quot;Standard&quot; was just a CE-2.</p>
+ <figure>
+ <figcaption>
+ CE-20 Standard Mode - Rate 10 o&#39;clock, Depth 2 o&#39;clock
+ </figcaption><audio controls=""><source src=
+ "/blog/music/2023-03-18/audio/ce-20-standard-r10-d2.mp3">
+ <p>Download <a href="/blog/music/2023-03-18/audio/ce-20-standard-r10-d2.mp3"
+ rel="me noopner"
+ target="_blank">MP3</a></p></audio>
+ </figure>
+ <figure>
+ <figcaption>
+ CE-20 Standard Mode - Rate 2 o&#39;clock, Depth 10 o&#39;clock
+ </figcaption><audio controls=""><source src=
+ "/blog/music/2023-03-18/audio/ce-20-standard-r2-d10.mp3">
+ <p>Download <a href="/blog/music/2023-03-18/audio/ce-20-standard-r2-d10.mp3"
+ rel="me noopner"
+ target="_blank">MP3</a></p></audio>
+ </figure>
+ <h4>Rich</h4>
+ <p>Let&#39;s compare this with the &quot;Rich&quot; mode. And keep in
+ mind the only settings I will be changing between these CE-20 modes is
+ the rate and depth. There is actually quite a bit of tone controlling you
+ get in the CE-20. But I generally keep those fairly static based on my
+ guitar and amp settings, and for the purposes of these demos are
+ static.</p>
+ <figure>
+ <figcaption>
+ CE-20 Rich Mode - Rate 10 o&#39;clock, Depth 2 o&#39;clock
+ </figcaption><audio controls=""><source src=
+ "/blog/music/2023-03-18/audio/ce-20-rich-r10-d2.mp3">
+ <p>Download <a href="/blog/music/2023-03-18/audio/ce-20-rich-r10-d2.mp3"
+ rel="me noopner"
+ target="_blank">MP3</a></p></audio>
+ </figure>
+ <h4>Dimensional D</h4>
+ <p>This mode is a recreation of the SDD-320 Dimension D effects unit,
+ later made into the Boss DC-2. This effect is one of my favorite
+ choruses. It&#39;s so unique. On the CE-20 there are 7 modes: 1 - 4, as
+ well as 3 &quot;combo&quot; modes: 1+4, 2+4, and 3+4. These map directly
+ to their SDD-320 counterparts, which also let you stack the modes
+ together. This really shines in stereo, but since the Julia is mono, I
+ felt it&#39;s only fair to use these how I use them on my board.</p>
+ <figure>
+ <figcaption>
+ CE-20 Dimensional D Mode - Mode 3
+ </figcaption><audio controls=""><source src=
+ "/blog/music/2023-03-18/audio/ce-20-dimensional-d-3.mp3">
+ <p>Download <a href="/blog/music/2023-03-18/audio/ce-20-dimensional-d-3.mp3"
+ rel="me noopner"
+ target="_blank">MP3</a></p></audio>
+ </figure>
+ <figure>
+ <figcaption>
+ CE-20 Dimensional D Mode - Mode 4
+ </figcaption><audio controls=""><source src=
+ "/blog/music/2023-03-18/audio/ce-20-dimensional-d-4.mp3">
+ <p>Download <a href="/blog/music/2023-03-18/audio/ce-20-dimensional-d-4.mp3"
+ rel="me noopner"
+ target="_blank">MP3</a></p></audio>
+ </figure>
+ <figure>
+ <figcaption>
+ CE-20 Dimensional D Mode - Mode 3+4
+ </figcaption><audio controls=""><source src=
+ "/blog/music/2023-03-18/audio/ce-20-dimensional-d-3-4.mp3">
+ <p>Download <a href="/blog/music/2023-03-18/audio/ce-20-dimensional-d-3-4.mp3"
+ rel="me noopner"
+ target="_blank">MP3</a></p></audio>
+ </figure>
+ <p>These are always so cool to hear. When you get into the combo modes
+ you start getting more &quot;chorus&quot; and less just
+ &quot;width/movement&quot;. But these are interesting to listen to
+ compared to the clean. There is subtle differences - but they&#39;re
+ there! It&#39;s almost like it is now less stark and smoother. Like the
+ notes are lathered in butter, mmm!</p>
+ <h4>CE -1</h4>
+ <p>Okay, now on to the real show, the CE-1. Not much to say about this
+ one. It&#39;s a CE-1, you have an &quot;intensity&quot; knob, and
+ it&#39;s so rich. The delay rate is much slower than you would expect,
+ almost logarithmic. But when you get past noon it starts to get quite
+ seasick.<br>
+ <small><em>Editors note: 7 o&#39;clock may be a bit higher than 7. None
+ of these pedals have freaking numbers on their knobs, so it&#39;s all a
+ guess. But it&#39;s a bit up from off</em></small></p>
+ <figure>
+ <figcaption>
+ CE-20 CE-1 Mode - Intensity 7 o&#39;clock
+ </figcaption><audio controls=""><source src=
+ "/blog/music/2023-03-18/audio/ce-20-ce-1-7oclock.mp3">
+ <p>Download <a href="/blog/music/2023-03-18/audio/ce-20-ce-1-7oclock.mp3"
+ rel="me noopner"
+ target="_blank">MP3</a></p></audio>
+ </figure>
+ <figure>
+ <figcaption>
+ CE-20 CE-1 Mode - Intensity 10 o&#39;clock
+ </figcaption><audio controls=""><source src=
+ "/blog/music/2023-03-18/audio/ce-20-ce-1-10oclock.mp3">
+ <p>Download <a href="/blog/music/2023-03-18/audio/ce-20-ce-1-10oclock.mp3"
+ rel="me noopner"
+ target="_blank">MP3</a></p></audio>
+ </figure>
+ <h3>Multivox CB-1 Chorus Box</h3>
+ <p>The Multivox CB-1 Chorus Box is a CE-1 clone, according to the gear
+ page, it&#39;s literally just the same circuit and components. I got my 5
+ years ago because, well, I love chorus. Currently, a part of my rack unit
+ to be used with my synths, this chorus is just so smooth. But the biggest
+ trouble is dialing in the right level. You&#39;ll notice for the CB-1
+ demos it&#39;s a different demo recording. I had to move my setup and I
+ accidentally wiped the RC-3. But because the CB-1 can be a bit tricky to
+ dial in, it&#39;s a bit quieter than the other demo tracks. But the level
+ control is one of my favorites, as it can add some crunch to the tone on
+ the peaks, adding a lot of flavor. I am running my guitar through the
+ &quot;hi&quot; input, because it gives me a bit more play with the input
+ level.</p>
+ <h4>Chorus</h4>
+ <figure>
+ <figcaption>
+ CB-1 Chorus Mode - Intensity 7 o&#39;clock
+ </figcaption><audio controls=""><source src="/blog/music/2023-03-18/audio/cb-1-7oclock.mp3">
+ <p>Download <a href="/blog/music/2023-03-18/audio/cb-1-7oclock.mp3"
+ rel="me noopner"
+ target="_blank">MP3</a></p></audio>
+ </figure>
+ <figure>
+ <figcaption>
+ CB-1 Chorus Mode - Intensity 10 o&#39;clock
+ </figcaption><audio controls=""><source src=
+ "/blog/music/2023-03-18/audio/cb-1-10oclock.mp3">
+ <p>Download <a href="/blog/music/2023-03-18/audio/cb-1-10oclock.mp3"
+ rel="me noopner"
+ target="_blank">MP3</a></p></audio>
+ </figure>
+ <figure>
+ <figcaption>
+ CB-1 Chorus Mode - Intensity 2 o&#39;clock
+ </figcaption><audio controls=""><source src="/blog/music/2023-03-18/audio/cb-1-2oclock.mp3">
+ <p>Download <a href="/blog/music/2023-03-18/audio/cb-1-2oclock.mp3"
+ rel="me noopner"
+ target="_blank">MP3</a></p></audio>
+ </figure>
+ <h4>Vibrato</h4>
+ <p>While this is mono, so it&#39;s acting like a straight vibrato. When
+ playing in stereo this creates it&#39;s own chorus, the stereo outs are
+ &quot;dry&quot; and &quot;wet&quot;. This differs from the CE-1 chorus
+ too, so it&#39;s like 2 chorus pedals in one. These demos are in
+ mono.</p>
+ <figure>
+ <figcaption>
+ CB-1 Vibrato Mode - Rate 10 o&#39;clock, Depth 2 o&#39;clock
+ </figcaption><audio controls=""><source src=
+ "/blog/music/2023-03-18/audio/cb-1-vibrato-d2-r10.mp3">
+ <p>Download <a href="/blog/music/2023-03-18/audio/cb-1-vibrato-d2-r10.mp3"
+ rel="me noopner"
+ target="_blank">MP3</a></p></audio>
+ </figure>
+ <figure>
+ <figcaption>
+ CB-1 Vibrato Mode - Rate 2 o&#39;clock, Depth 10 o&#39;clock
+ </figcaption><audio controls=""><source src=
+ "/blog/music/2023-03-18/audio/cb-1-vibrato-d10-r2.mp3">
+ <p>Download <a href="/blog/music/2023-03-18/audio/cb-1-vibrato-d10-r2.mp3"
+ rel="me noopner"
+ target="_blank">MP3</a></p></audio>
+ </figure>
+ <h4>CB-1 Off with Level Boost</h4>
+ <p>The CB-1 when over driven (just by the guitar itself) gets really warm
+ crunch to signal, and it&#39;s a lot of fun. I usually run my Model D
+ through this and I love it.</p>
+ <figure>
+ <figcaption>
+ CB-1 Off - Level to a point where when I dig in it clips heavily
+ </figcaption><audio controls=""><source src=
+ "/blog/music/2023-03-18/audio/cb-1-off-with-level.mp3">
+ <p>Download <a href="/blog/music/2023-03-18/audio/cb-1-off-with-level.mp3"
+ rel="me noopner"
+ target="_blank">MP3</a></p></audio>
+ </figure>
+ <h3>Walrus Audio Julia</h3>
+ <p>I picked up the Julia because it&#39;s such a versatile chorus: giving
+ you control over the rate, depth, lag, waveform, and mix. This lets you
+ craft basically ANY chorus sound you want. Exploring sounds, I&#39;ve
+ noticed the major limiter being the rate. The Julia is just SO fast. Even
+ at min rate, it&#39;s still faster than like 1/3 of the Boss rates. But
+ the sounds are still amazing!</p>
+ <figure>
+ <figcaption>
+ Julia - Triangle Wave, Rate 7 o&#39;clock, Depth 2 o&#39;clock, Lag 3
+ o&#39;clock, Mix 12 o&#39;clock (chorus)
+ </figcaption><audio controls=""><source src=
+ "/blog/music/2023-03-18/audio/julia-chorus-1.mp3">
+ <p>Download <a href="/blog/music/2023-03-18/audio/julia-chorus-1.mp3"
+ rel="me noopner"
+ target="_blank">MP3</a></p></audio>
+ </figure>
+ <figure>
+ <figcaption>
+ Julia - Sine Wave, Rate 10 o&#39;clock, Depth 2 o&#39;clock, Lag 9
+ o&#39;clock, Mix 12 o&#39;clock (chorus)
+ </figcaption><audio controls=""><source src=
+ "/blog/music/2023-03-18/audio/julia-chorus-2.mp3">
+ <p>Download <a href="/blog/music/2023-03-18/audio/julia-chorus-2.mp3"
+ rel="me noopner"
+ target="_blank">MP3</a></p></audio>
+ </figure>
+ <figure>
+ <figcaption>
+ Julia - Sine Wave, Rate 9 o&#39;clock, Depth 3 o&#39;clock, Lag 9
+ o&#39;clock, Mix 12 o&#39;clock (chorus)
+ </figcaption><audio controls=""><source src=
+ "/blog/music/2023-03-18/audio/julia-chorus-3.mp3">
+ <p>Download <a href="/blog/music/2023-03-18/audio/julia-chorus-3.mp3"
+ rel="me noopner"
+ target="_blank">MP3</a></p></audio>
+ </figure>
+ <figure>
+ <figcaption>
+ Julia - Triangle Wave, Rate 8 o&#39;clock, Depth 12 o&#39;clock, Lag
+ 12 o&#39;clock, Mix 5 o&#39;clock (vibrato, max)
+ </figcaption><audio controls=""><source src=
+ "/blog/music/2023-03-18/audio/julia-vibrato.mp3">
+ <p>Download <a href="/blog/music/2023-03-18/audio/julia-vibrato.mp3"
+ rel="me noopner"
+ target="_blank">MP3</a></p></audio>
+ </figure>
+ <h2>Thoughts</h2>
+ <p>Realistically? I love every single one of these choruses. It&#39;s
+ such an amazing effect, and I was messing around with the dirty channel
+ too, which still sounded great! The CB-1 was by no means a steal, but
+ it&#39;s my favorite chorus tone. But it comes with some quirks being a
+ late 70, early 80s device. The CE-20 is amazing but very much a &quot;mid
+ 00s digital pedal&quot; giving some of that digital-ness to it,
+ especially when mixing with other digital pedals. I&#39;m sure you heard
+ the high pitched wine in the background. I EQ&#39;d it out, but it&#39;s
+ there, and it bothers me. I think getting a CE-2w would give me a lot of
+ the options I want from this, without those digital artifacts. The CE-20
+ would be perfect if it had a vibrato mode, given the CE-1 has one, and
+ really make it the perfect all-in-one. But given I&#39;ve had this pedal
+ for at least 12 years (probably closer to 13. I can dig out the box and
+ see if I kept the receipt). I got in in college as my first ever chorus.
+ I was enamoured with it. I&#39;d be on my board today if it wasn&#39;t so
+ big. The Julia is the perfect multi-tool chorus, and I&#39;ve been really
+ happy with it. But it lacks that really SLOW rate that the Boss pedals
+ have, making it a BIT harder to really dial in the CE-1 tones.</p>
+ <p>I joked on mastodon that I was did this to convince myself I don&#39;t
+ NEED a CE-2w or DC-2w...and now I want them even more!</p>
+ </article>
+ ]]>
+ </description>
+ </item>
+ <item>
+ <title>Music: Reworking my THR100HD</title>
+ <link>https://www.senders.io/blog/music/2023-01-06/</link>
+ <guid isPermaLink="true">https://www.senders.io/blog/music/2023-01-06/index.html</guid>
+ <pubDate>Fri, 06 Jan 2023 00:00:00 -0500</pubDate>
+ <description>
+ <![CDATA[
+ <article>
+ <h1>Music Blog?!</h1>
+ <p>I wanted to make a little blog section to just talk about my music
+ making. Mainly, to save my friends from enduring my thinking out
+ loud.</p>
+ <h2>Reworking my THR100HD</h2>
+ <p>I have a <a href=
+ "https://usa.yamaha.com/products/musical_instruments/guitars_basses/amps_accessories/thr100hd/index.html"
+ rel="external noopener noreferrer"
+ target="_blank">Yamaha THR100H Dual</a> which is a nice modeling amp
+ with two &quot;amps&quot;. Typically, I run these in parallel so I am
+ running through BOTH at the same time. As of late I am actually
+ considering moving to dialing in separate tones, and using my <a href=
+ "https://www.joyoaudio.com/product/88.html"
+ rel="external noopener noexternal"
+ target="_blank">Joyo PXL-Live</a> to act as a &quot;channel&quot;
+ switcher.</p>
+ <h3>Dual Amping</h3>
+ <p>Honestly, dual amping is my <em>favorite</em> thing. And I would hate
+ to give it up, as it gives my tones SO much depth. But I find when I try
+ to mix my guitars that extra depth just makes mixing a bit more of a
+ hassle than need be. But Mick of &quot;That Pedal Show&quot; on YouTube I
+ feel feels similarly, considering in <a href=
+ "https://www.youtube.com/watch?v=uMvhraRDvDs"
+ rel="noopener external noreferrer"
+ target="_blank">one of their &quot;use less&quot; challenge videos</a>
+ he used two amps for maximum tone shaping - which I feel adds some
+ justification to my efforts!</p>
+ <h2>Results after one night</h2>
+ <p>I spent an hour or so tonight messing around with my setup and came
+ out with the following high gain tone:</p>
+ <figure>
+ <figcaption>
+ &quot;Rezzed&quot; - Hi-gain dual amped Baritone guitar
+ </figcaption><audio controls=""><source src=
+ "/blog/music/2023-01-06/audio/rezzed-senders-io-audio.mp3">
+ <source src="/blog/music/2023-01-06/audio/rezzed-senders-io-audio.ogg">
+ <p>Download <a href=
+ "/blog/music/2023-01-06/audio/rezzed-senders-io-audio.mp3"
+ rel="me noopner"
+ target="_blank">MP3</a> or <a href=
+ "/blog/music/2023-01-06/audio/rezzed-senders-io-audio.ogg"
+ rel="me noopner"
+ target="_blank">OGG</a></p></audio>
+ <figcaption>
+ <em><small>No copyright</small></em>
+ </figcaption>
+ </figure>
+ <h3>Thoughts</h3>
+ <p>I feel its a bit... boomy still. There is some extra weight coming
+ from the &quot;clean&quot; channel that I think is causing this to lose
+ some clarity. I don&#39;t think if I wanted to add a mix around this
+ I&#39;d even end up keeping it. Or I would do some heavy EQing to that
+ channel. Here is what I have dialed in so far:</p>
+ <figure>
+ <img src=
+ "/blog/music/2023-01-06/img/thr100hd-settings-senders-io-img.jpg"
+ alt=
+ "A photo of the front face knobs of my Yamaha THR100HD. The top amp is set to the clean setting, the booster is turned off. The gain is roughly at 3 O&#39;Clock, Master at 9 O&#39;Clock, Bass at 10 O&#39;Clock, Middle at 2 O&#39;Clock, Presense off, Rever off, and Volume at 11 O&#39;Clock. The bottom amp is set to Modern, with the booster turned off. The gain is set to around 2:30, Master at 10 O&#39;Clock, Bass at a bit below 9 O&#39;Clock, Middle at 2 O&#39;Clock, Treble at 1 O&#39;Clock, Presents at 1:30, Rever off, and Volume a little above 9 O&#39;Clock"
+ role="img"
+ width="100%">
+ <figcaption>
+ <em>Current dual amp settings</em>
+ </figcaption>
+ </figure>
+ <h2>Future</h2>
+ <p>In the future I plan to setup different profiles between each the 5
+ channels per amp - so they&#39;re all useable and I can just do single
+ amping - as that provides me the FX loop until I setup a proper stereo
+ board. But until then - this is the setup I&#39;ve been using and I
+ rarely touch the back!</p>
+ </article>
+ ]]>
+ </description>
+ </item>
+ <item>
+ <title>How I Generate My RSS Feed</title>
+ <link>https://www.senders.io/blog/2023-01-06/</link>
+ <guid isPermaLink="true">https://www.senders.io/blog/2023-01-06/index.html</guid>
+ <pubDate>Fri, 06 Jan 2023 00:00:00 -0500</pubDate>
+ <description>
+ <![CDATA[
+ <article>
+ <h1>How I Generate My RSS Feed</h1>
+ <p>I only just now started supplying an RSS feed to you fine people! You
+ can subscribe to it at <a href=
+ "/blog/feed.rss">www.senders.io/blog/feed.rss</a>!</p>
+ <p>I decided rather than manually generating the file contents I’d hook
+ into my pre-existing publish scripts to be able to generate the RSS
+ file.</p>
+ <h2>Publishing blog posts - shell scripts ftw</h2>
+ <p>In <a href="/blog/2022-11-06/">My Markdown -&gt; HTML Setup</a> I
+ touch on how I publish my markdown files into HTML for this blog. But
+ what I don’t <em>really</em> touch on is the shell scripts that tie the
+ whole process together.</p>
+ <p>What I have is two, now three, scripts that feed the whole
+ process:</p>
+ <ol>
+ <li><code>publish-blog.sh</code> - the main script</li>
+ <li><code>compile-md.sh</code> - generates the HTML output</li>
+ <li><code>update-feed.sh</code> - generates/appends the RSS feed</li>
+ </ol>
+ <p>The <code>update-feed.sh</code> script is the new one I just
+ added.</p>
+ <p><code>publish-blog.sh</code> is the primary interface, I supply the
+ date of the post and the path to the md file and that calls compile and
+ update to automate the entire process.</p>
+ <p>Without going into TOO much detail you can view the latest versions of
+ the scripts at <a rel="external noopener noreferrer"
+ target="_blank"
+ href=
+ "https://git.senders.io/senders/senders-io/tree/">git.senders.io/senders/senders-io/tree/</a>.</p>
+ <p>But the gist of the scripts is I parse out the necessary details,
+ find/replace some tokens in template files I have setup for headers and
+ footers, and concat the outputs into the final output HTML files, and now
+ RSS feed.</p>
+ <h3>update-feed.sh</h3>
+ <p>Source File: <a rel="external noopener noreferrer"
+ target="_blank"
+ href=
+ "https://git.senders.io/senders/senders-io/tree/update-feed.sh">git.senders.io/senders/senders-io/tree/update-feed.sh</a></p>
+ <p>This script is pretty interesting. I didn’t want to deal with any XML
+ parsers and libraries to just maintain a proper XML rss file and push
+ items into the tree. Rather, I just follow a similar setup to my markdown
+ generation. I leverage some temporary files to hold the contents, a
+ static temp file for the previously generated content, and at the end
+ swap the temp file with the real file.</p>
+ <p>I take in an input of the publish date (this is the date from the
+ publish script), the title, and the HTML file path. These are all already
+ variables in the publish script, but also something I can manually supply
+ if I need to publish an older article, or something I wrote directly in
+ HTML.</p>
+ <p>The core of the script is found here:</p>
+ <pre><code>PUBDATE=$(date -d &quot;$1&quot; -R)
+TITLE=$2
+FILE_PATH=$3
+PERMALINK=$(echo &quot;${FILE_PATH}&quot; | sed -e &quot;s,${TKN_URL_STRIP},${URL_PREFIX},g&quot;)
+LINK=$(echo &quot;${PERMALINK}&quot; | sed -e &quot;s,${TKN_INDEX_STRIP},,g&quot;)
+
+# Generate TMP FEED File Header
+
+cat -s $FILE_RSS_HEADER &gt; $FILE_TMP_FEED
+sed -i -E &quot;s/${TKN_BUILDDATE}/${BUILDDATE}/g&quot; $FILE_TMP_FEED
+sed -i -E &quot;s/${TKN_PUBDATE}/${PUBDATE}/g&quot; $FILE_TMP_FEED
+
+# Generate TMP Item File
+
+cat -s $FILE_RSS_ITEM_HEADER &gt; $FILE_TMP_ITEM
+sed -i -E &quot;s~${TKN_TITLE}~${TITLE}~g&quot; $FILE_TMP_ITEM
+sed -i -E &quot;s/${TKN_PUBDATE}/${PUBDATE}/g&quot; $FILE_TMP_ITEM
+sed -i -E &quot;s,${TKN_PERMALINK},${PERMALINK},g&quot; $FILE_TMP_ITEM
+sed -i -E &quot;s,${TKN_LINK},${LINK},g&quot; $FILE_TMP_ITEM
+sed -n &quot;/&lt;article&gt;/,/&lt;\/article&gt;/p&quot; $FILE_PATH &gt;&gt; $FILE_TMP_ITEM
+cat -s $FILE_RSS_ITEM_FOOTER &gt;&gt; $FILE_TMP_ITEM
+
+# Prepend Item to items list and overwrite items file w/ prepended item
+## In order to &quot;prepend&quot; the item (so it&#39;s on top of the others)
+## We need to concat the tmp item file with the existing list, then
+## we can push the contents over the existing file
+## We use cat -s to squeeze the blank lines
+cat -s $FILE_ITEM_OUTPUT &gt;&gt; $FILE_TMP_ITEM
+cat -s $FILE_TMP_ITEM &gt; $FILE_ITEM_OUTPUT
+
+# Push items to TMP FEED
+cat -s $FILE_ITEM_OUTPUT &gt;&gt; $FILE_TMP_FEED
+
+# Push RSS footer to TMP FEED
+cat -s $FILE_RSS_FOOTER &gt;&gt; $FILE_TMP_FEED
+echo $FILE_TMP_FEED
+
+# Publish feed
+cat -s $FILE_TMP_FEED &gt; $FILE_RSS_OUTPUT
+
+echo &quot;Finished generating feed&quot;
+</code></pre>
+ <p>Some key takeaways are:</p>
+ <ol>
+ <li>sed lets you do regex with delimiters that AREN’T <code>/</code> so
+ you can substitute something that shouldn’t actually ever show up in
+ your regex. For me that is <code>~</code>.</li>
+ <li>I always forget you can use sed to extract between tokens - which
+ is how I get the CDATA for the RSS: <code>sed -n
+ &quot;/&lt;article&gt;/,/&lt;\/article&gt;/p&quot;</code></li>
+ <li><code>mktemp</code> is really REALLY useful - and I feel is under
+ utilized in shellscripting</li>
+ </ol>
+ <p>The obvious cracks are:</p>
+ <ol>
+ <li>I rely SO much on <code>sed</code> that it’s almost certainly going
+ to break</li>
+ <li>I don’t have much other flag control to do partial generation - so
+ if I need to do something either starting partway through or not finish
+ the full process, I don’t have that.</li>
+ <li>Sometimes things can break silently and it will go through, there
+ is no verification or like manual checking along the way before
+ publishing the feed.rss</li>
+ </ol>
+ <p>The final two can easily be managed by writing the feed to a location
+ that isn’t a temp file and I can manually do the <code>cat -s
+ $FILE_TMP_FEED &gt; www/blog/feed.rss</code> myself after I check it
+ over.</p>
+ <p>But for now I’ll see if I ever have to redo it. I don’t think anyone
+ will actually sub to this so I don’t really need to care that much if I
+ amend the feed.</p>
+ <h2>Where to put the feed URL</h2>
+ <p>I never intended to provide an RSS feed. I doubt anyone but me reads
+ this, and from my previous experience with gemini feed generation was a
+ bit of a headache.</p>
+ <p>A quick aside: I really only decided thanks to Mastodon. I was
+ thinking during the Twitter meltdown “what if twitter but RSS” (I know
+ super unique idea). But basically like a true “microblog”. And some OSS
+ tools to publish your blog. This got me reading the RSS spec and looking
+ into it more - which then lead me down the using the RSS readers more (in
+ conjunction with gemini, and Cortex podcast talking about using RSS
+ more).</p>
+ <p>But I’ve decided to just put the RSS feed in the blog index, on my
+ homepage, and that’s it. I don’t need it permanently in the header.</p>
+ <h2>Conclusion</h2>
+ <p>I didn’t have much to share here, it doesn’t make too much sense to
+ write a big post on what can be explained better by just checking out the
+ shell scripts in my git source. The code speaks better than I ever
+ could.</p>
+ <p>I really, really like shell scripting.</p>
+ </article>
+ ]]>
+ </description>
+ </item>
+ <item>
+ <title>Music Spotlight: My Top Album 2022</title>
+ <link>https://www.senders.io/blog/2023-01-03/</link>
+ <guid isPermaLink="true">https://www.senders.io/blog/2023-01-03/index.html</guid>
+ <pubDate>Tue, 03 Jan 2023 00:00:00 -0500</pubDate>
+ <description>
+ <![CDATA[
+ <article>
+ <h1>Music Spotlight: My Top Album 2022</h1>
+ <p>The hype is real. I only recently wrote last years, so I bet your hype
+ is nonexistent but for me I was writing that knowing full well there were
+ some bangers waiting to be unleashed in this year end review!</p>
+ <p>If you hadn’t read my previous post for 2021 the link is at the
+ bottom:</p>
+ <blockquote>
+ <p>The winner was “KANGA - You and I Will Never Die”</p>
+ </blockquote>
+ <h2>The album pool</h2>
+ <p>As always the criteria:</p>
+ <ul>
+ <li>it was released in 2022</li>
+ <li>it wasn’t a single</li>
+ <li>if it was an EP it has to be substantial and intentional</li>
+ </ul>
+ <p>And the albums are…</p>
+ <ul>
+ <li>Amining for Enrike - The Rats and the Children</li>
+ <li>And So I watch You from Afar - Jettison</li>
+ <li>Astronoid - Radiant Bloom</li>
+ <li>Carpenter Brut - Leather Terror</li>
+ <li>Cult of Luna - The Long Road North</li>
+ <li>Dance With the Dead - Driven to Madness</li>
+ <li>Elder - Innate Passage</li>
+ <li>Emma Ruth Rundle - EG2: Dowsing Voice</li>
+ <li>Giraffes? Giraffes! - Death Breath</li>
+ <li>God Mother - Obeveklig</li>
+ <li>Jay Hosking - Celestial spheres (and various other releases)</li>
+ <li>Long Distance Calling - Eraser</li>
+ <li>Ludovico Technique - Haunted People</li>
+ <li>MWWB - The Harvest (Mammoth Weed Wizard Bastard)</li>
+ <li>MØL - Diorama (Instrumental)</li>
+ <li>Psychostick - … and Stuff</li>
+ <li>Russian Circles - Gnosis</li>
+ <li>SIERRA - See Me Now</li>
+ <li>Starcadian - Shadowcatcher</li>
+ <li>Tina Dickow - Bitte Små Ryk</li>
+ <li>Toundra - Hex</li>
+ <li>Waveshaper - Forgotten Shapes</li>
+ </ul>
+ <p>2022’s playlist (+ 2 albums from bandcamp not on Spotify):</p>
+ <ul>
+ <li>
+ <a rel="external noopener noreferrer"
+ target="_blank"
+ href=
+ "https://open.spotify.com/playlist/2TCd910OyZcTjQ8l8Dc0Jy?si=efd0dc6286b84062">
+ [spotify] senders&#39; Releases 2022 Spotify Playlist</a>
+ </li>
+ <li>
+ <a rel="external noopener noreferrer"
+ target="_blank"
+ href=
+ "https://emmaruthrundle.bandcamp.com/album/eg2-dowsing-voice">[bandcamp]
+ Emma Ruth Rundle - EG2: Dowsing Voice</a>
+ </li>
+ <li>
+ <a rel="external noopener noreferrer"
+ target="_blank"
+ href=
+ "https://jayhosking.bandcamp.com/album/celestial-spheres">[bandcamp]
+ Jay Hosking - Celestial spheres</a>
+ </li>
+ </ul>
+ <h2>The Top 5</h2>
+ <p>In alphabetical order:</p>
+ <ul>
+ <li>Carpenter Brut - Leather Terror</li>
+ <li>Elder - Innate Passage</li>
+ <li>Emma Ruth Rundle - EG2: Dowsing Voice</li>
+ <li>Jay Hosking - Celestial spheres (and various other releases)</li>
+ <li>Tina Dickow - Bitte Små Ryk</li>
+ </ul>
+ <h2>Carpenter Brut - Leather Terror</h2>
+ <p>Some metal infused synthwave, Carpenter Brut managed to release a
+ catchy and heavy banger of an album. Featuring a few guest performers,
+ each of these tracks are unique and catchy in what I would consider a
+ very “same-y” genre. It’s nice having an infinite supply of retro synth
+ tracks to drive to, but sometimes it’s hard for one to really break
+ through into “oh shit yes!”. Typically, Starcadian is the one to do that
+ for me, as they add an extra layer to their tracks through their music
+ videos (each track being an “ear movie”).</p>
+ <p>Throughout the year I found myself coming back to a few tracks over
+ and over - especially when I was showering or doing some other short
+ activity and I just wanted something upbeat and fun as heck!</p>
+ <p>Some call out featured songs are The Widow Maker featuring Gunship,
+ Imaginary Fire featuring Greg Puciato, and Lipstick Masquerade featuring
+ Persha. I looped these three songs quite a bit. But there are quite a few
+ more to checkout.</p>
+ <h3>Favorite Track</h3>
+ <p>This is tough, as I looped those three songs quite a bit - each
+ bringing their own unique energy. So I’ll pick all three - my list my
+ rules:</p>
+ <ul>
+ <li>
+ <p>The Widow maker - feat. Gunship This track is representative of
+ the genre. It’s synthwave to the core.</p>
+ </li>
+ <li>
+ <p>Imaginary Fire - feat. Greg Puciato This is a metal track with
+ synths. Greg Puciato (of The Dillinger Escape Plan fame) is one of my
+ favorite vocalists and is immensely talented. This is probably my
+ favorite because I can’t get enough of his vocal style - the screams
+ and the clean vocals!</p>
+ </li>
+ <li>
+ <p>Lipstick Masquerade - feat. Persha This is a modern 80s track.
+ This is what retrowave was designed around and while tracks like The
+ Widow Maker are more typical of the genre, this is the song they all
+ are basing their sound off of. This is kill pop song.</p>
+ </li>
+ </ul>
+ <h3>Special Commendation - Non Stop Bangers</h3>
+ <p>You throw this album on and it hits you with just banger after banger.
+ I can’t keep myself from dancing. Even as I listen back as I write this
+ gemlog I am grooving in my chair! Like Kanga last year, this is just a
+ series of tracks that just make you dance.</p>
+ <h3>Album Link</h3>
+ <p><a rel="external noopener noreferrer"
+ target="_blank"
+ href=
+ "https://open.spotify.com/album/37PW0ipoWcjx3APS1MN0ql?si=HE0-siOqTsqVlJrlL9MWTw">
+ [spotify] Carpenter Brut - Leather Terror</a></p>
+ <h2>Elder - Innate Passage</h2>
+ <p>I toot’d a bit about this album, a later release in the year, this
+ took this year end review and flipped it on its head. I thought it was
+ wrapped up already with a separate release this year, but this makes the
+ decision so hard.</p>
+ <p>Elder came at us with what feels like a return to form. Having
+ previously released Omens in 2020 and a collaboration album in 2021,
+ Innate Passage takes the best parts of those two albums and builds on-top
+ of more “classic Elder” albums like Lore. Elder has carved out their own
+ niche in the genre making a blend of psych rock and stoner metal, with
+ each release leaning harder and harder into psychedelic realms. Innate
+ Passage has this almost ethereal feeling - especially in their opening
+ track Catastasis.</p>
+ <p>I think, however, they’ve left the doom and stoner metal behind. Dead
+ Roots Stirring and Elder (self titled) were certainly “Doomy” and in that
+ “doom/stoner” metal overlap. Lore, Reflections of a Floating World are
+ both still very “stoner metal”. But is playing psychedelic-metal with a
+ big muff automatically stoner metal? I think since Omens they’re
+ probably, as a band, firmly outside of the stoner metal field - and more
+ soundly in some psychedelic/prog metal genre?</p>
+ <p>They introduce themselves as such in their website actually!</p>
+ <figure>
+ <blockquote>
+ <p>genre-pushing rock band&nbsp;that melds heavy psychedelic sounds
+ with progressive elements and evocative soundscapes.</p>
+ </blockquote>
+ <figcaption>
+ <cite>— <a rel="external noopener noreferrer"
+ target="_blank"
+ href=
+ "https://beholdtheelder.com/elder-bio/">https://beholdtheelder.com/elder-bio/</a></cite>
+ </figcaption>
+ </figure>
+ <p>“Merged In Dreams - Ne Plus Ultra” is the track that flips this whole
+ argument on its head and shows that regardless, they’re still very much a
+ metal band and one that you’ll absolutely be head banging too, horn up
+ \m/.</p>
+ <h3>Favorite Track</h3>
+ <p>I think “Merged In Dreams - Ne Plus Ultra”. A nearly 15 minute track
+ that has everything in it you expect from Elder.</p>
+ <h3>Special Commendation - Excellent Vinyl Record Cover</h3>
+ <p>I LOVE their record covers when they do the circular inserts. You can
+ display this vinyl with having 3 separate views through the port, which
+ while purely aesthetic - it’s very nice!</p>
+ <p>The quality of the vinyl release was great, though I find any
+ non-black Vinyl has a 33% chance of being slightly warped upon arrival. I
+ am going to stick to traditional black vinyls from now on sadly. It’s too
+ freaking often</p>
+ <h3>Album Link</h3>
+ <p><a rel="external noopener noreferrer"
+ target="_blank"
+ href=
+ "https://open.spotify.com/album/5XClGjeje4c3qPjbtT898K?si=PFgsT8S_TD6hu4dwbFp3Jw">
+ [spotify] Elder - Innate Passage</a></p>
+ <h2>Emma Ruth Rundle - EG2: Dowsing Voice</h2>
+ <p>Her second album in her “Electric Guitar” series - Emma Ruth Rundle
+ (ERR from here on out) has released “Dowsing Voice” a haunting follow-up
+ to last years Engine of Hell. Holy holy HOLY hell, this album is an
+ impactful, artistic, just WOW. It’s hard to describe. I was listening to
+ it for this review and my partner, sitting behind me relaxing, said “What
+ the hell are you listening too, this is scary!”. And scary, emotional,
+ and difficult it is. ERR stretches the use of the “electric guitar”
+ title, as the focus here is the additional layers and voices added on-top
+ of the main tracks.</p>
+ <p>An experimental release that, at this time is only available on
+ bandcamp, is one I don’t put on frequently, but when I do am fully
+ captivated. If you like artistic records - please check this out.</p>
+ <h3>Favorite Track</h3>
+ <p>Probably: Keening into Ffynnon Llanllawer - I love the guitar(?) part
+ and the wailing/vocalization. It’s haunting. As a recording is
+ amazing.</p>
+ <p>Though “In the Cave of The Cailleach’s Death-Birth” is the /best/
+ track. Put some headphones on and give this a listen! Just amazing.</p>
+ <h3>Special Commendation - Album Art</h3>
+ <p>This album, IS ART, but the album art is just… really suiting the
+ music.</p>
+ <h3>Album Link</h3>
+ <p><a rel="external noopener noreferrer"
+ target="_blank"
+ href=
+ "https://emmaruthrundle.bandcamp.com/album/eg2-dowsing-voice">[bandcamp]
+ Emma Ruth Rundle - EG2: Dowsing Voice</a></p>
+ <h2>Jay Hosking - Celestial spheres (and various other releases)</h2>
+ <p>This is an interesting pick. Having released JUST in time for this
+ year, this is an album I have been engaging with in many, many ways.
+ Firstly, I am a patron of this performer via Patreon. They make music
+ videos (audio only performance videos of the songs) that they compile
+ into albums. Last year’s album is probably my actual favorite and likely
+ SHOULD’VE snuck into the top 5 because of the final track alone, which
+ was an emotional and just epic banger of a track (Linked at the bottom of
+ this review).</p>
+ <p>Celestial spheres is a compilation of 8 synth jams. Jay bills these as
+ semi-improvisational, and while the YT channel is a synth nerds dream of
+ these informative performances, the songs stand on their own. This one is
+ no exception. Using various different pieces of hardware synths,
+ grooveboxes, drum machines and traditional instruments - each track is
+ unique while still carrying this /energy/ and style. It’s so easy to hear
+ Jays tracks and know it’s him.</p>
+ <p>I’ve been following him for years and really enjoy the music he makes,
+ and the community he’s built up around his music. Due to the disconnected
+ nature of the singles (releasing effectively as YouTube videos prior to
+ the album drop) it’s difficult to ultimately rate these in these lists
+ since I don’t get a chance to really enjoy them /as an album/ until the
+ end of the year (the past two times happened like this where they came
+ out around the end of the year). And on my playlist “Future, Tense” is
+ present as it’s a “2022” album according to Spotify, but was out on
+ bandcamp in 2021, and that’s when I was gifted it by Jay.</p>
+ <p>So yeah - this whole section is like “disclaimer disclaimer” but if
+ you like groovy, typically instrumental synth music - check it out.</p>
+ <h3>The various other releases</h3>
+ <p>This year Jay released a few albums actually which I didn’t want to
+ include separately. If you enjoy this album (which was mostly comprised
+ of 2022 music, so was the primary focus) check out the other albums:</p>
+ <p><a rel="external noopener noreferrer"
+ target="_blank"
+ href=
+ "https://jayhosking.bandcamp.com/album/cinematic-works">https://jayhosking.bandcamp.com/album/cinematic-works</a>
+ <a rel="external noopener noreferrer"
+ target="_blank"
+ href=
+ "https://jayhosking.bandcamp.com/album/away-music-for-a-productive-day">https://jayhosking.bandcamp.com/album/away-music-for-a-productive-day</a>
+ <a rel="external noopener noreferrer"
+ target="_blank"
+ href=
+ "https://jayhosking.bandcamp.com/album/home-music-for-a-productive-day">https://jayhosking.bandcamp.com/album/home-music-for-a-productive-day</a></p>
+ <h3>Favorite Track</h3>
+ <p>Without out a doubt it’s Nychthemeron. It’s truly a wild track, with
+ so much happening in it. I suspect it was his favorite too since he made
+ an actual music video for it:</p>
+ <p><a rel="external noopener noreferrer"
+ target="_blank"
+ href="https://www.youtube.com/watch?v=Ka-xE3Qo3dA">[youtube] Jay
+ Hosking - Nychthemeron (Official Music video)</a></p>
+ <h3>Special Commendation - Each track has a live performance attached to
+ it!</h3>
+ <p>If you enjoy videos - these each have a corresponding YT video linked
+ at the bottom of the bandcamp page.</p>
+ <h3>Album Link</h3>
+ <p><a rel="external noopener noreferrer"
+ target="_blank"
+ href=
+ "https://jayhosking.bandcamp.com/album/celestial-spheres">[bandcamp]
+ Jay Hosking - Celestial spheres</a></p>
+ <h2>Tina Dickow - Bitte Små Ryk</h2>
+ <p>Tina Dickow (sometimes credited as Tina Dico, depending on the
+ release) is a fantastic Danish singer songwriter. Since her first solo
+ album she’s really found a way to elevate what is just folk indie pop.
+ Her songwriting, arrangements, and performances are always so rich. She
+ knows when to strip the song back - like Chefen Skal Ha&#39; Fri - while,
+ has certainly a lot happening beneath the lyrics - mixes them back a bit
+ to let the layered vocals cut through as the song builds. Each song has
+ so much to listen to! Picking out various instruments, layers, yet every
+ song would work performed just her and her acoustic guitar. I find her
+ style of pop music to be very engaging for that reason. I don’t often
+ listen to this style of music, but the production behind each track is so
+ good it hooks me in. That and her beautiful voice - which drew me in
+ first.</p>
+ <p>It’s a bit harder to talk about this album given the language barrier
+ (I do not speak Danish!) Which is a shame, since her lyrics are often
+ what I love about some of her previous albums. I’ve read the translations
+ and done my own as a learning exercise, but there is a layer missing
+ which is a shame given how strong this album is as whole.</p>
+ <p>I’ve spoken about Tina before in two previous gemlogs (<a href=
+ "gemini://senders.io/gemlog/2021-04-27-music-spotlight-awesome-eps.gmi">Music
+ Spotlight: Awesome EPs</a> and <a href=
+ "gemini://senders.io/gemlog/2021-05-18-5x5-playlists.gmi">5x5
+ Playlists</a> (both gemini:// links)) and is one of my absolute favorite
+ artists of all time. I’ve been slowly collecting her entire discography,
+ which can be tricky, given a lot of copies are out of print and the
+ remaining stock/used copies are often in Europe. (And that 5x5 playlist
+ is very telling given most of those artists have been featured in my top
+ albums lists and were winners! Is this foreshadowing?!)</p>
+ <h3>Favorite Track</h3>
+ <p>I shouldn’t have introduced this section - it has been so hard each
+ time! I think the title track, Bitte Små Ryk. It’s got everything there,
+ and is representative of the albums sound.</p>
+ <h3>Special Commendation - Lovely</h3>
+ <p>This whole album is lovely. There is emotion here too, and while I
+ don’t speak the language its often very clear. But I love Tina and her
+ music. It’s lovely and hits this spot in me thats just warm.</p>
+ <h3>Album Link</h3>
+ <p><a rel="external noopener noreferrer"
+ target="_blank"
+ href=
+ "https://open.spotify.com/album/6YV4Gomk4iy0dUyVqPDN7T?si=e3wO7G3XTI-ZIwhOSCswJA">
+ [spotify] Tina Dickow - Bitte Små Ryk</a></p>
+ <h2>My Top Pick</h2>
+ <p>This year has been especially hard, since I spent so much time
+ listening to 2021s releases which are some of my favorite of all time.
+ And between 2021 and 2022 (and mentioned in my 2021 spotlight) nearly
+ every one of my favorite artists released an album. So I have been
+ blessed with a lot to listen to.</p>
+ <p>Anyone following me on mastodon may have seen Tina Dickow just owning
+ my entire wrapped campaign, but with Elder releasing their album after
+ the data collection stops for wrapped, that certainly isn’t telling the
+ whole story.</p>
+ <p>And it wouldn’t be a top album list if I didn’t mention Starcadian
+ being consistently in the top 10 year after year, just narrowly missing
+ the top 5 - though technically, this release was in my 2020s list, as it
+ was available then, but had since been pulled, and was released
+ “officially” in 2022. Looking at what I can see it’s the same tracklist,
+ but the “inspired by” credits are entirely gone from the 2022
+ release.</p>
+ <h3>Elder - Innate Passage</h3>
+ <p>Each year picking the winner is hard. Part of the reason I do this is
+ I don’t really add stuff to the list I don’t like. A LOT of music comes
+ out each year, and I add what I listen to. I don’t listen to music I
+ don’t like - so by nature of the process - each album is a “top album”
+ for me.</p>
+ <p>But the top 5 is usually a mix of “omg obvs” and “yeah turns out I
+ threw that on way more than I expected” (Carpenter Brut). But its really
+ always a fight between those “obvs” - this year was Elder and Tina
+ Dickow. Their releases were seriously top tier and repeat listens.</p>
+ <p>Tina came in with the advantage of releasing in April, and Elder JUST
+ released theirs at the end of November. But I did some math on my
+ mastodon breaking down the comparison. Elder came at us with a longer
+ albums, under half as many tracks, and over 2x the average song length
+ (about 10min/track).</p>
+ <p>They didn’t waste a single second (neither did Tina) but just being
+ such an accessible album - just direct pure energy and power - BOOM! It
+ was great.</p>
+ <h3>This should’ve been a tie</h3>
+ <p>Honestly, I was ready to call it a tie. I am actually writing this
+ minutes before posting it, because that’s how undecided I am and how
+ close this is.</p>
+ <p>Tina Dickow deserves the number one slot any other year, and both her
+ and Elder’s albums I hope to see more of in the next few years! Both are
+ classic albums in their discographies (both albums of which I own and
+ spin regularly). I forced myself to pick, and just knowing me, my tastes,
+ and all the stuff I said above - I went with Elder. But seriously, listen
+ to this record - Tina manages to pack so much musicality in carving out a
+ unique sound and just amazing style. I love her &lt;3 :)</p>
+ <p>And if her music isn’t your jam - check out her guest tracks on the
+ Zero-7 stuff - angelic voice.</p>
+ <h2>Conclusion</h2>
+ <p>I am REALLY disappointed I had to choose between Elder and Tina Dickow
+ this year. Similarly, last year I had Raised by Swans, ERR, and Kanga!
+ And our winner in 2020 was Bell Witch. These ARE my top six favorite
+ musical artists currently active.</p>
+ <p>I’ll talk about music trends and my tastes later on. But I just wanted
+ to emphasize how much of a banger these last 3 years have been musically
+ and I am grateful I get to share these with you here.</p>
+ <p>I am really excited for 2023!</p>
+ <h2>This year’s playlist (2023)</h2>
+ <p><a rel="external noopener noreferrer"
+ target="_blank"
+ href=
+ "https://open.spotify.com/playlist/4zgdFBZslkcEq0xYFyME7U?si=4bc2bf7d015c4254">
+ [spotify] senders&#39; Releases 2023 Playlist</a></p>
+ <h2>Links</h2>
+ <p>If you use gemini:// you can check out my previous posts (until/unless
+ I decided to port those over too)</p>
+ <ul>
+ <li>
+ <a href=
+ "gemini://senders.io/gemlog/2022-11-30-music-spotlight-top-album-2021.gmi">
+ [gemini] Music Spotlight: Top Album 2021</a>
+ </li>
+ <li>
+ <a href=
+ "gemini://senders.io/gemlog/2021-03-21-music-spotlight-top-album-2020.gmi">
+ [gemini] Music Spotlight: Top Album 2020</a>
+ </li>
+ </ul>
+ <p>Thanks for reading! I don’t always crosspost - I am trying something
+ out :)</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: <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>
diff --git a/old/templates/blog-footer.html b/old/templates/blog-footer.html
new file mode 100644
index 0000000..a8adec8
--- /dev/null
+++ b/old/templates/blog-footer.html
@@ -0,0 +1,11 @@
+ </article>
+ <div id="footer">
+ <i>BLOG_DATE</i>
+ </div>
+ <div id='copyright'>
+ © 2023 senders dot io -
+ <a rel="license external noopener noreferrer" target="_blank" href="https://creativecommons.org/licenses/by-sa/4.0/">CC BY-SA 4.0</a>
+ unless otherwise noted.
+ </div>
+</body>
+</html>
diff --git a/old/templates/blog-header.html b/old/templates/blog-header.html
new file mode 100644
index 0000000..84ff557
--- /dev/null
+++ b/old/templates/blog-header.html
@@ -0,0 +1,31 @@
+<!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 - PAGE_TITLE</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://tech.lgbt/@senders">fedi</a>
+ </nav>
+ </div>
+ <div id="body">
+ <article>
diff --git a/old/templates/blog.html b/old/templates/blog.html
new file mode 100644
index 0000000..ac53f91
--- /dev/null
+++ b/old/templates/blog.html
@@ -0,0 +1,33 @@
+<!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 - Blog</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="/resume">Resume</a> <a href="/blog">Blog</a> <a href=
+ "https://github.com/s3nd3r5">Github</a>
+ </nav>
+ </div>
+ <div id='body'>
+ <article>
+ <h2>Title</h2>
+ <p>Text Here</p>
+ </article>
+ <div id='footer'>
+ <i>Date of post</i>
+ </div>
+ </div>
+</body>
+</html>
diff --git a/old/templates/page-footer.html b/old/templates/page-footer.html
new file mode 100644
index 0000000..bab1050
--- /dev/null
+++ b/old/templates/page-footer.html
@@ -0,0 +1,8 @@
+ <div id='copyright'>
+ © 2023 senders dot io -
+ <a rel="license external noopener noreferrer" target="_blank" href="https://creativecommons.org/licenses/by-sa/4.0/">CC BY-SA 4.0</a>
+ unless otherwise noted.
+ </div>
+ </div>
+</body>
+</html>
diff --git a/old/templates/page-header.html b/old/templates/page-header.html
new file mode 100644
index 0000000..d9a7417
--- /dev/null
+++ b/old/templates/page-header.html
@@ -0,0 +1,25 @@
+<!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 - PAGE_TITLE</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://tech.lgbt/@senders">fedi</a>
+ </nav>
+ </div>
+ <div id="body" class="PAGE_CLASS">
diff --git a/old/templates/page.html b/old/templates/page.html
new file mode 100644
index 0000000..a7dd5b3
--- /dev/null
+++ b/old/templates/page.html
@@ -0,0 +1,25 @@
+<!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 - {PAGE}</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="/resume">Resume</a> <a href="/blog">Blog</a> <a href=
+ "https://github.com/s3nd3r5">Github</a>
+ </nav>
+ </div>
+ <div id='body'></div>
+</body>
+</html>
diff --git a/old/templates/rss/rss-footer.xml b/old/templates/rss/rss-footer.xml
new file mode 100644
index 0000000..3a9dbde
--- /dev/null
+++ b/old/templates/rss/rss-footer.xml
@@ -0,0 +1,2 @@
+</channel>
+</rss>
diff --git a/old/templates/rss/rss-header.xml b/old/templates/rss/rss-header.xml
new file mode 100644
index 0000000..7eb169d
--- /dev/null
+++ b/old/templates/rss/rss-header.xml
@@ -0,0 +1,11 @@
+<?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>#BUILDDATE</lastBuildDate>
+ <pubDate>#PUBDATE</pubDate>
diff --git a/old/templates/rss/rss-item-footer.xml b/old/templates/rss/rss-item-footer.xml
new file mode 100644
index 0000000..d1a2e8b
--- /dev/null
+++ b/old/templates/rss/rss-item-footer.xml
@@ -0,0 +1,3 @@
+ ]]>
+ </description>
+ </item>
diff --git a/old/templates/rss/rss-item-header.xml b/old/templates/rss/rss-item-header.xml
new file mode 100644
index 0000000..ce5113b
--- /dev/null
+++ b/old/templates/rss/rss-item-header.xml
@@ -0,0 +1,7 @@
+ <item>
+ <title>#TITLE</title>
+ <link>#LINK</link>
+ <guid isPermaLink="true">#PERMALINK</guid>
+ <pubDate>#PUBDATE</pubDate>
+ <description>
+ <![CDATA[
diff --git a/old/tidy.conf b/old/tidy.conf
new file mode 100644
index 0000000..398985f
--- /dev/null
+++ b/old/tidy.conf
@@ -0,0 +1,14 @@
+indent: auto
+indent-spaces: 2
+indent-attributes: yes
+wrap: 80
+wrap-attributes: no
+markup: yes
+quote-marks: yes
+quote-nbsp: yes
+quote-ampersand: no
+uppercase-tags: no
+uppercase-attributes: no
+new-pre-tags: code,
+show-warnings: no
+hide-comments: yes
diff --git a/old/tidy.sh b/old/tidy.sh
new file mode 100755
index 0000000..6efdb2d
--- /dev/null
+++ b/old/tidy.sh
@@ -0,0 +1,13 @@
+#!/usr/bin/env bash
+
+if [ $# == 0 ]; then
+ find www/ -name '*.html' -type f -print -exec tidy -mq -config tidy.conf '{}' \;
+ if [ $? -lt 2 ]; then
+ exit 0
+ fi
+else
+ tidy -mq -config tidy.conf $@
+ if [ $? -lt 2 ]; then
+ exit 0
+ fi
+fi
diff --git a/old/update-blog-index.sh b/old/update-blog-index.sh
new file mode 100755
index 0000000..bab50b2
--- /dev/null
+++ b/old/update-blog-index.sh
@@ -0,0 +1 @@
+./compile-md.sh page "Blog Index" mds/blog/blog-index.md www/blog/index.html
diff --git a/old/update-feed.sh b/old/update-feed.sh
new file mode 100755
index 0000000..5b0785b
--- /dev/null
+++ b/old/update-feed.sh
@@ -0,0 +1,79 @@
+#!/usr/bin/env bash
+set -ex
+
+# static info
+## tokens
+TKN_BUILDDATE='#BUILDDATE'
+TKN_PUBDATE='#PUBDATE'
+TKN_TITLE='#TITLE'
+TKN_LINK='#LINK'
+TKN_PERMALINK='#PERMALINK'
+
+URL_PREFIX="https://www.senders.io"
+TKN_URL_STRIP="./www" # remove www file prefix for URL/LINK
+TKN_INDEX_STRIP="index.html" # remove index.html for LINK
+
+FILE_RSS_HEADER=./templates/rss/rss-header.xml
+FILE_RSS_FOOTER=./templates/rss/rss-footer.xml
+FILE_RSS_ITEM_HEADER=./templates/rss/rss-item-header.xml
+FILE_RSS_ITEM_FOOTER=./templates/rss/rss-item-footer.xml
+FILE_ITEM_OUTPUT=./rss/items.xml
+FILE_RSS_OUTPUT=./www/blog/feed.rss
+
+
+# dynamic info
+FILE_TMP_FEED=$(mktemp --suffix=.xml)
+FILE_TMP_ITEM=$(mktemp --suffix=.xml)
+BUILDDATE=$(date -R)
+
+# user input
+
+if [ $# -ne 3 ]; then
+ echo "./update-feed.sh PUBDATE TITLE FILE_PATH
+ Examples:
+ ./update-feed.sh 2022-12-31 \"Generating RSS feeds with bash\" ./www/blog/2022-12-31/index.html"
+ exit 1
+fi
+
+PUBDATE=$(date -d "$1" -R)
+TITLE=$2
+FILE_PATH=$3
+PERMALINK=$(echo "${FILE_PATH}" | sed -e "s,${TKN_URL_STRIP},${URL_PREFIX},g")
+LINK=$(echo "${PERMALINK}" | sed -e "s,${TKN_INDEX_STRIP},,g")
+
+# Generate TMP FEED File Header
+
+cat -s $FILE_RSS_HEADER > $FILE_TMP_FEED
+sed -i -E "s/${TKN_BUILDDATE}/${BUILDDATE}/g" $FILE_TMP_FEED
+sed -i -E "s/${TKN_PUBDATE}/${PUBDATE}/g" $FILE_TMP_FEED
+
+# Generate TMP Item File
+
+cat -s $FILE_RSS_ITEM_HEADER > $FILE_TMP_ITEM
+sed -i -E "s~${TKN_TITLE}~${TITLE}~g" $FILE_TMP_ITEM
+sed -i -E "s/${TKN_PUBDATE}/${PUBDATE}/g" $FILE_TMP_ITEM
+sed -i -E "s,${TKN_PERMALINK},${PERMALINK},g" $FILE_TMP_ITEM
+sed -i -E "s,${TKN_LINK},${LINK},g" $FILE_TMP_ITEM
+sed -n "/<article>/,/<\/article>/p" $FILE_PATH >> $FILE_TMP_ITEM
+cat -s $FILE_RSS_ITEM_FOOTER >> $FILE_TMP_ITEM
+
+# Prepend Item to items list and overwrite items file w/ prepended item
+## In order to "prepend" the item (so it's on top of the others)
+## We need to concat the tmp item file with the existing list, then
+## we can push the contents over the existing file
+## We use cat -s to squeeze the blank lines
+cat -s $FILE_ITEM_OUTPUT >> $FILE_TMP_ITEM
+cat -s $FILE_TMP_ITEM > $FILE_ITEM_OUTPUT
+
+# Push items to TMP FEED
+cat -s $FILE_ITEM_OUTPUT >> $FILE_TMP_FEED
+
+# Push RSS footer to TMP FEED
+cat -s $FILE_RSS_FOOTER >> $FILE_TMP_FEED
+echo $FILE_TMP_FEED
+
+# Publish feed
+cat -s $FILE_TMP_FEED > $FILE_RSS_OUTPUT
+
+echo "Finished generating feed"
+