<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type="text/xml" href="https://byemc.xyz/feed.xslt.xml"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.3.3">Jekyll</generator><link href="https://byemc.xyz/feed.xml" rel="self" type="application/atom+xml" /><link href="https://byemc.xyz/" rel="alternate" type="text/html" /><updated>2024-04-26T17:03:21+00:00</updated><id>https://byemc.xyz/feed.xml</id><title type="html">byespace</title><subtitle>Byes terrible website. Find all his crap here!</subtitle><entry><title type="html">April Fools</title><link href="https://byemc.xyz/2024/april-fools/" rel="alternate" type="text/html" title="April Fools" /><published>2024-04-01T00:00:00+00:00</published><updated>2024-04-01T00:00:00+00:00</updated><id>https://byemc.xyz/2024/april-fools</id><content type="html" xml:base="https://byemc.xyz/2024/april-fools/"><![CDATA[<p>If this is published, I forgot to come up with a joke.</p>]]></content><author><name></name></author><summary type="html"><![CDATA[If this is published, I forgot to come up with a joke.]]></summary></entry><entry><title type="html">Poetry to Waste a Day II</title><link href="https://byemc.xyz/2024/poetry-to-waste-a-day-ii/" rel="alternate" type="text/html" title="Poetry to Waste a Day II" /><published>2024-01-06T22:49:00+00:00</published><updated>2024-01-06T22:49:00+00:00</updated><id>https://byemc.xyz/2024/poetry-to-waste-a-day-ii</id><content type="html" xml:base="https://byemc.xyz/2024/poetry-to-waste-a-day-ii/"><![CDATA[<p><strong>Forgetfulness</strong></p>
<pre><code class="language-txt">My mind is like a
goldfish's floating in a
bowl of glass and water.
</code></pre>
<p><em>Bye</em></p>

<p>I forgot to work on anything today! Figures.</p>]]></content><author><name></name></author><category term="Random" /><category term="poetry" /><category term="haiku" /><category term="ptwa" /><summary type="html"><![CDATA[Forgetfulness My mind is like a goldfish's floating in a bowl of glass and water. Bye]]></summary></entry><entry><title type="html">Poetry to Waste a Day I</title><link href="https://byemc.xyz/2024/poetry-to-waste-a-day-i/" rel="alternate" type="text/html" title="Poetry to Waste a Day I" /><published>2024-01-05T23:32:00+00:00</published><updated>2024-01-05T23:32:00+00:00</updated><id>https://byemc.xyz/2024/poetry-to-waste-a-day-i</id><content type="html" xml:base="https://byemc.xyz/2024/poetry-to-waste-a-day-i/"><![CDATA[<p><strong>Laziness</strong></p>
<pre><code class="language-txt">If there were monarch
A monarch of laziness
I'd be king on throne.
</code></pre>
<p><em>Bye</em></p>

<p>I didn’t have the post that I wanted to publish out today, but I hope to have it by tomorrow!</p>]]></content><author><name></name></author><category term="Random" /><category term="poetry" /><category term="haiku" /><category term="ptwa" /><summary type="html"><![CDATA[Laziness If there were monarch A monarch of laziness I'd be king on throne. Bye]]></summary></entry><entry><title type="html">Button the Site</title><link href="https://byemc.xyz/2024/button-the-site/" rel="alternate" type="text/html" title="Button the Site" /><published>2024-01-04T21:30:00+00:00</published><updated>2024-01-04T21:30:00+00:00</updated><id>https://byemc.xyz/2024/button-the-site</id><content type="html" xml:base="https://byemc.xyz/2024/button-the-site/"><![CDATA[<p>WARNING: This post contains a lot of waffling on just to end with “i added buttons
to my home page” just so I can reach a <a href="https://byemc.xyz/2024/blog-every-day/">post a day</a>.
I promise tomorrow I’ll have something interesting.</p>

<p>My website is a bit of a mess, and I hope to fix that up over the coming
months. A couple of days ago, I <a href="/2024/homepage-update">updated the home page</a>
to look a <em>bit</em> more attractive. Now, we just need to make it cluttered again.</p>

<p>Recently, <a href="https://rknight.me">Robb Knight</a> added some 88x31 buttons to his
own website. These kinds of buttons originated from Geocities. Geocities
offered free web hosting provided you put an ad to their main site
on yours, which was just the following 88x31 animated GIF.<sup id="fnref:1" role="doc-noteref"><a href="#fn:1" class="footnote" rel="footnote">1</a></sup></p>

<p><img src="/assets/buttons/gc_icon.gif" alt="A GIF with five frames.
The first frame reads &quot;GeoCities&quot; on a red background.
The second frame says &quot;Your home on the web&quot;
The third frame is just a solid white image
The fourth frame has the GeoCities logo next to the word &quot;FREE&quot; over a white background
The fifth frame is similar but the word &quot;FREE&quot; now reads &quot;Web Hosting&quot;" title="GeoCities badge" /></p>

<p>People began designing their buttons to put on other sites to match the 
Geocities button. That has led us to today. 88x31s are still around, so
let’s add a few!</p>

<p>Yeah i got lazy today but it’s all on the homepage now! I promise to have a
better blog post tomorrow!!!</p>

<h2 id="footnotes">Footnotes</h2>
<div class="footnotes" role="doc-endnotes">
  <ol>
    <li id="fn:1" role="doc-endnote">
      <p>GIF and backstory from: <a href="https://tekeye.uk/computer_history/powered-by">https://tekeye.uk/computer_history/powered-by</a> <a href="#fnref:1" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
  </ol>
</div>]]></content><author><name></name></author><category term="News" /><category term="ramble" /><category term="tired" /><category term="homepage" /><category term="webdev" /><category term="meta" /><summary type="html"><![CDATA[WARNING: This post contains a lot of waffling on just to end with “i added buttons to my home page” just so I can reach a post a day. I promise tomorrow I’ll have something interesting.]]></summary></entry><entry><title type="html">Blog Every Day</title><link href="https://byemc.xyz/2024/blog-every-day/" rel="alternate" type="text/html" title="Blog Every Day" /><published>2024-01-03T20:00:00+00:00</published><updated>2024-01-03T20:00:00+00:00</updated><id>https://byemc.xyz/2024/blog-every-day</id><content type="html" xml:base="https://byemc.xyz/2024/blog-every-day/"><![CDATA[<p>When I <a href="/2024/byes-look-ahead-2024">posted on January 1st</a>, I didn’t realise just how nice it was just to
blog… anything. Something. I got this again when I blogged <a href="/2024/minecraft-on-ubuntu-22-04">yesterday</a>,
with content that may actually help somebody. With a streak of <em>two</em> whole days, I wonder: can I reach 10? 50?
100? 365?</p>

