<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Software on Jaspers Archive</title><link>https://jas.pe/categories/software/</link><description>Recent content in Software on Jaspers Archive</description><generator>Hugo</generator><language>en-US</language><lastBuildDate>Tue, 06 Oct 2026 23:50:23 +0000</lastBuildDate><atom:link href="https://jas.pe/categories/software/index.xml" rel="self" type="application/rss+xml"/><item><title>Fonts</title><link>https://jas.pe/lab/2/</link><pubDate>Tue, 06 Oct 2026 23:50:23 +0000</pubDate><guid>https://jas.pe/lab/2/</guid><description>&lt;p&gt;Everyone uses fonts, not everyone chooses them.&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Category&lt;/th&gt;
					&lt;th&gt;Choice&lt;/th&gt;
					&lt;th&gt;Type&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;Reading&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/td&gt;
					&lt;td&gt;&lt;a href="https://github.com/googlefonts/atkinson-hyperlegible"&gt;Atkinson Hyperlegible&lt;/a&gt;&lt;/td&gt;
					&lt;td&gt;Default&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Coding&lt;/td&gt;
					&lt;td&gt;&lt;a href="https://github.com/ahatem/IoskeleyMono"&gt;Ioskeley Mono&lt;/a&gt;&lt;/td&gt;
					&lt;td&gt;&lt;a href="https://github.com/ahatem/IoskeleyMono/releases/latest/download/IoskeleyMono-Term-NerdFont.zip"&gt;Ioskeley Mono Term Nerdfont&lt;/a&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Typography, Design &amp;amp; Reading&lt;sup id="fnref1:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/td&gt;
					&lt;td&gt;&lt;a href="https://github.com/nicoverbruggen/libron"&gt;Libron&lt;/a&gt;&lt;/td&gt;
					&lt;td&gt;Default&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;I am currently still actively switching between Libron and Atkinson Hyperlegible.&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&amp;#160;&lt;a href="#fnref1:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><item><title>RHEL</title><link>https://jas.pe/lab/1/</link><pubDate>Fri, 28 Aug 2026 00:27:29 +0000</pubDate><guid>https://jas.pe/lab/1/</guid><description>&lt;p&gt;I want to further my career, I need to get better at everything.
This includes but is not limited to learning new courses, but also getting proper certificates. I have to be better.&lt;/p&gt;
&lt;p&gt;I already professionally do this, however I want to be able to prove this easily to future employers if necessary, I feel that an &lt;code&gt;RHCSA&lt;/code&gt; certification may be valuable in this.
However I will need more experience in what I already do.&lt;/p&gt;</description></item><item><title>Homelab Upgrade</title><link>https://jas.pe/projects/homelab-upgrade/</link><pubDate>Thu, 13 Aug 2026 07:51:59 +0000</pubDate><guid>https://jas.pe/projects/homelab-upgrade/</guid><description>&lt;p&gt;Thinking of upgrading my homelab, just detailing it here so I can get some reference numbers easily.&lt;/p&gt;
&lt;p&gt;There are a couple reasons for this, mainly space efficiency and power efficiency.&lt;/p&gt;
&lt;p&gt;This will cut down overall space and power usage, both the amount of plugs I am using in a power board but also the overall power requirements.
In terms of space it is saving, I will be replacing 3 seperate &amp;ldquo;mini&amp;rdquo; pc&amp;rsquo;s to all be consolidated into this one.&lt;/p&gt;</description></item><item><title>NotifPWA</title><link>https://jas.pe/posts/notifpwa/</link><pubDate>Fri, 24 Jul 2026 03:06:42 +0000</pubDate><guid>https://jas.pe/posts/notifpwa/</guid><description>&lt;p&gt;I ran into this issue that notifications could not easily be sent to my phone. I wanted something like &lt;code&gt;ntfy&lt;/code&gt;, but self-hosted to keep my infrastructure mine.
The issue with self-hosting &lt;code&gt;ntfy&lt;/code&gt; is that push-notifications do not work &lt;em&gt;(as of 24/07/2026)&lt;/em&gt; on iOS, because Apple™ loves doing things &lt;em&gt;differently&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://support.apple.com/en-au/101566"&gt;&lt;code&gt;iOS 16.4+&lt;/code&gt; supports Web Notifications as long as the site is a PWA&lt;/a&gt;. This is something I can use.&lt;/p&gt;
&lt;h1 id="what-is-a-pwa"&gt;
 &lt;a href="#what-is-a-pwa" class="heading-anchor"&gt;What is a &amp;ldquo;PWA&amp;rdquo;?&lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;A &amp;ldquo;&lt;em&gt;PWA&lt;/em&gt;&amp;rdquo; is similar to an App, it can be used like an app, added to the home screen, and offer other platform specific benefits, without getting into the nitty-gritty:
You can use it as if it is an app, built for the platform you are on. What makes it different though is that traditionally websites are experienced more as a place you can visit, other than a place you have. A website doesn&amp;rsquo;t (typically) have a presence on the user&amp;rsquo;s device, instead it is requested / accessed by a browser.&lt;/p&gt;</description></item><item><title>chatto.ts: Strictly typed Chatto Framework</title><link>https://jas.pe/posts/chatto.ts/</link><pubDate>Thu, 16 Jul 2026 01:19:59 +0000</pubDate><guid>https://jas.pe/posts/chatto.ts/</guid><description>&lt;p&gt;Last week, I was doing my usual browsing of &lt;a href="https://news.ycombinator.com"&gt;ycombinator&lt;/a&gt;, when I came across a post that read &lt;a href="https://news.ycombinator.com/item?id=48833116"&gt;Chatto is now open source&lt;/a&gt;, which caught my attention, especially because the post (at the time of writing) had over 1100 points, so I had to look at what all the fuss was about.&lt;/p&gt;
&lt;p&gt;I checked out the post, and it was immediately filled with &lt;em&gt;incredible- if true&lt;/em&gt; claims, such as &lt;strong&gt;&amp;ldquo;extremely easy to self-host&amp;rdquo;&lt;/strong&gt;, &lt;strong&gt;&amp;ldquo;very light on resources&amp;rdquo;&lt;/strong&gt;, &lt;strong&gt;&amp;ldquo;snappiest frontend that you’ve ever used in an app like this&amp;rdquo;&lt;/strong&gt;, &lt;strong&gt;&amp;ldquo;fully encrypted at rest&amp;rdquo;&lt;/strong&gt;, and &lt;strong&gt;&amp;ldquo;voice and video calls&amp;rdquo;&lt;/strong&gt;.
Now this wouldn&amp;rsquo;t be the first time something like this pops up and it ends up being a lot less than what you would&amp;rsquo;ve wanted, or a garbled mess of AI slop that does not work in the slightest.&lt;/p&gt;</description></item><item><title>Lattice</title><link>https://jas.pe/tiny/lattice/</link><pubDate>Thu, 09 Jul 2026 04:33:48 +0000</pubDate><guid>https://jas.pe/tiny/lattice/</guid><description>&lt;p&gt;A little visual lambda calculus you can draw. A program is a wired-up diagram of
just two operations — &lt;strong&gt;λ&lt;/strong&gt; (make a function) and &lt;strong&gt;@&lt;/strong&gt; (apply one) — plus
&lt;strong&gt;variables&lt;/strong&gt; and &lt;strong&gt;wires&lt;/strong&gt;. Point the &lt;strong&gt;►&lt;/strong&gt; output at the top of your program,
hit &lt;strong&gt;Run&lt;/strong&gt;, and watch it reduce: the active step tints as substitution flows
through the diagram.&lt;/p&gt;
&lt;p&gt;Inspired by &lt;a href="https://www.media.mit.edu/people/lingdong/projects/"&gt;Lingdong Huang&amp;rsquo;s λ-2D&lt;/a&gt;.
Pick a preset to see a finished program, or draw your own.&lt;/p&gt;</description></item><item><title>Leaving Gitea</title><link>https://jas.pe/posts/leavinggitea/</link><pubDate>Wed, 08 Jul 2026 00:47:46 +0000</pubDate><guid>https://jas.pe/posts/leavinggitea/</guid><description>&lt;h1 id="intro"&gt;
 &lt;a href="#intro" class="heading-anchor"&gt;Intro&lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;As the title states, I am leaving Gitea.
I started looking for alternatives after &lt;strong&gt;CVE-2026-27771&lt;/strong&gt;&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;, something that allowed people to pull private container images from the built in container registry without any authentication. It existed for years, and did affect Gitea as-well as Forgejo.&lt;sup id="fnref:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;While that issue alone wasn&amp;rsquo;t enough to make me migrate, it did make me start looking at alternative options. Combined with the disclosure of &lt;strong&gt;CVE-2026-20896&lt;/strong&gt; and a number of governance concerns (specifically its less than open source company environment) that have accumulated over the past few years, I&amp;rsquo;ve decided it&amp;rsquo;s time to move elsewhere.&lt;sup id="fnref:3"&gt;&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref"&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;</description></item><item><title>Moving to Hugo</title><link>https://jas.pe/posts/hugo/</link><pubDate>Tue, 23 Jun 2026 15:16:49 +0800</pubDate><guid>https://jas.pe/posts/hugo/</guid><description>&lt;h1 id="why"&gt;
 &lt;a href="#why" class="heading-anchor"&gt;Why?&lt;/a&gt;
&lt;/h1&gt;
&lt;h2 id="the-beginning-of-trouble"&gt;
 &lt;a href="#the-beginning-of-trouble" class="heading-anchor"&gt;The beginning of trouble&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;On my previous site, I had written my own frontmatter interpreter to make blogging easy.
