<?xml version='1.0' encoding='UTF-8' ?>
<rss version='2.0' xmlns:atom='http://www.w3.org/2005/Atom'>
<channel>
<title>wingsite - all</title>
<description></description>
<link>https://feather.onl</link>
<lastBuildDate>2026-05-07 00:56:16</lastBuildDate>
<atom:link href='https://feather.onl/feeds/all' rel='self' type='application/rss+xml' />
<ttl>1800</ttl>

	<item>
	<title><![CDATA[More videos]]></title>
	<description><![CDATA[<p>Just a quick blog post to let anyone who only follows the blog feed know that I now have a non-games video section and a new feed to go with it. I&#8217;m currently making videos about the very cool reticulum network.</p>
<p>I won&#8217;t make more blogs announcing videos but it&#8217;s new so worth noting.</p>
<p><a href="/videos">Videos section</a></p>
<p><a href="/feeds/videos">Videos feed</a></p>]]></description>
	<link>https://feather.onl/blog/more-videos</link>
	<pubDate>2026-04-22 23:22:23</pubDate>
	<guid>https://feather.onl/blog/more-videos</guid>
</item>
<item>
	<title><![CDATA[Phone syncing]]></title>
	<description><![CDATA[<p>I&#8217;ve had a problem I&#8217;ve been trying to solve for at least two or three years now, in reality probably much longer, but it only became something I was actively trying to solve back then, at least. Said problem is syncing files on a phone with a server, one of those bafflingly annoying things that should be simple but every solution which comes up seems convoluted. Now, I&#8217;m not opposed to just rsyncing from termux every now and then, but the reason it became a more active problem was because I needed to solve it for my parents, one of whom was running out space on their free cloud storage, and the other being accident prone.</p>
<h1>Things I&#8217;ve tried</h1>
<p>If you&#8217;ve been around the open source world for any length of time you&#8217;ll know of owncloud<sup id="fnref1"><a href="#fn1" rel="footnote">1</a></sup> or nextcloud<sup id="fnref2"><a href="#fn2" rel="footnote">2</a></sup>. I really don&#8217;t like them. They&#8217;re annoying to set up no matter what way you go about it, they both, for no obvious fucking reason, really, <em>really</em> want you to use https even though all you&#8217;re trying to do is host it on your local LAN where getting https is a pain in the arse and going with self signed certs never seems to work. Nextcloud also runs pretty heavy, owncloud&#8217;s newest iteration seems to be much lighter at least, but both do far more than I wanted regardless. I did recently come across opencloud<sup id="fnref3"><a href="#fn3" rel="footnote">3</a></sup> but it turns out that&#8217;s just an owncloud fork with all the same problems.</p>
<p>I eventually gave in and just used immich<sup id="fnref4"><a href="#fn4" rel="footnote">4</a></sup>, despite it also being far heavier, having more features than I care for, and extra-annoyingly requiring containers to run, it did work. However, I was never satisfied with it. It updates far too often, and when it does you can be sure it actually updates no less than three times, sometimes in the same day.</p>
<p>It was immich&#8217;s update cycle that actually triggered me to start looking for other options yet again. Though my other problems with it include the fact that it runs in four fucking containers, and that&#8217;s actually reduced from what it was when I started running it, which comes with all the annoyances of containers, especially when it comes to permissions which makes taking backups a ballache. It keeps libraries all over the place in helpfully named locations such <code>2e2e2e2e-3e3e-4r4r4&#47;00&#47;8f&#47;a8a8a8-c7c7c7-b3b3b3b.jpg</code>. Yes, I know the external library function exists, it was very new when I started this and I wasn&#8217;t sure whether to use it, that might be on me, I was somewhat rushing through, but that default behaviour is still absurd. Oh, and because of the way it works, you need to open the immich app specifically to delete anything, otherwise whatever you&#8217;ve deleted remains on the server, that is or isn&#8217;t a feature, depending on your viewpoint, but it adds an extra layer for my parents to think about.</p>
<p>I know syncthing<sup id="fnref5"><a href="#fn5" rel="footnote">5</a></sup> is going to come up too, it was one of the first things I tried. I tried it many times over the years actually, I just don&#8217;t like it. Besides for the fact that it no longer even has an official android app (there&#8217;s a fork I know), its interface is cumbersome, and I&#8217;m usually fine with jank but it&#8217;s <em>wrong kind</em> of jank for me. I also despise the way it tracks what directories to sync by leaving hidden files in them, which is admittedly a small thing but it still bothers me.</p>
<p>Before I continue, I would like to stress, if these projects provide what you need, they&#8217;re probably great. I&#8217;m always in favour of many projects doing the same thing but slightly differently because I believe generic solutions made to suit everyone always end up suiting no one, I&#8217;m mostly expressing frustration and in search engines, and myself really, for not discovering my final solution before this.</p>
<h1>Enough nonsense</h1>
<p>What I actually want is something that <em>just</em> syncs a list of directories to a specified location on my local server. It needs to do this on my local network, without SSL being forced and just be a regular list of files, not shoved into stupidly named subdirectories. It should delete things on the server when they&#8217;re deleted on the phone so no special app is needed, you can use a file browser or gallery or whatever! Ideally it&#8217;s also basically invisible and something my parents never need to see. Fucking drop dead simple, yet seemingly impossible to find. </p>
<h1>Finally an answer</h1>
<p>I abhor phones, I spend as little time with them as I can, so I acknowledge that I probably spent less than I should have looking in the first place, but if you ever try looking yourself, you&#8217;ll see almost nothing but these bloated, overengineered, solutions come up. However, my search was finally ended when I randomly typed &#8220;sync&#8221; into f-droid and I seen EasySync<sup id="fnref6"><a href="#fn6" rel="footnote">6</a></sup>.</p>
<p>EasySync is webDAV client. Oddly, this is the second time<sup id="fnref7"><a href="#fn7" rel="footnote">7</a></sup> that webDAV turned out to be a solution for me, despite never paying attention to it before. You can use basically any webDAV server with it, some of them don&#8217;t support preserving timestamps though. There&#8217;s a little table in the git repo showing a few examples and wouldn&#8217;t you know it, both owncloud and nextcloud are there, turns out they just use webDAV for syncing anyway, then overcomplicate it.</p>
<h1>Setting it up</h1>
<p>I already had <code>rclone</code> installed and it can run a webDAV so I just used that with the following command: <code>rclone serve webdav --user webdav --pass mypass --addr 127.0.0.1:4545 &#47;path&#47;to&#47;directory&#47;to&#47;use&#47;</code> which I stuck in a systemd service and enabled. You can use whatever server you want though. This will allow access to everything with a single login which I&#8217;m fine with for my use case but I&#8217;ll point you to rclone&#8217;s serve webdav<sup id="fnref8"><a href="#fn8" rel="footnote">8</a></sup> page where you can see how to set up multiple logins with restricted access using a file if that&#8217;s more your style.</p>
<p>The rclone server actually also runs a little webserver accessible from the same port, nothing fancy, just a nice directory listing of files with a little icon on each directory that lets you download a zip, which is a nice bonus.</p>
<p>After installing EasySync from your preferred location and opening it you will have to go through a couple of screens to allow the relevant permissions, this is an android problem which I won&#8217;t hold against it. Then you enter your server details, it gives a little message on why you might want to use https if you supply an http location but that&#8217;s it, and that&#8217;s fine, it doesn&#8217;t force anything and you&#8217;ll never see it again. You also put your username and password here if needed then set the path (server side) that you&#8217;re syncing.</p>
<p>After that you&#8217;re left with the very basic default screen. It tells you how many files you have, the percentage of synced files, whether a sync is currently running, and a button to manually sync.</p>
<p>There&#8217;s two settings pages, one that lets you change the connection details if you ever need to, and another where you can set sync options. The sync settings are basic, the first two are just switches for setting if it will sync on mobile data and on battery. Disabling syncing on battery means it will only sync when charging, which is what I was initially going to do but it really doesn&#8217;t seem to drain battery at all, unlike everything else I&#8217;ve tried, so I actually left it. The next option just decides what to do if there&#8217;s a conflict. I can&#8217;t imagine this will come up for my use case but your options are to ignore it (the default) or pick whether it takes the local or remote file as priority. Finally, under &#8220;Advanced settings&#8221; for some reason, is where you can pick which directories to sync which is just a list of toggle switches.</p>
<p>There is the one slight problem in that since it&#8217;s keeping the phone and server in sync, at some point the phone&#8217;s storage won&#8217;t contain what the server can hold, at which point I&#8217;ll probably move the really old stuff to an archive directory or something, it&#8217;s fine.</p>
<p>That&#8217;s it&#8230; that&#8217;s all I ever wanted, truly, I have experienced joy.</p>
<p>Fuck phones.</p>
<div class="footnotes">
<hr/>
<ol>

<li id="fn1">
<p><a href="https://owncloud.com/">owncloud</a>&#160;<a href="#fnref1" rev="footnote">&#8617;</a></p>
</li>

<li id="fn2">
<p><a href="https://nextcloud.com/install/">Nextcloud</a>&#160;<a href="#fnref2" rev="footnote">&#8617;</a></p>
</li>

<li id="fn3">
<p><a href="https://opencloud.eu/en">OpenCloud</a>&#160;<a href="#fnref3" rev="footnote">&#8617;</a></p>
</li>

<li id="fn4">
<p><a href="https://immich.app/">immich</a>&#160;<a href="#fnref4" rev="footnote">&#8617;</a></p>
</li>

<li id="fn5">
<p><a href="https://syncthing.net/">Syncthing</a>&#160;<a href="#fnref5" rev="footnote">&#8617;</a></p>
</li>

<li id="fn6">
<p><a href="https://github.com/phpbg/easysync">EasySync</a>&#160;<a href="#fnref6" rev="footnote">&#8617;</a></p>
</li>

<li id="fn7">
<p><a href="/blog/adding-video-and-rethinking-templates/">My blog post mentioning webDAV</a>&#160;<a href="#fnref7" rev="footnote">&#8617;</a></p>
</li>

<li id="fn8">
<p><a href="https://rclone.org/commands/rclone_serve_webdav/">rclone&#8217;s webdav server docs</a>&#160;<a href="#fnref8" rev="footnote">&#8617;</a></p>
</li>

</ol>
</div>]]></description>
	<link>https://feather.onl/blog/phone-syncing</link>
	<pubDate>2026-04-20 16:48:28</pubDate>
	<guid>https://feather.onl/blog/phone-syncing</guid>