<p>So, I’m setting myself a challenge. Publish at least one blog post every day in 2024<sup id="fnref:1" role="doc-noteref"><a href="#fn:1" class="footnote" rel="footnote">1</a></sup>, no matter how stupid
or silly or dumb it is. If I actually do it, that would be a miracle.</p>

<p>And yes, this article counts<sup id="fnref:2" role="doc-noteref"><a href="#fn:2" class="footnote" rel="footnote">2</a></sup></p>

<h2 id="footnotes">Footnotes</h2>

<div class="footnotes" role="doc-endnotes">
  <ol>
    <li id="fn:1" role="doc-endnote">
      <p>This will be at LEAST 366 posts this year because it’s a leap year :3 <a href="#fnref:1" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
    <li id="fn:2" role="doc-endnote">
      <p><em>Lazyyyyyyyyyyyyy</em> <a href="#fnref:2" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
  </ol>
</div>]]></content><author><name></name></author><category term="News" /><category term="blogging" /><category term="meta" /><category term="challenge" /><summary type="html"><![CDATA[When I posted on January 1st, I didn’t realise just how nice it was just to blog… anything. Something. I got this again when I blogged yesterday, with content that may actually help somebody. With a streak of two whole days, I wonder: can I reach 10? 50? 100? 365?]]></summary></entry><entry><title type="html">Homepage update</title><link href="https://byemc.xyz/2024/homepage-update/" rel="alternate" type="text/html" title="Homepage update" /><published>2024-01-02T22:40:00+00:00</published><updated>2024-01-02T22:40:00+00:00</updated><id>https://byemc.xyz/2024/homepage-update</id><content type="html" xml:base="https://byemc.xyz/2024/homepage-update/"><![CDATA[<p>Hey there Byespace-ians<sup id="fnref:1" role="doc-noteref"><a href="#fn:1" class="footnote" rel="footnote">1</a></sup>! I redesigned the post list page here on my blog
and I also redesigned the homepage for byespace to have less fluff and
help promote my blog maybe hopefully.</p>

<p>Anyway that’s it for this short update!</p>

<h2 id="footnotes">Footnotes</h2>
<div class="footnotes" role="doc-endnotes">
  <ol>
    <li id="fn:1" role="doc-endnote">
      <p>This site is called byespace in many places behind the scenes<sup id="fnref:2" role="doc-noteref"><a href="#fn:2" class="footnote" rel="footnote">2</a></sup>, like the RSS feed! <a href="#fnref:1" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
    <li id="fn:2" role="doc-endnote">
      <p>It’s also the name of my <a href="https://bye.url.lol/discord">Discord server</a><sup id="fnref:3" role="doc-noteref"><a href="#fn:3" class="footnote" rel="footnote">3</a></sup> <a href="#fnref:2" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
    <li id="fn:3" role="doc-endnote">
      <p>Shameless plug <a href="#fnref:3" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
  </ol>