I did not like the complexity or feel that existing options like wordpress provided, and I did not Google much longer than 30 seconds to see if the tool I was looking for already existed.
So I had coded one, from scratch&amp;hellip; That went predictably horribly and I had to continually make changes just to accomodate new features I didn&amp;rsquo;t think of initially.&lt;/p&gt;</description></item><item><title>FFmpeg</title><link>https://jas.pe/docs/ffmpeg/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://jas.pe/docs/ffmpeg/</guid><description>&lt;p&gt;Blender render to Animated WebP:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-cmd" data-lang="cmd"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ffmpeg -framerate 30 -i &lt;span style="color:#a5d6ff"&gt;&amp;#34;C:\tmp\&lt;/span&gt;&lt;span style="color:#79c0ff"&gt;%0&lt;/span&gt;&lt;span style="color:#a5d6ff"&gt;4d.png&amp;#34;&lt;/span&gt; -c:v libwebp -lossless 0 -q:v 60 -loop 0 output.webp
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Gargoyle — Ceraia</title><link>https://jas.pe/ceraia/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://jas.pe/ceraia/</guid><description>&lt;p&gt;Gargoyle, also called &amp;ldquo;&lt;em&gt;Ceraia&lt;/em&gt;&amp;rdquo; on Discord is a Discord bot I specifically developed to meet my needs. A decent few of the features provided were features I wanted in other bots, but did not want to pay for, and thus decided to code myself and let other people use it for free.&lt;/p&gt;
&lt;p&gt;If you want to &lt;a href="https://discordapp.com/oauth2/authorize?client_id=758776071268859946"&gt;invite Ceraia&lt;/a&gt; to your own Discord Guild, you can do so &lt;a href="https://discordapp.com/oauth2/authorize?client_id=758776071268859946"&gt;here&lt;/a&gt;!&lt;/p&gt;</description></item><item><title>Tailcat</title><link>https://jas.pe/docs/tailcat/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://jas.pe/docs/tailcat/</guid><description>&lt;p&gt;With &lt;a href="https://github.com/tailscale/tailcat"&gt;Tailcat being released&lt;/a&gt;, I set up &lt;a href="https://git.jas.pe/mirrors/tailcat"&gt;a mirror&lt;/a&gt; and a script to &lt;a href="https://git.jas.pe/mirrors/-/packages/generic/tailcat/edge"&gt;auto build binaries from the edge&lt;/a&gt;, so that I can easily redistribute it if need be.&lt;/p&gt;
&lt;p&gt;Here are some helper commands I use specifically for Tailcat.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8b949e;font-style:italic"&gt;# Installing tailcat to memory for temporary usage:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;curl https://git.jas.pe/api/packages/mirrors/generic/tailcat/edge/tailcat-arm64 -o /dev/shm/tc &lt;span style="color:#ff7b72;font-weight:bold"&gt;&amp;amp;&amp;amp;&lt;/span&gt; chmod +x /dev/shm/tc
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;curl https://git.jas.pe/api/packages/mirrors/generic/tailcat/edge/tailcat-amd64 -o /dev/shm/tc &lt;span style="color:#ff7b72;font-weight:bold"&gt;&amp;amp;&amp;amp;&lt;/span&gt; chmod +x /dev/shm/tc
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8b949e;font-style:italic"&gt;# Exposes 8080 for other locs&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;/dev/shm/tc --serve&lt;span style="color:#ff7b72;font-weight:bold"&gt;=&lt;/span&gt;&lt;span style="color:#a5d6ff"&gt;8080&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8b949e;font-style:italic"&gt;# Maps remote 8080 to local 18080&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;/dev/shm/tc forward --bind&lt;span style="color:#ff7b72;font-weight:bold"&gt;=&lt;/span&gt;127.0.0.1 &lt;span style="color:#a5d6ff"&gt;${&lt;/span&gt;&lt;span style="color:#79c0ff"&gt;TAILCAT_ADDR&lt;/span&gt;&lt;span style="color:#a5d6ff"&gt;}&lt;/span&gt; 18080:8080
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8b949e;font-style:italic"&gt;# Installing cattail to memory for temporary usage:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;curl https://git.jas.pe/labs/cattail/releases/download/latest/cattail_linux_arm64 -o /dev/shm/ct &lt;span style="color:#ff7b72;font-weight:bold"&gt;&amp;amp;&amp;amp;&lt;/span&gt; chmod +x /dev/shm/ct
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;curl https://git.jas.pe/labs/cattail/releases/download/latest/cattail_linux_amd64 -o /dev/shm/ct &lt;span style="color:#ff7b72;font-weight:bold"&gt;&amp;amp;&amp;amp;&lt;/span&gt; chmod +x /dev/shm/ct
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8b949e;font-style:italic"&gt;# Bring local to server:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;/dev/shm/ct connect &amp;lt;address&amp;gt; --name&lt;span style="color:#ff7b72;font-weight:bold"&gt;=&lt;/span&gt;&amp;lt;name&amp;gt; &amp;lt;listen:&lt;span style="color:#ff7b72;font-weight:bold"&gt;[&lt;/span&gt;target_ip:&lt;span style="color:#ff7b72;font-weight:bold"&gt;]&lt;/span&gt;target&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item></channel></rss>