</item>
<item>
	<title><![CDATA[Adding video and rethinking templates]]></title>
	<description><![CDATA[<p>I play a lot of games with my friends, sometimes interesting and&#47;or funny shit happens so at some point a few years ago I started using OBS&#8217;s<sup id="fnref1"><a href="#fn1" rel="footnote">1</a></sup> Replay Buffer, which saves the previous [X time] of video after you hit a hotkey to save them. I&#8217;ve also recently started just recording longer segments of things I&#8217;ve been playing and decided I wanted to share them, though not the stuff I&#8217;ve recorded with my friends. I&#8217;ve also been contemplating making videos for various things for a while but whether or not those ever materialise is a matter for another time.</p>
<p>I have no interest in putting anything I make on youtube or any other platform, I&#8217;m just going to put them here and make a static video section. My current setup didn&#8217;t really allow such a setup though so&#8230;</p>
<h1>Templating</h1>
<p>When I started making nestbuilder<sup id="fnref2"><a href="#fn2" rel="footnote">2</a></sup> (my site generator) I wanted to keep templates simple and <code>lowdown</code> (the markdown converter I&#8217;m using) uses a very simple one. It has variables and very basic <code>if</code> and <code>for</code> loops, but when I was building my video index page it became clear I needed something slightly more complex.</p>
<p>Tcl has a <code>source</code> command, much like bash, it will just execute whatever tcl file you point it at. If you assign the result to a variable it will be set to whatever string comes back either from whatever was printed last or set explicitly using the <code>return</code> keyword. So I decided to swap out the current templates for&#8230; tcl scripts!</p>
<p>When the pages are being looped through I have a <code>$page</code> variable accessible to the script that can be used to access the metadata dict and I have a <code>generateHtml</code> function available to convert markdown to HTML and a <code>indexList</code> function that returns a list of pages in the given directory sorted by timestamp. I also use <code>source</code> from within the templates to call other templates, mostly for the header and footer. That&#8217;s all that&#8217;s been needed so far but I&#8217;ll add more as they come up. Once the script runs, the output is saved to the HTML file in the same directory.</p>
<h1>Video Index</h1>
<p>Before changing how my templates work I used to build my index pages by first putting together a markdown file with a list of links then letting the regular page generation turn in into HTML. Now that&#8217;s all done in the new index template itself, and, finally moving onto the video part; I have two templates now, one for regular links and one for video. The regular one will output pretty much the same as it used to but for my video index I wanted to have something more gallery-like. I wanted something easy to loop through without having to add steps for searching for random filenames so I decided that every video will have the same name: video.mp4, and of course since I making this like a gallery, a thumbnail.webp file.The video page itself uses the standard HTML5 <code>video</code> tag to show the video and anything in the <code>index.md</code> file is shown below it as a description.</p>
<p>I played around a little with my format choice. I started with MP4 for video and PNG for the thumbnails. MP4 is playable by basically everything and it looks good, but keeping filesize in mind when self hosting video, I did look at newer codecs like VP9 and AV1. They reduced the filesize but things were noticeably fuzzier but they seemed to take forever to encode (I was using ffmpeg) and support for them on older devices seem lacking. I may come back to video in the future but I&#8217;m sticking with MP4 for now.</p>
<p>PNGs for the thumbnails though, I did end up changing. The webp format dramatically reduces filesize at the cost of much fuzzier looking images, however, since they mostly exist at a small size in a gallery anyway, it doesn&#8217;t really matter that much. I also use the <code>poster</code> attribute of the <code>video</code> tag to have them show as the thumbnail of the video. Does reducing the filesize of images matter when I hosting videos? Probably not, but anything helps, so I&#8217;ve stuck with webp.</p>
<h1>Storage</h1>
<p>My VPS comes with a 40GB SSD and I also have a 50GB volume attached to it. I don&#8217;t have many videos right now but I wanted to tackle the storage issue early because who knows in the future. Hetzner has relatively cheap storage boxes, at time of writing they&#8217;re €3.20 for a 1TB box which are using regular HDDs. I got one and started doing some testing. First off, I&#8217;ve limited the box to not allowing external access, which means it can only be used on VPSs within Hetzner&#8217;s infrastructure. These boxes can&#8217;t be attached to your VPS directly like the storage volumes and have to be accessed over a network. I first mounted it with <code>sshfs</code> because it&#8217;s my default, though I suspected it wouldn&#8217;t be up for the use case, no harm in trying. It held up surprisingly well when I had several friends test watching videos simultaneously, though I still wanted to try other methods.</p>
<p>The storage box also supports WebDAV, which I&#8217;ve never used. Hetzner has some instructions<sup id="fnref3"><a href="#fn3" rel="footnote">3</a></sup> for using it. I couldn&#8217;t get it connected using it, though it would later turn out that I forgot to hit save when enabling WebDAV support on the box, woops :D It was pointed out to me by ghosty that <code>rclone</code> supports WebDAV mounts and it was while setting that up that I noticed the mistake. Still I continued just using <code>rclone</code> as it less hassle. There&#8217;s <em>a lot</em><sup id="fnref4"><a href="#fn4" rel="footnote">4</a></sup> of options for configuring mounts and I&#8217;m still toying with them. I had my friends test out playing videos again and the WebDAV mount seems noticeably smoother so I&#8217;ll be sticking with that.</p>
<h1>Future</h1>
<p>I&#8217;ll keep tweaking stuff, might change up how the video page itself actually looks because it&#8217;s very plain but I&#8217;m ultimately happy with how the video section on a static site turned out! My next big thing to work on will probably be finally getting tags to do something, every page and video has them but I don&#8217;t show them since they don&#8217;t do anything yet.</p>
<p>I forget about the RSS feed while I testing this so if you subscribe to the &#8220;all&#8221; feed you&#8217;ve probably already seen the videos pop up :p I have added a new feed specifically for my game videos, if you don&#8217;t want them in your feed you can swap out to the plain &#8220;blog&#8221; feed. I decided any non-gaming videos I eventually make will be separate too.</p>
<div class="footnotes">
<hr/>
<ol>

<li id="fn1">
<p><a href="https://obsproject.com/">OBS</a>&#160;<a href="#fnref1" rev="footnote">&#8617;</a></p>
</li>

<li id="fn2">
<p><a href="https://fossil.feather.onl/nestbuilder">nestbuilder</a>&#160;<a href="#fnref2" rev="footnote">&#8617;</a></p>
</li>

<li id="fn3">
<p><a href="https://docs.hetzner.com/storage/storage-box/access/access-webdav/">Hetzner&#8217;s WebDAV docs</a>&#160;<a href="#fnref3" rev="footnote">&#8617;</a></p>
</li>

<li id="fn4">
<p><a href="https://rclone.org/commands/rclone_mount/">rclone mount docs</a>&#160;<a href="#fnref4" rev="footnote">&#8617;</a></p>
</li>

</ol>
</div>]]></description>
	<link>https://feather.onl/blog/adding-video-and-rethinking-templates</link>
	<pubDate>2025-11-24 16:07:16</pubDate>
	<guid>https://feather.onl/blog/adding-video-and-rethinking-templates</guid>
</item>
<item>
	<title><![CDATA[nestbuilder]]></title>
	<description><![CDATA[<p>Sometime last year I once again found myself thinking of my site. There&#8217;s the odd thing I&#8217;ve thought of writing then never did, I&#8217;m not going to force myself to write, whatever I write, I write. This isn&#8217;t a post about how rarely I use my site but just general mulling over how I use it, and a little of the actual HTML.</p>
<p>I&#8217;ve made four or five site generators since starting this site. I&#8217;ve now upped that to five or six, about half the number of actual posts ;D Regardless of what they were underneath, they all ultimately took the form of markdown files with YAML metadata at the top, because that&#8217;s what every generator does. Here&#8217;s the thing though, I don&#8217;t like YAML and I also have a somewhat irrational hatred for seeing metadata at the top of my markdown files. It just <em>feels</em> wrong, silly or not.</p>
<p>Going through my RSS one day, I was reading a post<sup id="fnref1"><a href="#fn1" rel="footnote">1</a></sup> where the author talked about redesigning their own site, one major revision being that every page lived in it&#8217;s own directory as an <code>index.html</code> which meant that you could have <code>.html</code>-less URLs without fucking around with web server URL rewriting but also, you could put any files referenced in the page within the same directory so you don&#8217;t have an <code>assets</code> directory or similar at the root full of files that could be referenced anywhere. While that&#8217;s mostly just a <code>grep</code> away, it&#8217;s still messy and inconvenient in comparison since the vast majority of the time you don&#8217;t really use the images or whatever else outside of a single page. It&#8217;s a simple thing and not one that I&#8217;d thought of before but after reading it I sometimes look out for other people taking the same approach and I&#8217;ve noticed it a few times, though some people seem to just use it as a way to have URLs without a suffix and still continue using a root directory for assets.</p>
<h1>Metadata</h1>
<p>I spent a while going over options, at first I thought I&#8217;d have either a single file or an SQLite database to contain all the metadata. A single file would get unwieldy fast so I was definitely leaning towards the database. Database vs files is one of those questions that doesn&#8217;t really have a definitive answer but after discussing the topic, unrelated to my own site, with some friends (even though I think things like generating index and tag pages or adding additional fields would be easier with a database) I decided to go with using files, for fun.</p>
<p>As mentioned at the beginning: I don&#8217;t like YAML or frontmatter. My solution, since I didn&#8217;t need or want any kind of typing in the file itself, was to just keep the metadata in a separate file using a conf&#47;INI style format. This once again works well given that each page is a directory~</p>
<h1>Output</h1>
<p>One other small thing I dislike: Having a <code>data</code>&#47;<code>content</code> directory for your markdown and an <code>output</code> directory for the HTML. Now they all live together! Each page directory contains the following:</p>
<ul>
<li>index.md</li>
<li>index.html</li>
<li>index.gmi</li>
<li>metadata.properties</li>
<li>relevant files</li>
</ul>
<p>All available by changing the URL. This makes scraping the site easier, which given the current AI climate, a lot of people probably don&#8217;t want. However, while I have a great distaste for AI, I think having access to the raw markdown easily has totally legitimate uses for regular people, like simply being able to read it easier, saving it for their own personal archive or whatever other reasons a real human might have for fucking about. It also ultimately makes <code>rsync</code>ing the entire thing to the server less hassle *shrug*</p>
<p>As I moved my old posts to my new system I also moved several little scripts that were no longer available on my old git repos directly into the page&#8217;s directory, now they can&#8217;t be lost again :D</p>
<h1>Tcl</h1>
<p>I ended up writing nestbuilder in Tcl which I came across a little over two years ago while I was reading through some SQLite and fossil<sup id="fnref2"><a href="#fn2" rel="footnote">2</a></sup> docs where they mention it being used in test writing, though more interestingly, SQLite actually started out as a Tcl extension!<sup id="fnref3"><a href="#fn3" rel="footnote">3</a></sup> Fossil also has several settings where it specifies providing a Tcl style list. The more I read about it, the more intrigued I got. It&#8217;s very shell-like. Variables are &#8220;just strings&#8221;, the function calling them treats them as lists, array or dictionaries as it&#8217;s expecting them, though this does get a little odd with things like nested lists, and especially arrays. Functions (Tcl calls them procedures) look like shell commands, in part, due to them taking modifier switches.</p>
<p>I did want to use several other tools in building this, mainly <code>yq</code> for the metadata and config files, and <code>lowdown</code> for HTML and gemtext generation. I went with <code>lowdown</code> over the usual <code>pandoc</code> simply because it supports gemtext output which would let me use one program for both. Tcl let&#8217;s you relatively easily use external command with the <code>exec</code> function, though you can end up in mess of escaping characters with complex commands, it worked for my needs after some playing around.</p>
<p>Tcl is certainly a little quirky. I was having an issue with the <code>dict</code> command, if I recall correctly, and found an IRC channel linked on the wiki. It&#8217;s been forever since I properly used IRC but I hopped on and found a friendly community who helped me out :3 One of the aforementioned quirks I came across was some commands taking a variable directly, while others just taking the variable <em>name</em>, which is different and something I overlooked in the docs - careful reading required. There were some other questions I was helped with too, friendly bunch!</p>
<p>Speaking of the wiki<sup id="fnref4"><a href="#fn4" rel="footnote">4</a></sup>, it&#8217;s so quaint. Many of the pages read like conversations where people prepending their edits with their name, it feels very organically grown. Many pages are just tips for specific things people were trying to do at some point or pages of people trying to work things out. It&#8217;s all just lovely~</p>
<h1>HTML</h1>
<p>I&#8217;m not super into HTML or (especially) CSS, which it feels like I&#8217;m forever fighting with. I put together a basic template HTML and CSS combination a while back that I usually just copy and tweak when I want to make HTML pages. I decided to tidy it up a bit because I was sure there definitely redundant CSS in there. The old one used CSS <code>grid</code> but I&#8217;ve changed over to <code>flex</code> and reduced down the stylesheet a bit. I&#8217;m sure I tried used <code>flex</code> before and didn&#8217;t have much luck getting it to do what I wanted but it worked out this time, CSS fun :|</p>
<p>Something I&#8217;m used to with most markdown processor templating is being able to include other templates, usually a header and footer, inside templates. Lowdown lacks that feature but I resolved the problem by just appending them together and it&#8217;s such an simple thing to do it&#8217;s not overly needed in the templating system itself.</p>
<p>It still mostly <em>looks</em> the same and I do keep contemplating changing it up more, but it will do for now.</p>
<h1>Not Quite Done</h1>
<p>While I&#8217;m now running my new site it&#8217;s not done as there&#8217;s some things the old one did that I haven&#8217;t even started yet, like generating tag pages and new things I&#8217;d like to add too. I intended to have gemini output as well but I haven&#8217;t quite worked out how I want it to look so that&#8217;s on the back burner for a bit.</p>
<p>As of time of writing I haven&#8217;t even added a readme to the repo, but you can have a look here<sup id="fnref5"><a href="#fn5" rel="footnote">5</a></sup>. I wrote a little <code>fzf</code> wrapper script to let me quickly add&#47;delete&#47;update posts which I&#8217;ll probably add there in the future too once I settle on exactly how I want it to work.</p>
<p>It&#8217;s usable enough for now and I&#8217;m going to keep pecking away at it, despite it taking me a while I&#8217;m having a lot of fun with it~ :D</p>
<div class="footnotes">
<hr/>
<ol>

<li id="fn1">
<p><a href="https://www.paritybit.ca/blog/an-update-about-this-very-webbed-site/">https:&#47;&#47;www.paritybit.ca&#47;blog&#47;an-update-about-this-very-webbed-site&#47;</a>&#160;<a href="#fnref1" rev="footnote">&#8617;</a></p>
</li>

<li id="fn2">
<p><a href="https://fossil-scm.org/">Fossil</a>&#160;<a href="#fnref2" rev="footnote">&#8617;</a></p>
</li>

<li id="fn3">
<p><a href="https://sqlite.org/tclsqlite.html">SQLite Tcl Interface</a>&#160;<a href="#fnref3" rev="footnote">&#8617;</a></p>
</li>

<li id="fn4">
<p><a href="https://wiki.tcl-lang.org/">Tcler&#8217;s Wiki</a>&#160;<a href="#fnref4" rev="footnote">&#8617;</a></p>
</li>

<li id="fn5">
<p><a href="https://fossil.feather.onl/nestbuilder/">nestbuilder repo</a>&#160;<a href="#fnref5" rev="footnote">&#8617;</a></p>
</li>

</ol>
</div>]]></description>
	<link>https://feather.onl/blog/nestbuilder</link>
	<pubDate>2025-09-27 23:27:37</pubDate>
	<guid>https://feather.onl/blog/nestbuilder</guid>
</item>
<item>
	<title><![CDATA[Saints Row IV bollocks]]></title>
	<description><![CDATA[<p>Last Tuesday, my good friend hangmansjoe and I were trying to decide on a game to play. I&#8217;m not sure what brought it up but we were talking about Saints Row IV for a bit, remembered how fun it was, and decided to play through it again in co-op.</p>
<p>Now, it&#8217;s been many years since either of us played and I&#8217;m not sure of the exact timeline of events but the original dev studio has since been bought and shut down. At some point the original version of the game on Steam was replaced with the &#8220;Re-Elected&#8221; version which brought in cross-play support and seems to also now require a fucking Epic account login but that&#8217;s not the most annoying part. No, they somehow managed to completely destroy the ability to actually play multiplayer!</p>
<p>It all seemed well after initially having to sign into an Epic account for no reason, but the joy of this wonderful game was not to last as we got our first of many, many, seemingly random disconnections. At first I assumed this related to me running Linux somehow so I gave it a go on GeForce Now, but the disconnects continued. Turning to the Steam forums, this problem seems to be incredibly common. A few people mentioned that they thought it was related to when there&#8217;s a large difference in each player&#8217;s FPS and that enabling VSync had helped. Why not try at this point?</p>
<p>We got about an hour and a half in before a disconnect this time, though given how random they were, I can&#8217;t actually say if it really helped or not. We played on three separate days before giving up.</p>
<p>I tried to see if we could just the old version of the game and it turns out, surprisingly, they did leave that option there. If you right click on the game in your list, go to &#8220;Properties&#8221; then &#8220;Betas&#8221; and you&#8217;ll find it listed as <code>sriv_legacy beta</code>. Great you can play the old version! Except&#8230; I never bought the DLC, we really wanted to play through some of that, aaaand&#8230; you can no longer buy it. Your options are to have all the DLC in the &#8220;Re-Elected&#8221; version but awful network problems or play your old version and have no option play all the content if you hadn&#8217;t purchased it before the game versions were swapped out.</p>
<p>Saints Row IV is a great game and it&#8217;s ultimately a minor enough problem but it&#8217;s still irritating. Just leave stuff alone, especially old perfectly working stuff for fuck&#8217;s sake.</p>]]></description>
	<link>https://feather.onl/blog/saints-row-iv-bollocks</link>
	<pubDate>2024-12-08 00:00:00</pubDate>
	<guid>https://feather.onl/blog/saints-row-iv-bollocks</guid>
</item>
<item>
	<title><![CDATA[Quick tmux dev setup]]></title>
	<description><![CDATA[<p>I use a tiling window manager and have done for a very long time but I&#8217;ve alternated between using <code>tmux</code> and simply opening more terminals many times. I can never really decide which I prefer, though there is something nice about essentially having a another contained tiler for each project. </p>
<p>Anyway, that&#8217;s a thought for another time. I&#8217;m currently on my &#8220;using tmux&#8221; stint and it&#8217;s occurred to me that I always open every project the same way way and should probably just automate that. I primarily use <code>go</code> and I use <code>fossil</code> as my version control, so I&#8217;ve written a small script that uses <code>rofi</code> to launch my usual environment.</p>
<p>The script starts by listing the names of each of my project folders in <code>rofi</code> then creating a new <code>tmux</code> session with the same name. Next, it creates two windows, the first running <code>vim</code> and the second gets vertically split. On the left pane of the second window it runs <code>fossil changes</code> to show me the files I have uncommitted changes in and the right because whenever I do go to commit changes I usually have a diff on one while I write a message, maybe running the program and need to use commands while looking at it&#8217;s output or similar.</p>
<h1>The script</h1>
<pre><code class="language-bash">#!&#47;usr&#47;bin&#47;env bash

# Launch rofi with a list from the projects directory
projectsDir="~&#47;projects&#47;programming&#47;go"
project=$(ls -1 ~&#47;projects&#47;programming&#47;go | rofi -dmenu -p "project")

# Exit if no project was selected
if [[ -z "$project" ]]; then
    exit
fi

# Create new session and name the window according to the project name
tmux new -s $project -d
tmux rename-window -t $project vim
# Change to the project directory and open vim
tmux send-keys -t $project "cd $projectsDir&#47;$project" C-m
tmux send-keys -t $project C-l
tmux send-keys -t $project "vim" C-m
# Make a new window in the project directory and run &#39;fossil changes&#39;
tmux new-window -t $project
tmux select-window -t $project:1
tmux rename-window -t $project bash
tmux send-keys -t $project "cd $projectsDir&#47;$project" C-m
tmux send-keys -t $project C-l
tmux send-keys -t $project "fossil changes" C-m
# Split the window
tmux split-window -h -t $project
tmux send-keys -t $project "cd $projectsDir&#47;$project" C-m
tmux send-keys -t $project C-l
# Select the fossil changes pane
tmux select-pane -L -t $project

# Open a terminal and attach the session
alacritty -e tmux attach -d -t $project
</code></pre>]]></description>
	<link>https://feather.onl/blog/quick-tmux-dev-setup</link>
	<pubDate>2024-11-30 00:00:00</pubDate>
	<guid>https://feather.onl/blog/quick-tmux-dev-setup</guid>
</item>
<item>
	<title><![CDATA[Automatically sending scans to paperless]]></title>
	<description><![CDATA[<p>I&#8217;ve been looking for some form of document management for a while since I&#8217;ve amassed a lot of documents over the years ranging from receipts to medical files, user manuals and whatever else I felt like saving. A few months ago friend Archie<sup id="fnref1"><a href="#fn1" rel="footnote">1</a></sup> pointed out Paperless-ngx<sup id="fnref2"><a href="#fn2" rel="footnote">2</a></sup> to me and I finally got around to trying it out a few weeks ago.</p>
<p>It&#8217;s exactly what I was looking for as it turned out :D Paperless is&#8230; exactly what it sounds like. You put documents in and can tag them, assign correspondents and get a nice web interface so you can easily access them from multiple devices. It also auto tags things with local machine learning.</p>
<p>The interface is simple, after logging in you get a dashboard showing various statistics about the documents you already have, as well an upload button for adding to it. I still find it a bit unusual that the first page you see isn&#8217;t the actual document list, which is the second link in the navigation menu, but that&#8217;s fine.</p>
<p>I had a thought after using Paperless for a little bit, what if I could automatically put the things I&#8217;m scanning into Paperless instead of what I was doing: Scanning each thing to my computer then uploading them to Paperless. Well as it turns out, Paperless has a <code>consume</code> folder that it scans every so often and does just that with anything it finds in there!</p>
<h1>ProFTPD</h1>
<p>I recently acquired a new printer&#47;scanner that includes the ability to send scans to a network share via FTP, SharePoint or a samba share. I don&#8217;t run any of these because I have no other need for them but I chose to set up an FTP server because it seemed like the simplest and after a quick look decided to use ProFTPD<sup id="fnref3"><a href="#fn3" rel="footnote">3</a></sup>.</p>
<p>I run Debian so it was a just <code>sudo apt install proftpd</code> to get it installed. Now, while there certainly seems to be a lot of possible configuration, I didn&#8217;t modify anything. I grabbed an FTP client to make sure it worked and logged in my regular linux username and password, which worked just fine and I had access to everything my regular had access to. It&#8217;s been a very long time since I used FTP, it was way back while I was barely in secondary school and didn&#8217;t really know how anything worked but hey, it was quite an easy setup as it turns out. Of course it&#8217;s FTP, I didn&#8217;t bother setting up FTPS as it can&#8217;t be accessed outside my LAN I&#8217;m not particularly worried about it being accessed or spied on.</p>
<p>I did later decide to restrict the accessible directories afterwards so the FTP connection can only access the <code>consume</code> folder.</p>
<p>In order to do so you can create a file like <code>custom.conf</code> in <code>&#47;etc&#47;proftpd&#47;conf.d&#47;</code> and enter the follow:</p>
<pre><code>DefaultRoot &#47;path&#47;to&#47;paperless&#47;consume&#47;
</code></pre>
<p>That&#8217;s it!</p>
<h1>Printer</h1>
<p>My old all-in-one printer broke about two months ago and it was the last shitty inkjet I was going to own. I bought a laser all-in-one printer, a Brother DCP-L3520CDW<sup id="fnref4"><a href="#fn4" rel="footnote">4</a></sup>, printers are always well named 🙄. I didn&#8217;t buy it from Brother, weirdly everywhere else I looked had it cheaper than getting it directly. It was still pricey but after a little over a month of owning it I can safely say it was well worth it. I have never had a printer that just actually worked like this one, on phones and (linux) desktops, it just shows up on the network and you can print, this shouldn&#8217;t be noteworthy but it unfortunately is. Of course on phones you still need the app if you want to scan and save documents directly to your phone but that&#8217;s not required for my use case at least.</p>
<p>Anyway, as previously mentioned, the scanner can send things over the network and it&#8217;s pretty easy to set up. You first head over to the web interface and login then go to &#8216;Scan&#8217; &#62; &#8216;Scan to FTP&#47;Network&#47;Sharepoint&#8217; to make sure the first profile is set to FTP. To configure the connect go to &#8216;Scan&#8217; &#62; &#8216;Scan to FTP&#47;Network&#47;Sharepoint Profile&#8217; click the first one then fill in the details, they&#8217;re all pretty self-explanatory. If you&#8217;ve restricted your FTP server to just the consume directory like I did you can leave the &#8216;Store Directory&#8217; field as &#8216;&#47;&#8217;. I personally set most of the options as &#8216;User Select&#8217; because I don&#8217;t want to create multiple profiles and it just lets me set them on a per scan basis.</p>
<p>Now to actually scan something! Just hit the scan button, use the arrows to select &#8216;Scan to FTP&#8217; then you will get to configure any options you left as &#8216;User Select&#8217; when setting up the profile and finally you&#8217;ll be told to press the start button. You can keep scanning pages until you select &#8216;No (Send)&#8217; which will actually send the scan over FTP. As long you don&#8217;t see a sending failed message, it should have temporarily appeared in your <code>consumed</code> then promptly been imported :D</p>
<p>It all works perfectly and has definitely made scanning new documents a faster and nicer experience even if I do still have to change the auto assigned tags sometimes, though that&#8217;s getting better the more I import. Overall, very happy with the setup <sup>_</sup></p>
<div class="footnotes">
<hr/>
<ol>

<li id="fn1">
<p><a href="https://jn.hn">Archie</a>&#160;<a href="#fnref1" rev="footnote">&#8617;</a></p>
</li>

<li id="fn2">
<p><a href="https://docs.paperless-ngx.com/">Paperless-ngx</a>&#160;<a href="#fnref2" rev="footnote">&#8617;</a></p>
</li>

<li id="fn3">
<p><a href="http://proftpd.org/">ProFTPD</a>&#160;<a href="#fnref3" rev="footnote">&#8617;</a></p>
</li>

<li id="fn4">
<p><a href="https://store.brother.ie/catalogs/brotherireland/devices/laser/dcp/dcpl3520cdwe">Brother DCP-L3520CDW</a>&#160;<a href="#fnref4" rev="footnote">&#8617;</a></p>
</li>

</ol>
</div>]]></description>
	<link>https://feather.onl/blog/automatically-sending-scans-to-paperless</link>
	<pubDate>2024-09-22 00:00:00</pubDate>
	<guid>https://feather.onl/blog/automatically-sending-scans-to-paperless</guid>
</item>
<item>
	<title><![CDATA[Caw into the void]]></title>
	<description><![CDATA[<p>A friend of mine, HexDSL<sup id="fnref1"><a href="#fn1" rel="footnote">1</a></sup>, for a long time, had kept a microblog in the form of a table, first on notion. In the past I have created a program to turn it into an RSS feed and when he switched to using obsidian, I updated it for that. He then moved a third time to an UpNote file.</p>
<p>I&#8217;ve had an idea since creating goldfinch<sup id="fnref2"><a href="#fn2" rel="footnote">2</a></sup> to add microblog functionality to it, but never got around to it. Watching Hex jump between solutions got me thinking about it and on his last jump I decided to start a new project.</p>
<h1>Social Media</h1>
<p>I never really &#8220;got&#8221; social media. I&#8217;ve had accounts on various platforms but never really posted much, or spent much time there. I hadn&#8217;t had one anywhere in years but last year I did set up a gotosocial<sup id="fnref3"><a href="#fn3" rel="footnote">3</a></sup> server and <em>really</em> try. I did have some interactions, all positive even, but there&#8217;s just something about social media that makes me not really care for it, even when it&#8217;s open source and federated. I didn&#8217;t really get the appeal of shouting into the void either but listening to Hex did help with that. Sometimes you just want to send out little updates or a random thought and not care after that. Technically you could use social media platforms for that but they never really give me that feeling. I meant to write about this and my fedi experiment a while ago but I&#8217;ve been busy with life a lot lately and the idea just drifted. I still get the occasional message about Trendy or a blog post on it which is mostly why I left it up. Unsure about what I&#8217;ll do with it in the future but moving on&#8230;</p>
<h1>Caw</h1>
<p>I wanted a microblog&#8230; platform? (This feels like the wrong word) That didn&#8217;t have any kind of social media features and had RSS feeds. Essentially a void to shout in, but publicly viewable. I also wanted to avoid having to do authentication. I happened upon twtxt<sup id="fnref4"><a href="#fn4" rel="footnote">4</a></sup> which reminded me of drew&#8217;s<sup id="fnref5"><a href="#fn5" rel="footnote">5</a></sup> lace idea for gemini. So caw initially started out being built on that idea: maintaining a text file with a list of posts. I also wanted a regular website to view these posts on too. As I worked on this I found myself pushing twtxt to a secondary feature and eventually dropped it. It&#8217;s still a neat idea but ultimately not what I ended up wanting.</p>
<p>The Void<sup id="fnref6"><a href="#fn6" rel="footnote">6</a></sup> is my instance of caw, have a look around for more context to this section!</p>
<p>All the posts and user data are stored in an SQLite database. Initially the configuration was also stored in the database but I later moved that to a config file. All posts are added as markdown and both the original markdown and converted HTML are stored so I don&#8217;t have to convert posts every time one is loaded. Posts have identifiers which are just UUIDs. I also store linked accounts. These are the replacement for authentication. You can create programs and add a linked account type to reference.</p>
<p>Caw exists only as a frontend and API for other programs to hook into. The API initially started as a go package but I decided to change it being an API so it could be used in non-go programs early on. At the moment the API runs as a second HTTP server, the first being the web server itself, which is supposed to only run on localhost. I have been meaning to look at unix sockets, which would probably be a better way of doing it, but I just wanted to get something finished so I&#8217;ll look them later.</p>
<p>While I originally thought of it a single user &#8220;thing&#8221; I had decided to make it multi-user before I actually started, as well as adding a timeline as the main page showing everyone&#8217;s posts. The timeline is as close to a social feature caw has, and it optional per user. There is an RSS feed for the timeline and each user has their own feed as well. I did also add the option to exclude a single user from the timeline RSS so people would be able to subscribe to it and not see their own posts showing up.</p>
<h1>Posting</h1>
<p>As mentioned earlier, I didn&#8217;t want to do authentication. I maintain a Discord bot and used the API with it to create linked accounts associated with Discord IDs. People DM the bot which uses the linked account system to connect with caw user IDs and make the posts. Discord already using markdown for messages also means messages are seen in Discord pretty much as they will appear on the website.</p>
<h1>Conclusion</h1>
<p>I had a fun time making it. I didn&#8217;t really expect anyone to actually use it but some people are quite actively using it which is pretty nice <sup>_</sup></p>
<p>Check my micro-thoughts on the void<sup id="fnref7"><a href="#fn7" rel="footnote">7</a></sup></p>
<p>You can find caw either at it&#8217;s fossil repo<sup id="fnref8"><a href="#fn8" rel="footnote">8</a></sup> or the git mirror<sup id="fnref9"><a href="#fn9" rel="footnote">9</a></sup> if you prefer.</p>
<div class="footnotes">
<hr/>
<ol>

<li id="fn1">
<p><a href="https://hexdsl.com">HexDSL</a>&#160;<a href="#fnref1" rev="footnote">&#8617;</a></p>
</li>

<li id="fn2">
<p><a href="https://fossil.feather.onl/goldfinch%3E">goldfinch repo (fossil)</a>&#160;<a href="#fnref2" rev="footnote">&#8617;</a></p>
</li>

<li id="fn3">
<p><a href="https://gotosocial.org/">GoToSocial</a>&#160;<a href="#fnref3" rev="footnote">&#8617;</a></p>
</li>

<li id="fn4">
<p><a href="https://twtxt.readthedocs.io/en/latest/index.html">twtxt</a>&#160;<a href="#fnref4" rev="footnote">&#8617;</a></p>
</li>

<li id="fn5">
<p><a href="https://friendo.monster">drew</a>&#160;<a href="#fnref5" rev="footnote">&#8617;</a></p>
</li>

<li id="fn6">
<p><a href="https://void.feather.onl">void</a>&#160;<a href="#fnref6" rev="footnote">&#8617;</a></p>
</li>

<li id="fn7">
<p><a href="https://void.feather.onl/user/wing">My void microblog</a>&#160;<a href="#fnref7" rev="footnote">&#8617;</a></p>
</li>

<li id="fn8">
<p><a href="https://fossil.feather.onl/caw">caw fossil repo</a>&#160;<a href="#fnref8" rev="footnote">&#8617;</a></p>
</li>

<li id="fn9">
<p><a href="https://git.feather.onl/caw">caw git repo</a>&#160;<a href="#fnref9" rev="footnote">&#8617;</a></p>
</li>

</ol>
</div>]]></description>
	<link>https://feather.onl/blog/caw-into-the-void</link>
	<pubDate>2024-08-21 00:00:00</pubDate>
	<guid>https://feather.onl/blog/caw-into-the-void</guid>
</item>
<item>
	<title><![CDATA[legit: a simple git web frontend]]></title>
	<description><![CDATA[<p>I program as a hobby, for fun. I mostly make random little things for myself and the odd thing for a friend. Sometimes I think that other people might find these useful so I wanted somewhere to put them up to share, self hosted of course.</p>
<p>I use fossil<sup id="fnref1"><a href="#fn1" rel="footnote">1</a></sup> for my version control. I like it, been meaning to write about it and hopefully I will, separately from this. That&#8217;s for another time though! Though I love it, I realise most people use git so I wanted to still provide an alternative interface for my repos and a way to <code>git clone</code> them.</p>
<p>Early on I used gitea and switched to forgejo when that fork came about. Given that I&#8217;m the only one using it, on top of the fact that I&#8217;m actually using fossil and simply mirroring that repo to git, it always felt like &#8220;too much&#8221; to me. I don&#8217;t need something with a full interface designed around serving many users. Of course, forgejo isn&#8217;t heavy to run at all or anything and I could easily carry on using it but I&#8217;ve always wanted something else.</p>
<p>I had looked at cgit<sup id="fnref2"><a href="#fn2" rel="footnote">2</a></sup> which is closer to what I wanted but it&#8217;s a CGI script. There&#8217;s nothing wrong with that it&#8217;s just that I use caddy and CGI isn&#8217;t something that&#8217;s natively supported and I don&#8217;t really want to go messing with plugins. There are wrappers you can use so you can reverse proxy them but then I&#8217;d have multiple things running.</p>
<p>I happened to come across legit<sup id="fnref3"><a href="#fn3" rel="footnote">3</a></sup> the other day and played around with it for a bit. Turns out it&#8217;s exactly what I was looking for! There&#8217;s not much to configure, mostly just pointing it to your directory containing your git repos. The main page is a simple list of repos and the last commit time with the actual repo pages themselves showing the last couple of commits with the readme underneath. There&#8217;s some links at the top for looking at the file list, full commit history and branches. It doesn&#8217;t do syntax highlighting but does highlight added&#47;removed lines.</p>
<p><strong>Small update</strong>: I&#8217;ve now also removed the flex grid repo list and replaced it with simple rows.</p>
<p>I have an instance running at <a href="https://git.feather.onl%5B%5E4%5D">https:&#47;&#47;git.feather.onl[^4]</a> right now. One small thing that I wasn&#8217;t keen on though, was the default template. It&#8217;s very bright!</p>
<p>I spent a little while editing it to look more like my site theme and made a couple of adjustments to the sizing of the columns on the repo index page since I noticed the repo name tended to end up on two lines a lot. I also removed the email displaying on every commit, it&#8217;s mostly pointless for me since I&#8217;m the only one using it. You can find the theme here<sup id="fnref4"><a href="#fn4" rel="footnote">4</a></sup> if you&#8217;d like to build off of it.</p>
<div class="footnotes">
<hr/>
<ol>

<li id="fn1">
<p><a href="https://fossil-scm.org/home">fossil</a>&#160;<a href="#fnref1" rev="footnote">&#8617;</a></p>
</li>

<li id="fn2">
<p><a href="https://git.zx2c4.com/cgit/about/">cgit</a>&#160;<a href="#fnref2" rev="footnote">&#8617;</a></p>
</li>

<li id="fn3">
<p><a href="https://github.com/icyphox/legit">legit</a>&#160;<a href="#fnref3" rev="footnote">&#8617;</a></p>
</li>

<li id="fn4">
<p><a href="https://git.feather.onl/legit-feather-theme">legit feather theme</a>&#160;<a href="#fnref4" rev="footnote">&#8617;</a></p>
</li>

</ol>
</div>]]></description>
	<link>https://feather.onl/blog/legit-a-simple-git-web-frontend</link>
	<pubDate>2024-03-16 00:00:00</pubDate>
	<guid>https://feather.onl/blog/legit-a-simple-git-web-frontend</guid>
</item>
<item>
	<title><![CDATA[Migrating password managers]]></title>
	<description><![CDATA[<h1>Multi-devicing</h1>
<p>I&#8217;ve used pass<sup id="fnref1"><a href="#fn1" rel="footnote">1</a></sup> for a few years now, having moved to it from Keepass XC<sup id="fnref2"><a href="#fn2" rel="footnote">2</a></sup>. I primarily used it via a rofi script and I was very happy with it, and I still very much like it, my needs have just changed</p>
<p>When I moved from Keepass I used a script linked on the pass site which, for whatever reason, put each password in it&#8217;s own folder and used the username as the actual filename. It was something I meant to fix at the time but ultimately never bothered, it didn&#8217;t really matter since searching for sites with the rofi script searches the whole path anyway. I do sort of regret not fixing it but anyway, moving on.</p>
<p>I never used my phone very much so I didn&#8217;t really need a password manager that was capable of being used across multiple devices or operating systems but I&#8217;ve recently bought a Surface Pro 9, which I&#8217;ve been very much enjoying, but it&#8217;s led to me thinking over my workflow and what programs I use. One of the biggest annoyances being passwords. I&#8217;ll write about the Surface more in the future but before anyone tells me to just sync the password-store directory, my Surface is currently running Windows.</p>
<p>I didn&#8217;t really go looking for a new password manager, I knew bitwarden was a fairly popular one and I know a couple of people who use it and like it, so it was the first thing I tried. Cloud based password managers aren&#8217;t something I think I&#8217;ll ever trust personally, they&#8217;re probably fine, but I&#8217;d rather not.</p>
<h1>Vaultwarden</h1>
<p>Luckily, Bitwarden can be self hosted but a cursory look at the install instructions seems that it really wants you to use Docker, which I tend to avoid if at all possible. However, Vaultwarden<sup id="fnref3"><a href="#fn3" rel="footnote">3</a></sup> exists.</p>
<p>Vaultwarden is an unofficial alternative server that&#8217;s compatible with Bitwarden clients. It&#8217;s written in Rust and while it, for whatever, doesn&#8217;t provide precompiled binaries, it&#8217;s easy to compile yourself, or copy out of the Docker container, if you prefer. Single binaries are my preferred deployment method so I for that alone I found it a much nicer solution. It supports the vast majority of features that the official servers has, except for single sign-on and a couple of enterprise things I don&#8217;t care about.</p>
<p>Once you&#8217;ve got your binary via your preferred method, it&#8217;s a fairly standard setup process of making a systemd file and setting up configuration. I didn&#8217;t configure much, just the listen address, port and the data folder location.</p>
<p>There is one thing though: the web interface requires https. I believe the Bitwarden server implementation is the same and it&#8217;s related to a browser requirement rather than anything the projects are doing themselves. I&#8217;m running Vaultwarden on my local server and don&#8217;t intend for it, or most things I self host locally, to be accessed outside of my LAN.</p>
<p>I use caddy for my reverse proxy so getting a self signed certificate for it to use was as easy as adding <code>tls internal</code> to the Vaultwarden section. This does mean you have click &#8220;Accept&#8221; or whatever, whenever you visit it for the first time because it&#8217;s self signed, but it&#8217;s not exactly inconvenient, I mostly use it with the clients anyway. In fact, the only reason I even discovered this was because when I was sorting through my passwords, moving and renaming them due to the aforementioned weird import that happened when I moved to pass, I found out that only the web interface lets you select multiple entries at once. Definitely a <em>bit</em> odd.</p>
<p>As for actually using it. It&#8217;s quite nice. I installed the Firefox add-on on both linux and my Surface, so now I can just use the Ctrl + Shift + L shortcut to automatically enter passwords on websites which is faster than pulling up rofi and searching for the entry each time, it&#8217;s also my primary method of using it. I mostly don&#8217;t think about it. I honestly thought I&#8217;d end up using the command line client and hooking it up to rofi like I was doing with pass but I haven&#8217;t felt the need.</p>
<p>Overall, very happy with my new password solution.</p>
<div class="footnotes">
<hr/>
<ol>

<li id="fn1">
<p><a href="https://www.passwordstore.org/">pass</a>&#160;<a href="#fnref1" rev="footnote">&#8617;</a></p>
</li>

<li id="fn2">
<p><a href="https://keepassxc.org/">Keepass XC</a>&#160;<a href="#fnref2" rev="footnote">&#8617;</a></p>
</li>

<li id="fn3">
<p><a href="https://github.com/dani-garcia/vaultwarden">Vaultwarden</a>&#160;<a href="#fnref3" rev="footnote">&#8617;</a></p>
</li>

</ol>
</div>]]></description>
	<link>https://feather.onl/blog/migrating-password-managers</link>
	<pubDate>2023-12-05 00:00:00</pubDate>
	<guid>https://feather.onl/blog/migrating-password-managers</guid>
</item>
<item>
	<title><![CDATA[Clover Dancers]]></title>
	<description><![CDATA[This page has a video, check the website to see it.

<p>Goodnight Green Prince &#60;3</p>
<p>(Ignore my terrible start)</p>]]></description>
	<link>https://feather.onl/game-videos/silksong/clover-dancers</link>
	<pubDate>2026-01-12 17:28:13</pubDate>
	<guid>https://feather.onl/game-videos/silksong/clover-dancers</guid>
</item>
<item>
	<title><![CDATA[Crawfather]]></title>
	<description><![CDATA[This page has a video, check the website to see it.

<p>bird</p>]]></description>
	<link>https://feather.onl/game-videos/silksong/crawfather</link>
	<pubDate>2026-01-11 15:11:47</pubDate>
	<guid>https://feather.onl/game-videos/silksong/crawfather</guid>
</item>
<item>
	<title><![CDATA[Last Test of Fitness]]></title>
	<description><![CDATA[This page has a video, check the website to see it.

]]></description>
	<link>https://feather.onl/game-videos/silksong/last-test-of-fitness</link>
	<pubDate>2026-01-06 17:52:11</pubDate>
	<guid>https://feather.onl/game-videos/silksong/last-test-of-fitness</guid>
</item>
<item>
	<title><![CDATA[Pinstress]]></title>
	<description><![CDATA[This page has a video, check the website to see it.

]]></description>
	<link>https://feather.onl/game-videos/silksong/pinstress</link>
	<pubDate>2026-01-06 16:41:43</pubDate>
	<guid>https://feather.onl/game-videos/silksong/pinstress</guid>
</item>
<item>
	<title><![CDATA[Karmelita]]></title>
	<description><![CDATA[This page has a video, check the website to see it.

<p>This boss easily took me the most retries so far but I fucking loved every second of it. Fantastic boss fight &#38; music &#60;3</p>]]></description>
	<link>https://feather.onl/game-videos/silksong/karmelita</link>
	<pubDate>2026-01-04 15:22:45</pubDate>
	<guid>https://feather.onl/game-videos/silksong/karmelita</guid>
</item>
<item>
	<title><![CDATA[Lost Garmond]]></title>
	<description><![CDATA[This page has a video, check the website to see it.

<p>My poor boy</p>]]></description>
	<link>https://feather.onl/game-videos/silksong/lost-garmond</link>
	<pubDate>2025-12-17 17:34:40</pubDate>
	<guid>https://feather.onl/game-videos/silksong/lost-garmond</guid>
</item>
<item>
	<title><![CDATA[Bell Eater]]></title>
	<description><![CDATA[This page has a video, check the website to see it.

]]></description>
	<link>https://feather.onl/game-videos/silksong/bell-eater</link>
	<pubDate>2025-12-08 23:48:06</pubDate>
	<guid>https://feather.onl/game-videos/silksong/bell-eater</guid>
</item>
<item>
	<title><![CDATA[Grand Mother Silk (Soul Snare)]]></title>
	<description><![CDATA[This page has a video, check the website to see it.

<p>It has occured to me that I probably should have left the ending cutscenes in these. Next time I suppose~</p>]]></description>
	<link>https://feather.onl/game-videos/silksong/grand-mother-silk-soul-snare</link>
	<pubDate>2025-12-06 22:09:35</pubDate>
	<guid>https://feather.onl/game-videos/silksong/grand-mother-silk-soul-snare</guid>
</item>
<item>
	<title><![CDATA[Grand Mother Silk (Cursed Crest)]]></title>
	<description><![CDATA[This page has a video, check the website to see it.

]]></description>
	<link>https://feather.onl/game-videos/silksong/grand-mother-silk-cursed-crest</link>
	<pubDate>2025-11-28 21:12:51</pubDate>
	<guid>https://feather.onl/game-videos/silksong/grand-mother-silk-cursed-crest</guid>
</item>
<item>
	<title><![CDATA[Grand Mother Silk]]></title>
	<description><![CDATA[This page has a video, check the website to see it.

]]></description>
	<link>https://feather.onl/game-videos/silksong/grand-mother-silk</link>
	<pubDate>2025-11-27 20:27:33</pubDate>
	<guid>https://feather.onl/game-videos/silksong/grand-mother-silk</guid>
</item>
<item>
	<title><![CDATA[Hosting NomadNet Pages]]></title>
	<description><![CDATA[This page has a video, check the website to see it.

<p><a href="https://git.quad4.io/RNS-Things/page-node">RNS Page Node</a></p>
<p><a href="https://github.com/markqvist/nomadnet">NomadNet</a></p>]]></description>
	<link>https://feather.onl/videos/reticulum/hosting-nomadnet-pages</link>
	<pubDate>2026-05-07 00:43:07</pubDate>
	<guid>https://feather.onl/videos/reticulum/hosting-nomadnet-pages</guid>
</item>
<item>
	<title><![CDATA[NomadNet (client)]]></title>
	<description><![CDATA[This page has a video, check the website to see it.

<p>I forgot to include how to identify yourself to nodes in this video somehow so here&#8217;s a short one on that</p>
<p><img src="./video2.mp4" alt="" /></p>
<p><a href="https://github.com/markqvist/NomadNet">NomadNet</a></p>]]></description>
	<link>https://feather.onl/videos/reticulum/nomadnet-client</link>
	<pubDate>2026-04-26 16:59:31</pubDate>
	<guid>https://feather.onl/videos/reticulum/nomadnet-client</guid>
</item>
<item>
	<title><![CDATA[MeshChatX]]></title>
	<description><![CDATA[This page has a video, check the website to see it.

<p><a href="https://github.com/liamcottle/reticulum-meshchat/">MeshChat</a></p>
<p><a href="https://meshchatx.com/">MeshChatX</a></p>]]></description>
	<link>https://feather.onl/videos/reticulum/meshchatx</link>
	<pubDate>2026-04-22 16:16:16</pubDate>
	<guid>https://feather.onl/videos/reticulum/meshchatx</guid>
</item>
<item>
	<title><![CDATA[Getting connected]]></title>
	<description><![CDATA[This page has a video, check the website to see it.

<h1>Reticulum resources</h1>
<p><a href="https://reticulum.network/manual/">Reticulum manual</a></p>
<p><a href="https://directory.rns.recipes/">Reticulum Interface Directory</a></p>
<p><a href="https://reticulum.miraheze.org/wiki/Awesome_Reticulum">Awesome Reticulum list on the community wiki</a></p>
<p><a href="https://www.youtube.com/watch?v=iHLLDnRRYKI">Reticulum creator&#8217;s talk at Choas Communication Congress 2024</a></p>
<h2>Clients</h2>
<p><a href="https://github.com/liamcottle/reticulum-meshchat/">Reticulum MeshChat</a></p>
<p><a href="https://github.com/markqvist/NomadNet">NomadNet</a></p>
<h1>systemd services</h1>
<p><a href="./rnsd.service">rnsd</a></p>
<p><a href="./lxmd.service">lxmd</a></p>
<h1>My backbone node</h1>
<p>Feel free to use my backbone by adding the following to the interface section of your config</p>
<pre><code>  [[feather]]
    type = BackboneInterface
    enabled = True
    interface_enabled = true
    target_host = rns.feather.onl
    target_port = 4242
    name = feather
</code></pre>]]></description>
	<link>https://feather.onl/videos/reticulum/getting-connected</link>
	<pubDate>2026-04-16 01:01:46</pubDate>
	<guid>https://feather.onl/videos/reticulum/getting-connected</guid>
</item>


</channel>
</rss>