</div>]]></content><author><name></name></author><category term="News" /><category term="byemcxyz" /><category term="byespace" /><category term="meta" /><category term="webdev" /><summary type="html"><![CDATA[Hey there Byespace-ians1! I redesigned the post list page here on my blog and I also redesigned the homepage for byespace to have less fluff and help promote my blog maybe hopefully. This site is called byespace in many places behind the scenes[^2], like the RSS feed! &#8617;]]></summary></entry><entry><title type="html">How to run a Minecraft server on Ubuntu 22.04</title><link href="https://byemc.xyz/2024/minecraft-on-ubuntu-22-04/" rel="alternate" type="text/html" title="How to run a Minecraft server on Ubuntu 22.04" /><published>2024-01-02T15:22:00+00:00</published><updated>2024-01-02T15:22:00+00:00</updated><id>https://byemc.xyz/2024/minecraft-on-ubuntu-22-04</id><content type="html" xml:base="https://byemc.xyz/2024/minecraft-on-ubuntu-22-04/"><![CDATA[<p>This is a short guide<sup id="fnref:1" role="doc-noteref"><a href="#fn:1" class="footnote" rel="footnote">1</a></sup> explaining how to set up Minecraft<sup id="fnref:2" role="doc-noteref"><a href="#fn:2" class="footnote" rel="footnote">2</a></sup> on a server running
<a href="https://releases.ubuntu.com/jammy/">Ubuntu LTS 22.04</a>. It might work on other Linux
distributions, Ubuntu versions, or operating systems with modification.</p>

<p>This guide assumes you already have an Ubuntu server running
with connection to the internet, and access to a terminal on the server. If <a href="#installing-java">Java isn’t
installed</a>, you may also need root access (though this mightn’t always
be the case).</p>

<h2 id="installing-java">Installing Java</h2>

<p>Before we download Minecraft, we need to set up Java. If you already have Java 17 or 8
installed, you can <a href="#setting-up-minecraft">skip this step</a></p>

<p>If Java isn’t installed, or the Java version isn’t 17 or 8, you’ll need to install the 
correct Java.
As Minecraft 1.17 and later require Java 17, we can install that in Ubuntu using apt:</p>

<div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">sudo </span>apt update <span class="c"># Apt may not find the package for Java otherwise</span>
<span class="nb">sudo </span>apt <span class="nb">install </span>openjdk-17-jre-headless
</code></pre></div></div>

<p>If you’re using a Minecraft version before 1.17, swap out Java 17 for Java 8.</p>

<p>You might have an issue with multiple versions of Java being installed. You should check
what version you have with <code class="language-plaintext highlighter-rouge">java --version</code>, which should return something like this:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>openjdk 17.0.9 2023-10-17 <span class="c"># or 8.X.X if you're using a Minecraft version before 1.17</span>
OpenJDK Runtime Environment <span class="o">(</span>build 17.0.9+9-Ubuntu-122.04<span class="o">)</span>
OpenJDK 64-Bit Server VM <span class="o">(</span>build 17.0.9+9-Ubuntu-122.04, mixed mode, sharing<span class="o">)</span>
</code></pre></div></div>

<p>If it shows a different version, for example Java 11, we can change what version <code class="language-plaintext highlighter-rouge">java</code>
maps to with <code class="language-plaintext highlighter-rouge">update-alternatives</code>. Run <code class="language-plaintext highlighter-rouge">update-alternatives --display java</code> to get output
like this:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>java - manual mode
  <span class="nb">link </span>best version is /usr/lib/jvm/java-17-openjdk-arm64/bin/java
  <span class="nb">link </span>currently points to /usr/lib/jvm/java-11-openjdk-arm64/bin/java
  <span class="nb">link </span>java is /usr/bin/java
  slave java.1.gz is /usr/share/man/man1/java.1.gz
/usr/lib/jvm/java-11-openjdk-arm64/bin/java - priority 1111
  slave java.1.gz: /usr/lib/jvm/java-11-openjdk-arm64/man/man1/java.1.gz
/usr/lib/jvm/java-17-openjdk-arm64/bin/java - priority 1711
  slave java.1.gz: /usr/lib/jvm/java-17-openjdk-arm64/man/man1/java.1.gz
</code></pre></div></div>

<p>Make note of the path that has <code class="language-plaintext highlighter-rouge">java-8</code> or <code class="language-plaintext highlighter-rouge">java-17</code> in it. Now we can change the Java
version using the following command, replacing the path to Java with the one you made
note of earlier:</p>

<div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">sudo </span>update-alternatives <span class="nt">--set</span> java /path/to/java/17/bin/java
</code></pre></div></div>

<p>Java should return the correct version now.</p>

<h2 id="making-a-user">Making a user</h2>

<p>For security reasons, we’re going to give our Minecraft server it’s own user.
If you have root access, this is pretty easy, otherwise ask your sysadmin for
help. We’ll make a new user using <code class="language-plaintext highlighter-rouge">useradd</code> as root:</p>

<div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">sudo </span>useradd minecraft <span class="nt">--shell</span> bash <span class="nt">-m</span> <span class="c"># `-m` creates a folder for the new user's file, `--shell bash` gives us an easier shell to work with.</span>
</code></pre></div></div>

<p>Then we’ll switch to that user using <code class="language-plaintext highlighter-rouge">sudo</code>:</p>

<div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">sudo</span> <span class="nt">-i</span> <span class="nt">-u</span> minecraft
</code></pre></div></div>

<p>We can then create a folder to hold our Minecraft instance.</p>

<div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">mkdir </span>minecraft <span class="c"># you can name this whatever you want, just make sure to change the examples later</span>
<span class="nb">cd </span>minecraft
</code></pre></div></div>

<h2 id="setting-up-minecraft">Setting up Minecraft</h2>

<p>Finally, Minecraft. To get the latest version of the server, 
<a href="https://www.minecraft.net/en-us/download/server">visit minecraft.net/download/server</a> and
copy the link leading to <code class="language-plaintext highlighter-rouge">minecraft_server.1.XX.X.jar</code> (this will differ depending on what
the latest version is).</p>

<p>Inside your newly-created folder, run <code class="language-plaintext highlighter-rouge">wget https://piston-data.mojang.com/server.jar</code>,
replacing the link with the one you copied. Now we can run this jar file:</p>

<div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code>java <span class="nt">-Xmx1024M</span> <span class="nt">-Xms1024M</span> <span class="nt">-jar</span> minecraft_server.1.XX.X.jar nogui <span class="c">#replace the filename with the name of the file you downloaded.</span>
</code></pre></div></div>

<p>The <code class="language-plaintext highlighter-rouge">-Xmx</code> and <code class="language-plaintext highlighter-rouge">-Xms</code> arguments set the amount of RAM available to the server. 1GB is
the minimum you should set, and I recommend to increase this if possible. The server should
close after saying <code class="language-plaintext highlighter-rouge">You need to agree to the EULA in order to run the server. Go to eula.txt for more info.</code></p>

<p>After reading the <a href="https://aka.ms/MinecraftEULA">EULA</a>, use a text editor like <code class="language-plaintext highlighter-rouge">nano</code> to
modify the <code class="language-plaintext highlighter-rouge">eula.txt</code> file that was created in that folder, and change the line reading
<code class="language-plaintext highlighter-rouge">eula=false</code> to <code class="language-plaintext highlighter-rouge">eula=true</code>.</p>

<p><img src="https://i.byemc.xyz/yEJE0/HabiWOzU90.png/raw" alt="A terminal window showing eula.txt open in nano" /></p>

<p>Run the server jar again, and it should start generating a world. While it’s doing this,
you should get the IP address for your server. The method for doing this differs depending
on how you’re running the server. If it’s on your network, use it’s local IP. If you’re
using a VPS, use the VPS’ public IP. If you’re using a virtual machine like I am, use
the IP address the VM software gives you. When you put this into Minecraft, it should
fill in the MOTD as “A Minecraft Server” and show 0 of 20 players, like in my screenshot.
You can change all of these and more in the <code class="language-plaintext highlighter-rouge">server.properties</code> file.</p>

<p><img src="https://i.byemc.xyz/yEJE0/TazoxOcI41.png/raw" alt="A Minecraft window showing a server with no icon, the generic MOTD and 20 available
player slots" /></p>

<p>You should be able to join the server now, and be able to run commands as op in the
terminal window.</p>

<p><img src="https://i.byemc.xyz/yEJE0/qIRowOWI16.png/raw" alt="A Minecraft window connected to the server. The player is looking at a wall of dirt
while holding a wooden pickaxe" /></p>

<p><img src="https://i.byemc.xyz/yEJE0/MAPeDEru44.png/raw" alt="Two windows open: In one, a terminal window showing the player ByeBai as recently 
banned, the other a Minecraft window showing that the player 
was banned" /></p>

<p>That’s the basics! There’s a lot more you can do configuration-wise, such as securing the
server for opening to the wider internet or using modified server jars (Paper, Spigot, the
like). Maybe I’ll make more blog posts like this one if you’ve found it useful!</p>

<h2 id="footnotes">Footnotes</h2>

<div class="footnotes" role="doc-endnotes">
  <ol>
    <li id="fn:1" role="doc-endnote">
      <p>Absolutely not filler lol <a href="#fnref:1" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
    <li id="fn:2" role="doc-endnote">
      <p>This guide will be using Minecraft 1.20.4, but should work with most other versions. YMMV. <a href="#fnref:2" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
  </ol>
</div>]]></content><author><name></name></author><category term="Guides" /><category term="minecraft" /><category term="server" /><category term="ubuntu" /><category term="ubuntu-22-04" /><category term="linux" /><summary type="html"><![CDATA[This is a short guide1 explaining how to set up Minecraft2 on a server running Ubuntu LTS 22.04. It might work on other Linux distributions, Ubuntu versions, or operating systems with modification. Absolutely not filler lol &#8617; This guide will be using Minecraft 1.20.4, but should work with most other versions. YMMV. &#8617;]]></summary></entry><entry><title type="html">Bye’s Look-ahead 2024</title><link href="https://byemc.xyz/2024/byes-look-ahead-2024/" rel="alternate" type="text/html" title="Bye’s Look-ahead 2024" /><published>2024-01-01T20:00:00+00:00</published><updated>2024-01-01T20:00:00+00:00</updated><id>https://byemc.xyz/2024/byes-look-ahead-2024</id><content type="html" xml:base="https://byemc.xyz/2024/byes-look-ahead-2024/"><![CDATA[<p>It’s 2024! I hope you’re having a good start to the year. Most people would be doing
self-reflections for the past year, but I don’t really have much to self-reflect on.
Instead, I’ve decided to take a look ahead at what I’d like to get done over the next 
year — New Years resolutions, I guess. This way, on 1 January 2025, you can hold me
accountable for not doing them :p</p>

<p>Before I get into the list, I’d like to show my support to those in Japan who are 
affected by the 
<a href="https://www3.nhk.or.jp/nhkworld/en/news/20240101_26/">earthquake and tsunami</a> that is 
happening as I write this. My heart goes out to you.</p>

<p>I’m going to split this post into different sections based on each thing I’d like to do.
Some of these range from “super simple” to “Bye what the fuck are you doing.”</p>

<h2 id="byecorps-ids-tremble">ByeCorps IDs (<em>tremble</em>)</h2>

<p>I release some projects under the name <a href="https://byecorps.com">ByeCorps</a> every once in a
while. Most of the projects I’m “working” on for ByeCorps are web services, which may
require accounts (like <a href="https://raibu.live">raibu.live</a> and 
<a href="https://parked.lol">parked.lol</a>).</p>

<p>I could make a separate account system for each service, but that just gets tiring. I’d 
rather have an OAuth-like<sup id="fnref:1" role="doc-noteref"><a href="#fn:1" class="footnote" rel="footnote">1</a></sup> system in place before I need to make accounts for these 
because it’ll make the user experience <em>way</em> better if they use more than one.</p>

<p>I’ve already been working on it, and I’ve gotten pretty far! I’m thinking of starting 
fresh so the code can actually be… clean. I hope to get it out before the summertime! 
(doubt)</p>

<h2 id="parkedlol-lol">parked.lol, lol</h2>

<p>Last June, <a href="https://adam.omg.lol">Adam Newbold</a>
<a href="https://i.byemc.xyz/yEJE0/tAjIyiQa92/raw.png">had a brainwave</a>: a fun parking page 
service. We decided to do it as a joint project. 
He registered the fun domain <a href="https://parked.lol">parked.lol</a> and spun up a server for it
with Caddy and a basic PHP website, and left the rest to me.</p>

<p>Sadly, I haven’t done too much. The basic service at its core is up and running. If you
point your domain at <code>128.140.90.164</code> or CNAME to <code>parked.lol</code>, your
domain will have a basic parked page until you decide to do something with it. Some page
customisation features are actually built in the backend, but there’s no way to set
them yourself.</p>

<p>So, for 2024, I’d like to finally finish parked.lol. When I was hunting down that 
screenshot in the first paragraph, I found a ton of ideas for the service I’d forgotten 
about. Here’s a list of the stuff I’d like to make for it over the next year (if I don’t 
forget about it lol). Of course, this is to make it a fun service to find yourself on!</p>

<ul>
  <li>Page customisation</li>
  <li>Global chatroom with your nickname and what domain you ended up on</li>
  <li>Minigames (maybe multiplayer?)</li>
  <li>“What should I put here” box</li>
  <li>Guestbook</li>
</ul>

<p>If I don’t do these you can eat me.</p>

<h2 id="raibulive">raibu.live</h2>

<p>In 2022, I registered raibu.live with the intention of making a service to allow someone
to simulcast easily to Twitch, YouTube or an <a href="https://owncast.online">Owncast</a> server, as
well as provide an independent place to watch internet streams without tracking or ads.<sup id="fnref:2" role="doc-noteref"><a href="#fn:2" class="footnote" rel="footnote">2</a></sup> 
As this is a big project, I’ve decided to offer several services with raibu, most of which
will be free. I don’t expect to launch raibu this year, but I’d like to get free stream 
alerts done over the next 366<sup id="fnref:3" role="doc-noteref"><a href="#fn:3" class="footnote" rel="footnote">3</a></sup> days.</p>

<h2 id="review-my-game">Review My Game</h2>

<p>I got the idea for <a href="https://rmg.lol">Review My Game</a> one and a half years ago, but I still
haven’t produced any episodes. I hope I can get something out in 2024. I’m estimating my
game library to be over 300 games.</p>

<h2 id="waves">waves</h2>

<p>waves is the new name<sup id="fnref:4" role="doc-noteref"><a href="#fn:4" class="footnote" rel="footnote">4</a></sup> for the <a href="https://radio.byemc.xyz">internet radio player</a> 
I’m currently developing. I plan to have the more mobile-friendly rewrite finished within
a few months.</p>

<h2 id="youtube">YouTube</h2>

<p>I’ve got a few plans to make actual YouTube videos over the next year. I just don’t really
have the time to write scripts, gather B-roll<sup id="fnref:5" role="doc-noteref"><a href="#fn:5" class="footnote" rel="footnote">5</a></sup>, record the audio, edit the video then
publish it.</p>

<h2 id="games">Games</h2>

<p>I keep getting silly ideas for video games to make, and I think instead of putting out
good games I’m just going to make what I feel like making, no matter how small, and just
put it out. It’s a good way to develop my skill by doing something I maybe amn’t so proud
of, but it’s still goofy nevertheless.</p>

<p>I’ve got this idea for a game inspired by a <a href="https://youtu.be/4odI2_50Gms">video I saw on the Wii Ambassador program by 
f4mi</a> recently where you just go around connecting people’s
consoles to the internet and fighting against rival ambassadors. I think it’d be pretty
funny.</p>

<p>Anyway, that’s everything I could think of when I was writing this. Thanks for reading,
and see you the next time I post!</p>

<h2 id="footnotes">Footnotes</h2>

<div class="footnotes" role="doc-endnotes">
  <ol>
    <li id="fn:1" role="doc-endnote">
      <p>Or maybe just proper OAuth. <a href="#fnref:1" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
    <li id="fn:2" role="doc-endnote">
      <p>There’ll be nothing stopping streamers from running their own ads but raibu won’t force ads on streamers like Twitch does with Affiliates. <a href="#fnref:2" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
    <li id="fn:3" role="doc-endnote">
      <p>It’s a leap year <a href="#fnref:3" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
    <li id="fn:4" role="doc-endnote">
      <p>It’s currently called “radio player” <a href="#fnref:4" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
    <li id="fn:5" role="doc-endnote">
      <p>I actually made <a href="https://youtube.com/@byemcstock">ByeMC Stock</a> for this purpose but I haven’t gotten the chance to record anything other than music games I suck at <a href="#fnref:5" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
  </ol>
</div>]]></content><author><name></name></author><category term="News" /><category term="look-ahead" /><summary type="html"><![CDATA[It’s 2024! I hope you’re having a good start to the year. Most people would be doing self-reflections for the past year, but I don’t really have much to self-reflect on. Instead, I’ve decided to take a look ahead at what I’d like to get done over the next year — New Years resolutions, I guess. This way, on 1 January 2025, you can hold me accountable for not doing them :p]]></summary></entry><entry><title type="html">Advent Of Code: Day 1 &amp;amp; 2</title><link href="https://byemc.xyz/2023/advent-of-code-day-1-and-2/" rel="alternate" type="text/html" title="Advent Of Code: Day 1 &amp;amp; 2" /><published>2023-12-02T00:00:00+00:00</published><updated>2023-12-02T00:00:00+00:00</updated><id>https://byemc.xyz/2023/advent-of-code-day-1-and-2</id><content type="html" xml:base="https://byemc.xyz/2023/advent-of-code-day-1-and-2/"><![CDATA[<p>I discovered <a href="https://adventofcode.com">Advent of Code</a> by accident when looking at <a href="https://rknight.me/advent-of-code-2023-day-one/">a post</a>
on <a href="https://rknight.me/">Robb Knight’s blog</a> this morning. I figured, “hey, this could be fun,” so I’m going to share my
progress. Even though I’m late</p>

<p>I’m going to use Python for this, in contrast with Robb’s PHP<sup id="fnref:1" role="doc-noteref"><a href="#fn:1" class="footnote" rel="footnote">1</a></sup>. I’ve kinda forgotten how to use it, so it’s good practice
in my book.</p>

<h2 id="day-1">Day 1</h2>

<h3 id="part-1">Part 1</h3>

<p>The challenge starts with giving you getting the first and last integer from a string. The Advent of Code site gives the
following example:</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>1abc2
pqr3stu8vwx
a1b2c3d4e5f
treb7uchet
</code></pre></div></div>

<p>Which result in <code class="language-plaintext highlighter-rouge">12</code>, <code class="language-plaintext highlighter-rouge">38</code>, <code class="language-plaintext highlighter-rouge">15</code>, and <code class="language-plaintext highlighter-rouge">77</code>. We then get the sum which is <code class="language-plaintext highlighter-rouge">142</code>.</p>

<p>To reproduce this in Python, I’m going to start by making a file<code class="language-plaintext highlighter-rouge">input.txt</code> to store my input, then a script to convert
this to a list, like this:</p>

<div class="language-py highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">with</span> <span class="nf">open</span><span class="p">(</span><span class="sh">"</span><span class="s">input.txt</span><span class="sh">"</span><span class="p">,</span> <span class="sh">"</span><span class="s">r</span><span class="sh">"</span><span class="p">)</span> <span class="k">as</span> <span class="n">ff</span><span class="p">:</span>
    <span class="n">strings</span> <span class="o">=</span> <span class="n">ff</span><span class="p">.</span><span class="nf">read</span><span class="p">()</span>

<span class="n">strings</span> <span class="o">=</span> <span class="n">strings</span><span class="p">.</span><span class="nf">splitlines</span><span class="p">()</span>

<span class="nf">print</span><span class="p">(</span><span class="n">strings</span><span class="p">)</span> <span class="c1"># ['1abc2', 'pqr3stu8vwx', 'a1b2c3d4e5f', 'treb7uchet']
</span></code></pre></div></div>

<p>We also need to remove all non-numeric characters from our strings. For this, I’m going to use RegEx with the <code class="language-plaintext highlighter-rouge">re</code> module.
Using the RegEx `` and <code class="language-plaintext highlighter-rouge">re.findall()</code>, we can remove anything that isn’t a number.</p>

<figure class="highlight"><pre><code class="language-python" data-lang="python"><span class="kn">import</span> <span class="n">re</span>

<span class="k">with</span> <span class="nf">open</span><span class="p">(</span><span class="sh">"</span><span class="s">input.txt</span><span class="sh">"</span><span class="p">,</span> <span class="sh">"</span><span class="s">r</span><span class="sh">"</span><span class="p">)</span> <span class="k">as</span> <span class="n">ff</span><span class="p">:</span>
    <span class="n">strings</span> <span class="o">=</span> <span class="n">ff</span><span class="p">.</span><span class="nf">read</span><span class="p">()</span>

<span class="n">regex</span> <span class="o">=</span> <span class="sh">"</span><span class="s">[0-9</span><span class="se">\n</span><span class="s">]</span><span class="sh">"</span>
<span class="n">x</span> <span class="o">=</span> <span class="n">re</span><span class="p">.</span><span class="nf">findall</span><span class="p">(</span><span class="n">regex</span><span class="p">,</span> <span class="n">strings</span><span class="p">)</span>
<span class="n">x</span> <span class="o">=</span> <span class="sh">""</span><span class="p">.</span><span class="nf">join</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>

<span class="n">x</span> <span class="o">=</span> <span class="n">x</span><span class="p">.</span><span class="nf">splitlines</span><span class="p">()</span>

<span class="nf">print</span><span class="p">(</span><span class="sh">"</span><span class="s">Numbers:</span><span class="sh">"</span><span class="p">,</span> <span class="n">x</span><span class="p">)</span> <span class="c1"># Numbers: ['12', '38', '12345', '7']</span></code></pre></figure>

<p>Note the <code class="language-plaintext highlighter-rouge">\n</code> in the RegEx. This preserves the newlines so we can still have our list. Then we concatenate the first and last
characters of each string, then get our total using <code class="language-plaintext highlighter-rouge">sum()</code></p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1"># Continuing from last codeblock
</span><span class="n">final</span> <span class="o">=</span> <span class="p">[]</span>

<span class="k">for</span> <span class="n">number</span> <span class="ow">in</span> <span class="n">x</span><span class="p">:</span>
    <span class="n">final</span><span class="p">.</span><span class="nf">append</span><span class="p">(</span><span class="nf">int</span><span class="p">(</span><span class="n">number</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">+</span> <span class="n">number</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]))</span>

<span class="nf">print</span><span class="p">(</span><span class="sh">"</span><span class="s">Numbers:</span><span class="se">\t</span><span class="sh">"</span><span class="p">,</span> <span class="n">final</span><span class="p">)</span> <span class="c1"># Numbers: [12, 38, 15, 77]
</span><span class="nf">print</span><span class="p">(</span><span class="sh">"</span><span class="s">Total:</span><span class="se">\t\t</span><span class="sh">"</span><span class="p">,</span> <span class="nf">sum</span><span class="p">(</span><span class="n">final</span><span class="p">))</span> <span class="c1"># Total: 142
</span></code></pre></div></div>

<p>Now we just have to change our input to the one given by Advent of Code, give them the total and…</p>

<p><img src="https://i.byemc.xyz/yEJE0/ZEMetIYE32.png/raw" alt="That's the right answer! You are one gold star closer to restoring snow operations." /></p>

<p>Neat. Let’s go onto part 2.</p>

<h3 id="part-2">Part 2</h3>

<p>In part 2, we’re told that the word forms of numbers (<code class="language-plaintext highlighter-rouge">one</code>, <code class="language-plaintext highlighter-rouge">two</code>, <code class="language-plaintext highlighter-rouge">three</code>, etc.) should also be valid. So, it’s time to
break out good ol’ RegEx again. I’ll use this input for testing:</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>two1nine
eightwothree
abcone2threexyz
xtwone3four
4nineeightseven2
zoneight234
7pqrstsixteen
</code></pre></div></div>

<p>This should result in 281</p>

<p>I’m going to do a find-and-replace on the unmodified string so we don’t need to modify our original script. My first attempt
was to run something like this before the regex:</p>

<div class="language-py highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">replacements</span> <span class="o">=</span> <span class="p">[</span> <span class="sh">"</span><span class="s">zero</span><span class="sh">"</span><span class="p">,</span> <span class="sh">"</span><span class="s">one</span><span class="sh">"</span><span class="p">,</span> <span class="sh">"</span><span class="s">two</span><span class="sh">"</span><span class="p">,</span> <span class="sh">"</span><span class="s">three</span><span class="sh">"</span><span class="p">,</span> <span class="sh">"</span><span class="s">four</span><span class="sh">"</span><span class="p">,</span> <span class="sh">"</span><span class="s">five</span><span class="sh">"</span><span class="p">,</span> <span class="sh">"</span><span class="s">six</span><span class="sh">"</span><span class="p">,</span> <span class="sh">"</span><span class="s">seven</span><span class="sh">"</span><span class="p">,</span> <span class="sh">"</span><span class="s">eight</span><span class="sh">"</span><span class="p">,</span> <span class="sh">"</span><span class="s">nine</span><span class="sh">"</span> <span class="p">]</span>

<span class="k">for</span> <span class="n">word</span> <span class="ow">in</span> <span class="n">replacements</span><span class="p">:</span>
    <span class="n">index</span> <span class="o">=</span> <span class="n">replacements</span><span class="p">.</span><span class="nf">index</span><span class="p">(</span><span class="n">word</span><span class="p">)</span>
    <span class="n">strings</span> <span class="o">=</span> <span class="n">strings</span><span class="p">.</span><span class="nf">replace</span><span class="p">(</span><span class="n">word</span><span class="p">,</span> <span class="nf">str</span><span class="p">(</span><span class="n">index</span><span class="p">))</span>

<span class="nf">print</span><span class="p">(</span><span class="n">strings</span><span class="p">)</span>
</code></pre></div></div>

<p>Which resulted in this:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>/usr/bin/python3.11 /mnt/code/adventofcode/2023/01/day1.py 
219
eigh23
abc123xyz
xtw134
49872
z1ight234
7pqrst6teen
Numbers:	 <span class="o">[</span>29, 23, 13, 14, 42, 14, 76]
Total:	 211

Process finished with <span class="nb">exit </span>code 0
</code></pre></div></div>

<p>Hm. The total is wrong. Why is that? Let’s see what the set of numbers should be:</p>

<div class="language-py highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">numbers</span> <span class="o">=</span> <span class="p">{</span> <span class="mi">29</span><span class="p">,</span> <span class="mi">83</span><span class="p">,</span> <span class="mi">13</span><span class="p">,</span> <span class="mi">24</span><span class="p">,</span> <span class="mi">42</span><span class="p">,</span> <span class="mi">14</span><span class="p">,</span> <span class="mi">76</span> <span class="p">}</span>
</code></pre></div></div>

<p>So the issue seems to lie with the line <code class="language-plaintext highlighter-rouge">eightwothree</code>. The words <code class="language-plaintext highlighter-rouge">eight</code> and <code class="language-plaintext highlighter-rouge">two</code> share a <code class="language-plaintext highlighter-rouge">t</code>, which is causing confusion.
Eight <em>should</em> be the first number, but my code is registering Two instead. This is to do with my find and replace strategy.
In my list of numbers, two comes before eight, so the t for eight gets eaten. So I modified my RegEx to include word numbers
and put the replacement code after that.</p>

<div class="language-py highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">regex</span> <span class="o">=</span> <span class="sh">"</span><span class="s">[0-9</span><span class="se">\n</span><span class="s">]|zero|one|two|three|four|five|six|seven|eight|nine</span><span class="sh">"</span>
<span class="n">x</span> <span class="o">=</span> <span class="n">re</span><span class="p">.</span><span class="nf">findall</span><span class="p">(</span><span class="n">regex</span><span class="p">,</span> <span class="n">strings</span><span class="p">)</span>
<span class="n">x</span> <span class="o">=</span> <span class="sh">""</span><span class="p">.</span><span class="nf">join</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>

<span class="n">replacements</span> <span class="o">=</span> <span class="p">[</span> <span class="sh">"</span><span class="s">zero</span><span class="sh">"</span><span class="p">,</span> <span class="sh">"</span><span class="s">one</span><span class="sh">"</span><span class="p">,</span> <span class="sh">"</span><span class="s">two</span><span class="sh">"</span><span class="p">,</span> <span class="sh">"</span><span class="s">three</span><span class="sh">"</span><span class="p">,</span> <span class="sh">"</span><span class="s">four</span><span class="sh">"</span><span class="p">,</span> <span class="sh">"</span><span class="s">five</span><span class="sh">"</span><span class="p">,</span> <span class="sh">"</span><span class="s">six</span><span class="sh">"</span><span class="p">,</span> <span class="sh">"</span><span class="s">seven</span><span class="sh">"</span><span class="p">,</span> <span class="sh">"</span><span class="s">eight</span><span class="sh">"</span><span class="p">,</span> <span class="sh">"</span><span class="s">nine</span><span class="sh">"</span> <span class="p">]</span>

<span class="k">for</span> <span class="n">word</span> <span class="ow">in</span> <span class="n">replacements</span><span class="p">:</span>
    <span class="n">index</span> <span class="o">=</span> <span class="n">replacements</span><span class="p">.</span><span class="nf">index</span><span class="p">(</span><span class="n">word</span><span class="p">)</span>
    <span class="n">x</span> <span class="o">=</span> <span class="n">x</span><span class="p">.</span><span class="nf">replace</span><span class="p">(</span><span class="n">word</span><span class="p">,</span> <span class="nf">str</span><span class="p">(</span><span class="n">index</span><span class="p">))</span>

<span class="n">x</span> <span class="o">=</span> <span class="n">x</span><span class="p">.</span><span class="nf">splitlines</span><span class="p">()</span>
</code></pre></div></div>

<p>This did indeed work. Putting the required input in and……..</p>

<blockquote>
  <p>That’s not the right answer; your answer is too low.</p>
</blockquote>

<p>Aw nuts. Why is that? Notice my <code class="language-plaintext highlighter-rouge">replacements</code> list. It includes <code class="language-plaintext highlighter-rouge">zero</code>. But the AoC website clearly says:</p>

<blockquote>
  <p><code class="language-plaintext highlighter-rouge">one</code>, <code class="language-plaintext highlighter-rouge">two</code>, <code class="language-plaintext highlighter-rouge">three</code>, <code class="language-plaintext highlighter-rouge">four</code>, <code class="language-plaintext highlighter-rouge">five</code>, <code class="language-plaintext highlighter-rouge">six</code>, <code class="language-plaintext highlighter-rouge">seven</code>, <code class="language-plaintext highlighter-rouge">eight</code>, and <code class="language-plaintext highlighter-rouge">nine</code> also count as valid “digits”.</p>
</blockquote>

<p>Not zero. Removing that gives me the correct an—</p>

<blockquote>
  <p>your answer is too low.</p>
</blockquote>

<p>What. We have another bug.</p>

<p>Looking at the output (it’s large so I won’t republish it here), I can see there’s something not right. Take a look at this:</p>

<div class="language-py highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">Numbers</span> <span class="o">=</span> <span class="p">[</span><span class="mi">79</span><span class="p">,</span> <span class="mi">83</span><span class="p">,</span> <span class="mi">33</span><span class="p">,</span> <span class="mi">86</span><span class="p">,</span> <span class="mi">71</span><span class="p">,</span> <span class="mi">24</span><span class="p">,</span> <span class="mi">15</span><span class="p">,</span> <span class="mi">87</span><span class="p">,</span> <span class="mi">91</span><span class="p">,</span> <span class="mi">24</span><span class="p">,</span> <span class="mi">69</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">49</span><span class="p">,</span> <span class="p">...</span> <span class="p">]</span>
</code></pre></div></div>

<p>Note the <code class="language-plaintext highlighter-rouge">3</code> there. this is supposed to be a list of two-digit numbers. Why is it there? It’s actually because of the <strong>same</strong>
bug as before. <code class="language-plaintext highlighter-rouge">0</code> <strong>isn’t</strong> considered a valid number. Removing it from my RegEx (making it <code class="language-plaintext highlighter-rouge">/[1-9\n]</code>) solves the puzzle.</p>

<p>At this point, I grew frustrated<sup id="fnref:3" role="doc-noteref"><a href="#fn:3" class="footnote" rel="footnote">2</a></sup>, so I went looking for answers. <a href="https://rknight.me/advent-of-code-2023-day-one/">Robb’s post</a> 
links to <a href="https://lewisdale.dev/post/advent-of-code-2023-day-one/">Lewis’ post</a><sup id="fnref:1:1" role="doc-noteref"><a href="#fn:1" class="footnote" rel="footnote">1</a></sup>, which has this RegEx:</p>

<pre><code class="language-regexp">(?=(\d|one|two|three|four|five|six|seven|eight|nine))
</code></pre>

<p>This worked, and I don’t know why.</p>

<h2 id="day-2">Day 2</h2>

<p>After that, I’m feeling tired. (And I’m busy.)</p>

<p>I’ll do Day 2 some other day. Please <a href="https://bye.omg.lol">remind me</a> to!!</p>

<div class="footnotes" role="doc-endnotes">
  <ol>
    <li id="fn:1" role="doc-endnote">
      <p><a href="https://rknight.me/advent-of-code-2023-day-one/">https://rknight.me/advent-of-code-2023-day-one/</a> <a href="#fnref:1" class="reversefootnote" role="doc-backlink">&#8617;</a> <a href="#fnref:1:1" class="reversefootnote" role="doc-backlink">&#8617;<sup>2</sup></a></p>
    </li>
    <li id="fn:3" role="doc-endnote">
      <p>I gave up <a href="#fnref:3" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
  </ol>
</div>]]></content><author><name></name></author><category term="Programming" /><category term="python" /><category term="advent-of-code" /><summary type="html"><![CDATA[I discovered Advent of Code by accident when looking at a post on Robb Knight’s blog this morning. I figured, “hey, this could be fun,” so I’m going to share my progress. Even though I’m late]]></summary></entry><entry><title type="html">App defaults</title><link href="https://byemc.xyz/2023/app-defaults/" rel="alternate" type="text/html" title="App defaults" /><published>2023-11-26T00:00:00+00:00</published><updated>2023-11-26T00:00:00+00:00</updated><id>https://byemc.xyz/2023/app-defaults</id><content type="html" xml:base="https://byemc.xyz/2023/app-defaults/"><![CDATA[<p>I was browsing the <a href="https://en.wikipedia.org/wiki/Fediverse">fediverse</a> recently and I came across <a href="https://social.lol/@robb/111475826301210389">this post</a> <a href="https://rknight.me/">from Robb Knight</a>:</p>

<iframe src="https://social.lol/@robb/111475826301210389/embed" class="mastodon-embed" style="max-width: 100%; border: 0" width="400" allowfullscreen="allowfullscreen"></iframe>
<script src="https://social.lol/embed.js" async="async"></script>

<p>I haven’t been up to date on my <a href="https://hemisphericviews.com">Hemispheric Views</a><sup id="fnref:1" role="doc-noteref"><a href="#fn:1" class="footnote" rel="footnote">1</a></sup> lore, but this peaked my interest. Recently, they ran a game show-style episode <a href="https://listen.hemisphericviews.com/097">“Duel of the Defaults!”</a>, hosted by <a href="https://canion.omg.lol/">Andrew Canion</a> with the contestants <a href="https://loungeruminator.net/">Martin “Mr Default” Feld</a> and <a href="https://grepjason.sh/">Jason Burk</a><sup id="fnref:2" role="doc-noteref"><a href="#fn:2" class="footnote" rel="footnote">2</a></sup>, where they answer questions to find out who is the true Mr Default. (Spoiler alert: Martin won)</p>

<p>These have inspired me to do my own list. Enjoy!</p>

<h2 id="the-list">The List</h2>

<p><em>Note: I use Linux on my PC so default are… nonexistent. I’m not scoring this.</em></p>

<p>I copied the categories from <a href="https://rknight.me/app-defaults/">Robb’s post</a></p>

<h3 id="mail-client">Mail client</h3>

<ul>
  <li>iPhone: Fastmail, Apple Mail</li>
  <li>Desktop: Fastmail web client, Thunderbird</li>
</ul>

<h3 id="mail-server">Mail server</h3>

<ul>
  <li>Fastmail</li>
</ul>

<h3 id="notes">Notes</h3>

<ul>
  <li>iPhone: Notes</li>
</ul>

<h3 id="to-do">To-Do</h3>

<ul>
  <li>Apple Reminders</li>
</ul>

<h3 id="iphone-photo-shooting">iPhone Photo Shooting</h3>

<ul>
  <li>iPhone camera</li>
</ul>

<h3 id="photo-management">Photo management</h3>

<ul>
  <li>iPhone: Apple Photos app</li>
  <li>Mac: Photos.app</li>
  <li>Desktop: What’s photo management</li>
</ul>

<h3 id="calendar">Calendar</h3>

<ul>
  <li>iPhone: Apple Calendar</li>
  <li>Desktop: Thunderbird</li>
</ul>

<h3 id="cloud-files">Cloud files</h3>

<ul>
  <li>iCloud+ (200GB)</li>
</ul>

<h3 id="rss">RSS</h3>

<ul>
  <li>Akregator</li>
</ul>

<h3 id="contacts">Contacts</h3>

<ul>
  <li>Apple Contacts, Fastmail</li>
</ul>

<h3 id="browser">Browser</h3>

<ul>
  <li>Firefox Developer Edition, Chromium (for school)</li>
</ul>

<h3 id="chat">Chat</h3>

<ul>
  <li>Discord, Telegram</li>
</ul>

<h3 id="bookmarks">Bookmarks</h3>

<ul>
  <li>Firefox</li>
</ul>

<h3 id="read-it-later">Read it later</h3>

<ul>
  <li>Don’t use it</li>
  <li>( though if i did then probably Safari Reading List )</li>
</ul>

<h3 id="word-processing">Word Processing</h3>

<ul>
  <li>LibreOffice Writer</li>
</ul>

<h3 id="spreadsheet">Spreadsheet</h3>

<ul>
  <li>LibreOffice Sheets or something i forgot what it’s called</li>
  <li>Google Sheets</li>
</ul>

<h3 id="presentations">Presentations</h3>

<ul>
  <li>Microsoft PowerPoint</li>
</ul>

<h3 id="shopping-list">Shopping list</h3>

<ul>
  <li>N/A</li>
</ul>

<h3 id="meal-planning">Meal planning</h3>

<ul>
  <li>N/A</li>
</ul>

<h3 id="budgeting-and-personal-finance">Budgeting and personal finance</h3>

<ul>
  <li>KMyMoney</li>
</ul>

<h3 id="news">News</h3>

<ul>
  <li>Twitter probably</li>
</ul>

<h3 id="music">Music</h3>

<ul>
  <li>Apple Music, Internet radio</li>
</ul>

<h3 id="podcasts">Podcasts</h3>

<ul>
  <li>Overcast</li>
</ul>

<h3 id="password-management">Password management</h3>

<ul>
  <li>1Password</li>
</ul>

<h2 id="footnotes">Footnotes</h2>

<div class="footnotes" role="doc-endnotes">
  <ol>
    <li id="fn:1" role="doc-endnote">
      <p>Though as I write this, I am listening to them!! <a href="#fnref:1" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
    <li id="fn:2" role="doc-endnote">
      <p><strong>Not</strong> guests. These are the regular hosts <a href="#fnref:2" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
  </ol>
</div>]]></content><author><name></name></author><category term="Tech" /><category term="fun" /><category term="apps" /><category term="hemispheric-views" /><summary type="html"><![CDATA[I was browsing the fediverse recently and I came across this post from Robb Knight:]]></summary></entry></feed>