<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<title>&lt;sub&gt;Relevant - Blog</title>
	<subtitle>Not quite irrelevant.</subtitle>
	<link rel="self" type="application/atom+xml" href="https://subrelevant.cc/blog/atom.xml"/>
	<link rel="alternate" type="text/html" href="https://subrelevant.cc/"/>
	<updated>2026-10-07T12:39:55+00:00</updated>
	<id>https://subrelevant.cc/blog/atom.xml</id>
	<entry xml:lang="en">
		<title>RSS feeds</title>
		<published>2026-10-07T12:39:55+00:00</published>
		<updated>2026-10-07T12:39:55+00:00</updated>
		<author><name>????</name></author>
		<summary type="html">You&apos;ll go hungry sorry</summary>
		<content type="html" xml:base="https://subrelevant.cc/blog/rss-feeds/">&lt;p&gt;One thing I usually make sure to avoid in the bloatnet are &quot;feeds&quot;, because most sites that have them try to fill it up with the cheapest and lowest quality slop they can get away with, just like an industrial pig farmer would, I despise being fed slop so I don&#x27;t use any of those websites in the first place but it traumatized me as a child because I realized very early on that if they were doing that in such a large scale it means there were &quot;people&quot; stupid enough to click that garbage.&lt;&#x2F;p&gt;
&lt;p&gt;As such I always tend to avoid the world &quot;feed&quot; like the plague, even from places I would have no reason to avoid like small blogs and such&lt;&#x2F;p&gt;
&lt;p&gt;Now that I have a website however, a feed is no longer a mechanism to receive slop; I can now produce it too, or in fancy words &quot;federated decentralized low-latency communication&quot;, aka chatting.&lt;&#x2F;p&gt;
&lt;p&gt;I decided that I would use RSS pretty early on when I got the website but the regular decision paralysis got me and I got blocked at this:&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;I need to make my own rss feed&lt;&#x2F;li&gt;
&lt;li&gt;I need to make sure it works&lt;&#x2F;li&gt;
&lt;li&gt;I need to test one of those reader thingies&lt;&#x2F;li&gt;
&lt;li&gt;I need to find some feeds I care about enough to subscribe, yet fast enough to test it in real time&lt;&#x2F;li&gt;
&lt;li&gt;goto 1.&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;p&gt;You&#x27;ll notice I said chatting too, I was also wondering how to test chatting BEFORE getting someone to chat with, because I currently don&#x27;t have anyone, so there&#x27;s that.&lt;&#x2F;p&gt;
&lt;p&gt;Anyways if you see this webpage (and even if you don&#x27;t) that means the blog is already serving an Atom feed &lt;a href=&quot;&#x2F;blog&#x2F;atom.xml&quot;&gt;Here&lt;&#x2F;a&gt; and a RSS feed &lt;a href=&quot;&#x2F;blog&#x2F;rss.xml&quot;&gt;Here&lt;&#x2F;a&gt; I don&#x27;t really know what makes them distinct or if I need both but the reader I picked behaves weird with Atom.&lt;&#x2F;p&gt;
&lt;p&gt;Why did I do it now if I am a pro procrastinator you ask? easy, I&#x27;m currently skipping class and I&#x27;m bored.&lt;&#x2F;p&gt;
</content>
	</entry>
	<entry xml:lang="en">
		<title>Making webpages wrong</title>
		<published>2026-09-16T07:04:24+00:00</published>
		<updated>2026-09-16T07:04:24+00:00</updated>
		<author><name>????</name></author>
		<summary type="html">the way to fight against perfectionism</summary>
		<content type="html" xml:base="https://subrelevant.cc/blog/making-webpages-wrong/">&lt;p&gt;One of the things that slows me the most when designing most things is the fact that I very often find myself not liking what I already have, and tearing everything apart.&lt;&#x2F;p&gt;
&lt;p&gt;If it happens while programming it is not too big of an issue, I can just comment out the old function, move it at the end of the file and start over again, if I find my new design to be less efficient then I just do the same thing and compare it with the other options, till I exhaust all reasonable ways of doing something.&lt;&#x2F;p&gt;
&lt;p&gt;Making webpages however, is a completely different animal.
To begin with you can&#x27;t really measure your webpage, which is a bad starting point, but the worst part is not that, the worst part is that to make a webpage you need to balance 2 different languages at the same time, &lt;mark title=&quot;JS is for computing, you don&#x27;t need to do any computing to determine the layout of the page, at least no more than modern CSS provides, if you use JS for redundant garbage such as popups please leave my site.
Interactiveness gets a pass if it&#x27;s actually necessary (webapps and the likes).&quot;&gt;&lt;code&gt;HTML&lt;&#x2F;code&gt; and &lt;code&gt;CSS&lt;&#x2F;code&gt;&lt;&#x2F;mark&gt;. All those things make finding an optimal impossible, so you have to rely on gut feelings and some other less encompassing meters, like loadtime.&lt;&#x2F;p&gt;
&lt;p&gt;Of course this is a non-issue for the majority of webdevs, because they just ignore quality and any problem in one component they &quot;solve&quot; by just adding more stuff at the other side, this is why they are so affectionately called &lt;strong&gt;webshitters&lt;&#x2F;strong&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Anyways, the fact that making a website requires both at the same time is absolutely horrible to learn either if you&#x27;re as OCD as I am about this stuff, when I was younger I could never ever get a proper page because whenever I changed the HTML I promptly changed the CSS for something that would represent better the new layout, and soon after that I changed the layout so it could be properly styled the way I wanted, then shortly I would discover another place where a different style might look better, and an inconsistency would be created which forced me to start all over again, or the more likely scenario; ragequitting.&lt;&#x2F;p&gt;
&lt;p&gt;Thus trying to make webpages taught me next to nothing about making them, the way I &lt;mark title=&quot;I am still quite bad&quot;&gt;&quot;learned&quot;&lt;&#x2F;mark&gt; to make them was not by making webpages, but by fixing other people&#x27;s messes:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #BFBDB6; background-color: #0D1017;&quot;&gt;&lt;code data-lang=&quot;javascript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #5A6673;font-style: italic;&quot;&gt;&#x2F;&#x2F; ==UserScript==&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #5A6673;font-style: italic;&quot;&gt;&#x2F;&#x2F; @name        Template&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #5A6673;font-style: italic;&quot;&gt;&#x2F;&#x2F; @namespace   -&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #5A6673;font-style: italic;&quot;&gt;&#x2F;&#x2F; @version     1.0.0&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #5A6673;font-style: italic;&quot;&gt;&#x2F;&#x2F; @match       website.example.com&#x2F;**&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #5A6673;font-style: italic;&quot;&gt;&#x2F;&#x2F; @grant       GM_addStyle&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #5A6673;font-style: italic;&quot;&gt;&#x2F;&#x2F; ==&#x2F;UserScript==&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FFB454;&quot;&gt;GM_addStyle&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt;`&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt;css {goes: here;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt;`&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;using ViolentMonkey to fix the CSS of hideous looking websites I use the most is pretty easy, and for quite a while it was enough to satisfy me, but soon it tired me and at some point I just got angry and straight up deleted &lt;code&gt;&amp;lt;head&amp;gt;&lt;&#x2F;code&gt;, taking with it most styles.&lt;&#x2F;p&gt;
&lt;p&gt;If you ever do that it won&#x27;t take too long for you to realize that not only the visuals of most webpages are fucked up, but the DOM is almost certainly a hideous garbage too.&lt;&#x2F;p&gt;
&lt;p&gt;I think the defining mark of a good website is simplicity, imo a good website should be viewable just as well &lt;mark title=&quot;If you delete this website&#x27;s head make sure to delete &lt;body&gt;&#x27;s inline style too&quot;&gt;if most of the styling is missing&lt;&#x2F;mark&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;In the end, I can&#x27;t really say I&#x27;m showing by example, this website was made specifically so I could cure my decision paralysis when it comes to posting something online (with no success so far), so I try to be a little less methodical than I would normally be.&lt;&#x2F;p&gt;
</content>
	</entry>
	<entry xml:lang="en">
		<title>250kb club</title>
		<published>2026-09-06T05:37:01+00:00</published>
		<updated>2026-09-06T05:37:01+00:00</updated>
		<author><name>????</name></author>
		<summary type="html">Minigame and small website</summary>
		<content type="html" xml:base="https://subrelevant.cc/blog/250kb-club/">&lt;p&gt;In case you haven&#x27;t noticed this webpage is reasonably small, that&#x27;s because I dislike bloated webpages quite a lot, it is however, not as optimized as I could which made me a little hesitant about doing one of the things I had in mind when I bought the domain, submitting it to the &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;250kb.club&quot;&gt;250kb club&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;And so, instead of just submitting the boring homepage, I decided to make a little minigame using css and popovers on it&#x27;s own subdomain, it&#x27;s extremely simple and it should be less than 1kb almost every time, with some variance due to the fact that the pattern changes every minute.&lt;&#x2F;p&gt;
&lt;p&gt;Anyways go check it out &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;whack.subrelevant.cc&quot;&gt;WHACK&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;The game itself is generated by simply generating a random button pattern every time, you can make as many as you want going as fast as you want, I could probably make a more polished version one day if I feel like it.&lt;&#x2F;p&gt;
&lt;aside&gt;and yes, you can cheat using tab to select the buttons, but you can cheat using f12 to click them anyways so idc, adding tabindex=-1 to every button wastes too many bytes, you don&#x27;t get the trophy emoji if you do it that way.&lt;&#x2F;aside&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;subrelevant.cc&#x2F;code&#x2F;whackgen.sh&quot;&gt;Here&lt;&#x2F;a&gt; is the script to generate it, simply add more letters in &lt;code&gt;q=&quot;abcd&quot;&lt;&#x2F;code&gt; to change the amount of buttons, it needs an already existing &lt;code&gt;whack.html&lt;&#x2F;code&gt; to populate.&lt;&#x2F;p&gt;
</content>
	</entry>
	<entry xml:lang="en">
		<title>Short Posts</title>
		<published>2026-09-02T02:14:36+00:00</published>
		<updated>2026-09-02T02:14:36+00:00</updated>
		<author><name>????</name></author>
		<summary type="html">No need to write a book</summary>
		<content type="html" xml:base="https://subrelevant.cc/blog/short-posts/">&lt;p&gt;I need to start making shorter posts too, so far I have been weeks writing a single one(or rather, the topic for it) and I&#x27;m kind of getting burnt out, writing a short entry about that is probably a good start.&lt;&#x2F;p&gt;
&lt;p&gt;Still feels kind of wrong to write so little tho...&lt;&#x2F;p&gt;
&lt;br&#x2F;&gt;
&lt;br&#x2F;&gt;
&lt;br&#x2F;&gt;
&lt;p&gt;Nothing much to say either.&lt;&#x2F;p&gt;
</content>
	</entry>
	<entry xml:lang="en">
		<title>Crypto catch 22</title>
		<published>2026-08-10T00:17:39+00:00</published>
		<updated>2026-08-10T00:17:39+00:00</updated>
		<author><name>????</name></author>
		<summary type="html">they have a right to do anything we can&apos;t stop them from doing</summary>
		<content type="html" xml:base="https://subrelevant.cc/blog/crypto-catch-22/">&lt;style&gt;
[popover]{padding:1em;max-width:67%;}
button{padding:0.2em 0.5em;margin:0.5em auto 0 auto;}
button + :not(button){display:block}


.loop {visibility: hidden;}
#offer[open] + #start{.loop {visibility: visible !important;}}

#after, aside + span{display:none;}
#beg[open]:not(:popover-open) + #after{display: unset !important;}
main:has(&gt; #beg[open]:not(:popover-open)) + footer &gt; aside + span {
	display: unset !important;
}
details.no[open] &gt; summary{display:none}

&lt;&#x2F;style&gt;
&lt;p&gt;Imagine me, you or anyone else, going about your day and suddenly saying...&lt;&#x2F;p&gt;
&lt;p&gt;&lt;button	popovertarget=&quot;start&quot;&gt;Hey, I want some crypto!&lt;&#x2F;button&gt;&lt;&#x2F;p&gt;
&lt;div popover id=&quot;2ways1&quot;&gt;It seems like there are 2 main ways to do what I want.
&lt;p&gt;&lt;button popovertarget=&quot;satan1&quot;&gt;Big Centralized Exchanges&lt;&#x2F;button&gt;
&lt;button popovertarget=&quot;p2p1&quot;&gt;P2P exchanges&lt;&#x2F;button&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;div popover id=&quot;satan1&quot;&gt;I hate big tech companies and I&#x27;ve heard very bad things about crypto ones, but at the very least the fact that they&#x27;re big MUST mean they have a modicum of trustworthiness? Right?
&lt;p&gt;With that in mind I embark to do something I abhor doing, making accounts, worst part every time is to update my mental graph of what&#x27;s connected to what and such, I prepare to surrender running js, one of my most botnet tied &lt;mark title=&quot;a @tuta.io one, they are surprisingly well received so I don&#x27;t really trust them, but they&#x27;re easy to get so I do recommend getting one for sites that don&#x27;t accept better alternatives&quot;&gt;e-mails&lt;&#x2F;mark&gt;, and maybe even a burner phone number down the line if the service actually works.&lt;&#x2F;p&gt;
&lt;p&gt;With that in mind I press the button that says: &lt;button popovertarget=&quot;satan2&quot;&gt;Register&lt;&#x2F;button&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;div popover id=&quot;satan2&quot;&gt;Lmao. &lt;button	popovertarget=&quot;satan1&quot; popovertargetaction=&quot;hide&quot;&gt;Back to step 1&lt;&#x2F;button&gt;
&lt;&#x2F;div&gt;
&lt;div popover id=&quot;p2p1&quot;&gt;
I take a look around &lt;a href=&quot;https:&#x2F;&#x2F;kycnot.me&#x2F;?categories=exchange&quot;&gt;some sites&lt;&#x2F;a&gt; to see which ones are not scams, nor ask me enough personal info to write a memoir about me.
&lt;p&gt;After looking for a while I see there are a few promising ones:&lt;&#x2F;p&gt;
&lt;p&gt;&lt;button	popovertarget=&quot;havn-robo&quot; &gt;RetoSwap&lt;&#x2F;button&gt;
&lt;button	popovertarget=&quot;havn-robo&quot; &gt;RoboSats&lt;&#x2F;button&gt;
&lt;button	popovertarget=&quot;havn-robo&quot; &gt;Bisq&lt;&#x2F;button&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;div popover id=&quot;havn-robo&quot;&gt;Looks promising, people post sell offers you can take, or you can post your own buy offer.
&lt;p&gt;If you&#x27;re American or European, and rarely some other big countries you can easily find someone willing to buy your money in exchange for their crypto, I am, however, not.&lt;&#x2F;p&gt;
&lt;p&gt;That means I can never really take any sell offers, since I don&#x27;t have the ability to send money with the bank account I was already forced to surrender to live as a member of my country&#x27;s society, I wouldn&#x27;t be unwilling to register in the other payment processors if they didn&#x27;t all require the same or more personal information than big exchanges anyways, as a matter of fact many of those disservices literally require more info that I actually possess, I can&#x27;t enroll even if I was a complete golem willing to surrender my entire being to a corporation because they demand even more.&lt;&#x2F;p&gt;
&lt;p&gt;With that in mind I should probably &lt;button popovertarget=&quot;havn-robo&quot; popovertargetaction=&quot;hide&quot;&gt;Try an alternative&lt;&#x2F;button&gt; But I&#x27;m sure there must be a way of trading on this one, perhaps it would be better if I &lt;button popovertarget=&quot;offer&quot;&gt;Keep looking&lt;&#x2F;button&gt; for a bit&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;details popover id=&quot;offer&quot; class=&quot;no&quot;&gt;
&lt;summary&gt;&lt;a&gt;Let&#x27;s see let&#x27;s see...&lt;&#x2F;a&gt;&lt;&#x2F;summary&gt;
Oh yeah! this way of doing things is nice in that they let you post buy offers with no KYC nonsense either, they don&#x27;t even have accounts, the only thing you need is to have is...
&lt;p&gt;...a small amount of crypto as insurance.&lt;&#x2F;p&gt;
&lt;p&gt;Of course, I don&#x27;t mind using some funds as insurance to get more, that is just how money works, with that in mind &lt;button popovertarget=&quot;2ways1&quot; popovertargetaction=&quot;hide&quot;&gt;Let&#x27;s get some!&lt;&#x2F;button&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;details&gt;
&lt;div popover id=&quot;start&quot;&gt;I just need a teeny tiny bit, Surely this can&#x27;t be too hard can it?
&lt;p&gt;&lt;button	popovertarget=&quot;2ways1&quot;&gt;Let&#x27;s search online what are my options&lt;&#x2F;button&gt;
&lt;button	popovertarget=&quot;no-escape&quot; class=&quot;loop&quot;&gt;I&#x27;ve been here before haven&#x27;t I?&lt;&#x2F;button&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;div popover id=&quot;no-escape&quot;&gt;Yup.
&lt;p&gt;If you want crypto you need to surrender your life to a foreign company, or pay crypto to get crypto without doing so.&lt;&#x2F;p&gt;
&lt;p&gt;Sure I could theoretically mine them, but electricity prices are insane where I live + I don&#x27;t have the hardware to get even the base bootstrap amount in a reasonable amount of time anyways, so It&#x27;d have to be on someone else&#x27;s computer, which you can&#x27;t usually do legally without paying. If I could pay like that I wouldn&#x27;t be in this predicament in the first place.&lt;&#x2F;p&gt;
&lt;p&gt;I guess there is still &lt;button popovertarget=&quot;beg&quot;&gt;one way...&lt;&#x2F;button&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;details popover id=&quot;beg&quot; class=&quot;no&quot;&gt;
&lt;summary&gt;&lt;a&gt;Begging!&lt;&#x2F;a&gt;&lt;&#x2F;summary&gt;
That&#x27;s right, begging seems to be my only option.
&lt;p&gt;I can just put out a digital panhandle and hope that someone who has already gone through the whole ordeal before (or got lucky and didn&#x27;t need to) can spare some change&lt;&#x2F;p&gt;
&lt;p&gt;With that in mind I put some wallet addresses in the footer of the webpage, you can now go ahead and &lt;button popovertarget=&quot;start&quot; popovertargetaction=&quot;hide&quot;&gt;Close this&lt;&#x2F;button&gt; to Check them out&lt;&#x2F;p&gt;
&lt;&#x2F;details&gt;
&lt;div id=&quot;after&quot;&gt;
&lt;h2 id=&quot;so-yeah-the-interactive-story-ends-here&quot;&gt;So yeah, the interactive story ends here&lt;&#x2F;h2&gt;
&lt;p&gt;I&#x27;m still not too sure about keeping the addresses in the footer forever but I guess they&#x27;re staying until I can get enough to afford getting more, then I&#x27;ll probably move them to their own page and just leave a &lt;a&gt;Give me money&lt;&#x2F;a&gt; link somewhere, probably the footer too.&lt;&#x2F;p&gt;
&lt;p&gt;I planned this story a long time ago, before the creation date actually, but I didn&#x27;t post it because I had to wait a long time for the Monero blockchain to synchronize, then I got busy doing something else, then I redesigned the whole thing to make it an interactive post instead of a boring text only one.&lt;&#x2F;p&gt;
&lt;p&gt;Now that I finally have time all crypto seems to have spiked in price for some reason, I wonder whats up with that.&lt;&#x2F;p&gt;
&lt;p&gt;That probably means that I am less likely to actually get donations I guess, but I don&#x27;t know how big the impact would be because I have never donated to a website in my life &lt;code title=&quot;and yes if I ever get some and see someone in the same situation I will return the favor&quot;&gt;(Read &lt;a href=&quot;#&quot;&gt;here&lt;&#x2F;a&gt; if you want to know why, &lt;sub&gt;Spoiler: it&#x27;s because I don&#x27;t have any internet money to donate in the first place&lt;&#x2F;sub&gt;)&lt;&#x2F;code&gt; I&#x27;ve got absolutely no clue if this is like, a realistic goal or if I am shooting for the moon, but you&#x27;ll never know if you don&#x27;t try.&lt;&#x2F;p&gt;
&lt;details&gt;&lt;summary&gt;&lt;a&gt;If you&#x27;re curious about how this works...&lt;&#x2F;a&gt;&lt;&#x2F;summary&gt;
&lt;p&gt;it&#x27;s all thanks to the &lt;code&gt;popover&lt;&#x2F;code&gt; attribute and the &lt;code&gt;&amp;lt;details&amp;gt;&lt;&#x2F;code&gt; element + a teeny tiny bit of &lt;code&gt;css&lt;&#x2F;code&gt;, no js required, and this is just a small demo, you can truly make a fully interactive VN or something like that if you&#x27;re dedicated enough, but I suck at making games so you won&#x27;t see me posting anything too polished either.&lt;&#x2F;p&gt;
&lt;p&gt;The core of the logic is simply leaving a &lt;code&gt;&amp;lt;details&amp;gt;&lt;&#x2F;code&gt; open and only making visible things if they&#x27;re after it when open, and invisible if it&#x27;s closed.&lt;&#x2F;p&gt;
&lt;p&gt;That and the fact that popovers can be anywhere on the page makes it so the whole logic on the page is just:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #BFBDB6; background-color: #0D1017;&quot;&gt;&lt;code data-lang=&quot;css&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FFB454;&quot;&gt;.loop&lt;&#x2F;span&gt;&lt;span&gt; {&lt;&#x2F;span&gt;&lt;span style=&quot;color: #39BAE6;&quot;&gt;visibility&lt;&#x2F;span&gt;&lt;span style=&quot;color: #BFBDB6B3;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F29668;font-style: italic;&quot;&gt; hidden&lt;&#x2F;span&gt;&lt;span style=&quot;color: #BFBDB6B3;&quot;&gt;;&lt;&#x2F;span&gt;&lt;span&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FFB454;&quot;&gt;#offer&lt;&#x2F;span&gt;&lt;span&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FFB454;&quot;&gt;open&lt;&#x2F;span&gt;&lt;span&gt;]&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F29668;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FFB454;&quot;&gt; #start&lt;&#x2F;span&gt;&lt;span&gt;{.loop {&lt;&#x2F;span&gt;&lt;span style=&quot;color: #39BAE6;&quot;&gt;visibility&lt;&#x2F;span&gt;&lt;span style=&quot;color: #BFBDB6B3;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F29668;font-style: italic;&quot;&gt; visible&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt; !important&lt;&#x2F;span&gt;&lt;span style=&quot;color: #BFBDB6B3;&quot;&gt;;&lt;&#x2F;span&gt;&lt;span&gt;}}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FFB454;&quot;&gt;#after&lt;&#x2F;span&gt;&lt;span style=&quot;color: #BFBDB6B3;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59C2FF;&quot;&gt; aside&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F29668;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59C2FF;&quot;&gt; span&lt;&#x2F;span&gt;&lt;span&gt;{&lt;&#x2F;span&gt;&lt;span style=&quot;color: #39BAE6;&quot;&gt;display&lt;&#x2F;span&gt;&lt;span style=&quot;color: #BFBDB6B3;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F29668;font-style: italic;&quot;&gt;none&lt;&#x2F;span&gt;&lt;span style=&quot;color: #BFBDB6B3;&quot;&gt;;&lt;&#x2F;span&gt;&lt;span&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FFB454;&quot;&gt;#beg&lt;&#x2F;span&gt;&lt;span&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FFB454;&quot;&gt;open&lt;&#x2F;span&gt;&lt;span&gt;]&lt;&#x2F;span&gt;&lt;span style=&quot;color: #95E6CB;&quot;&gt;:not&lt;&#x2F;span&gt;&lt;span&gt;(:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59C2FF;&quot;&gt;popover-open&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F29668;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FFB454;&quot;&gt; #after&lt;&#x2F;span&gt;&lt;span&gt;{&lt;&#x2F;span&gt;&lt;span style=&quot;color: #39BAE6;&quot;&gt;display&lt;&#x2F;span&gt;&lt;span style=&quot;color: #BFBDB6B3;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F29668;font-style: italic;&quot;&gt; unset&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt; !important&lt;&#x2F;span&gt;&lt;span style=&quot;color: #BFBDB6B3;&quot;&gt;;&lt;&#x2F;span&gt;&lt;span&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59C2FF;&quot;&gt;main&lt;&#x2F;span&gt;&lt;span style=&quot;color: #95E6CB;&quot;&gt;:has&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F29668;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FFB454;&quot;&gt; #beg&lt;&#x2F;span&gt;&lt;span&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FFB454;&quot;&gt;open&lt;&#x2F;span&gt;&lt;span&gt;]&lt;&#x2F;span&gt;&lt;span style=&quot;color: #95E6CB;&quot;&gt;:not&lt;&#x2F;span&gt;&lt;span&gt;(:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59C2FF;&quot;&gt;popover-open&lt;&#x2F;span&gt;&lt;span&gt;))&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F29668;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59C2FF;&quot;&gt; footer&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F29668;&quot;&gt; &amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59C2FF;&quot;&gt; aside&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F29668;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59C2FF;&quot;&gt; span&lt;&#x2F;span&gt;&lt;span&gt; {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #39BAE6;&quot;&gt;	display&lt;&#x2F;span&gt;&lt;span style=&quot;color: #BFBDB6B3;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F29668;font-style: italic;&quot;&gt; unset&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt; !important&lt;&#x2F;span&gt;&lt;span style=&quot;color: #BFBDB6B3;&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59C2FF;&quot;&gt;details&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FFB454;&quot;&gt;.no&lt;&#x2F;span&gt;&lt;span&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FFB454;&quot;&gt;open&lt;&#x2F;span&gt;&lt;span&gt;]&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F29668;&quot;&gt; &amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59C2FF;&quot;&gt; summary&lt;&#x2F;span&gt;&lt;span&gt;{&lt;&#x2F;span&gt;&lt;span style=&quot;color: #39BAE6;&quot;&gt;display&lt;&#x2F;span&gt;&lt;span style=&quot;color: #BFBDB6B3;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F29668;font-style: italic;&quot;&gt;none&lt;&#x2F;span&gt;&lt;span&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Where the first 2 are responsible for the &lt;button&gt;I&#x27;ve been here before&lt;&#x2F;button&gt; button, while the rest are responsible for hiding the footer addresses and this section.&lt;&#x2F;p&gt;
&lt;p&gt;Anyways I like both &lt;code&gt;popover&lt;&#x2F;code&gt; and &lt;code&gt;&amp;lt;details&amp;gt;&lt;&#x2F;code&gt; very much, I wish they were used more often instead of websites being unusable by requiring nasty(and rather unsafe, if not outright malicious) js code downloaded from who knows where.&lt;&#x2F;p&gt;
&lt;&#x2F;details&gt;
&lt;&#x2F;div&gt;
</content>
	</entry>
	<entry xml:lang="en">
		<title>Need to organize things</title>
		<published>2026-08-07T17:38:29+00:00</published>
		<updated>2026-08-07T17:38:29+00:00</updated>
		<author><name>????</name></author>
		<summary type="html">Open terminal, &lt;code&gt;mkdir OLD;mv *.* OLD; &lt;/code&gt;&lt;code&gt;mv OLD Misc/Stuff/OLD/OLD2/STUFF/&lt;/code&gt; then forget about it</summary>
		<content type="html" xml:base="https://subrelevant.cc/blog/need-to-organize-things/">&lt;p&gt;I really need to organize my files, every time I try I end up overwhelmed, and the usual &quot;Do it in small steps&quot; suggestion is counterproductive because files are just virtualized data, I can effortlessly shuffle them all around and put them in neat folders if I wanted but that solves nothing and more often than not it just ends up with me having more stuff to sort.&lt;&#x2F;p&gt;
&lt;p&gt;I already do that, I wrote a small go script that takes a folder and just organizes everything into the big &lt;code&gt;SORT&lt;&#x2F;code&gt; folder at &lt;code&gt;&#x2F;home&lt;&#x2F;code&gt;&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo no&quot;&gt;user@computer:~&#x2F;SORT$ ls
 Audios     Minecraft       Software
 Books     &#x27;Old Projects&#x27;   sort.log
 Fonts      Operation       Texts
 Images     Other           weirdos
 Manually   Programming     Zips&lt;&#x2F;pre&gt;
&lt;p&gt;Some are further divided into more folders but it&#x27;s still flatter than most of the computer, it&#x27;s still not a good solution by any means, I thankfully discovered very early that running my script recursively is a very bad idea, it&#x27;s obvious but I didn&#x27;t realize while I was coding it, but file identification is context dependent, so when I was running it on a small subset of the last files I had downloaded I saw as the folder &lt;code&gt;Factorio&#x2F;&lt;&#x2F;code&gt; got completely mangled just before my eyes.&lt;&#x2F;p&gt;
&lt;p&gt;Since I am incredibly &lt;mark title=&quot;Also known as digital diogenes syndrome, what caused this whole mess in the first place&quot;&gt;paranoid&lt;&#x2F;mark&gt; about losing files I made very sure as I was writing the script that nothing I did was irreversible, and properly logged, so I was able to recover things just as they were just by reading the log and just undoing each file move.&lt;&#x2F;p&gt;
&lt;p&gt;Still being delicate with moving files doesn&#x27;t change the fact that the sorter was now at most half as effective, I can run it non recursively in a folder with no inherent context such as Downloads and it&#x27;ll just move the Images, Audios, Books, etc to their &quot;respective places&quot;, then I have to go to each individual sub-folder remaining and run it again, it wouldn&#x27;t be that bad if not for the fact that I am just moving the problem out of sight instead of solving it.&lt;&#x2F;p&gt;
&lt;p&gt;Each and every one of those &quot;Respective places&quot; files go to has a problem of it&#x27;s own, let&#x27;s list them.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;texts&quot;&gt;&lt;code&gt;Texts&#x2F;&lt;&#x2F;code&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;Overall the most successful, it has simple text files in plain text but aren&#x27;t scripts, problem is I need to manually move them in from &lt;code&gt;weirdos&lt;&#x2F;code&gt; half of the time.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;weirdos&quot;&gt;&lt;code&gt;weirdos&#x2F;&lt;&#x2F;code&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;for the files that don&#x27;t fit anything else I&#x27;ve seen; corrupted files, weird formats and similar, it&#x27;s not really sorted but it has what it says it has.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;other&quot;&gt;&lt;code&gt;Other&#x2F;&lt;&#x2F;code&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;Not so weird stuff that is still hard to sort; some saved webpages, some captchas I scrapped when making a solver, some drawings, some backups, the uncompressed &lt;a rel=&quot;external&quot; href=&quot;http:&#x2F;&#x2F;www.schaik.com&#x2F;pngsuite&#x2F;&quot;&gt;PngSuite&lt;&#x2F;a&gt;, some chess .pgns, some &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;ocw.mit.edu&#x2F;search&#x2F;?t=Computer+Science&quot;&gt;Courses&lt;&#x2F;a&gt;, stuff like that.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;fonts&quot;&gt;&lt;code&gt;Fonts&#x2F;&lt;&#x2F;code&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;Contains a grand total of 3 different fonts, that would be bad on it&#x27;s own but it gets worse; none of those fonts is actually &quot;sorted&quot; by being here, for a font to be installed it needs to be in the &lt;code&gt;.fonts&lt;&#x2F;code&gt; folder in the first place, so those 3 fonts are either inert, and therefore useless, or duplicated and therefore actively harmful since when I change OS I take the whole .fonts folder with me anyway and dump it somewhere else.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;manually&quot;&gt;&lt;code&gt;Manually&#x2F;&lt;&#x2F;code&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;It&#x27;s empty and the script conscientiously avoids putting stuff on it, it&#x27;s one of the whitelisted paths where I allowed the script to run recursively so the intended use was probably FolderToSort&#x2F;* -&amp;gt; Manually -&amp;gt; [Sort], but it didn&#x27;t take long for me to realize that it&#x27;s far easier to make a new temp folder at FolderToSort and move what I want to automatically sort there, so this has remained empty for all it&#x27;s existence.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;operation&quot;&gt;&lt;code&gt;Operation&#x2F;&lt;&#x2F;code&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;I&#x27;ve got no clue what that is, it only contains an empty file named &lt;code&gt;nthumbnail.py&lt;&#x2F;code&gt;, the sorter script doesn&#x27;t mention it at all either.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;audios-music-audios-unsorted&quot;&gt;&lt;code&gt;Audios&#x2F;Music&#x2F; &amp;amp; Audios&#x2F;Unsorted&#x2F;&lt;&#x2F;code&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;Everything new comes in to &lt;code&gt;Unsorted&lt;&#x2F;code&gt; and some of it is &lt;strong&gt;supposed&lt;&#x2F;strong&gt; to go into &lt;code&gt;Music&lt;&#x2F;code&gt; eventually, but it never does, audio is the one thing I&#x27;ve never managed to handle, I just can&#x27;t hear the difference between some 36mb lossless .flac vs a &lt;code&gt;-b:a 24k&lt;&#x2F;code&gt; opus, yet I store both in the same place all the same, it is also full of things I don&#x27;t really know where to put like pink noise, recordings of background and some very short audio clips that probably came from a video, like this: &lt;audio controls loading=&quot;lazy&quot; title=&quot;No idea about the song, sounds like Two Door Cinema Club, but I don&#x27;t think it is&quot; src=&quot;&#x2F;audio&#x2F;4445.opus&quot;&gt;&lt;&#x2F;audio&gt; I don&#x27;t think that should be put in the music folder despite it being indisputably music.&lt;&#x2F;p&gt;
&lt;p&gt;That of course it is paired with the fact that &lt;code&gt;Music&#x2F;&lt;&#x2F;code&gt; isn&#x27;t any good either, it contains 8 folders; 3 are sets I torrented, they come with the cover and separated in neat folders for each disk despite me only caring about 1 or 2 of the songs inside, I won&#x27;t delete them tho, 4 of them are basically the same except every song is optimized&lt;del&gt;???&lt;&#x2F;del&gt;, their hashes are all different but their sizes aren&#x27;t considerably so, I know some have metadata and some don&#x27;t but they aren&#x27;t organized by folder, and I can&#x27;t really compare them because I can&#x27;t hear a damn difference. Finally the last folder; &lt;code&gt;TODO&#x2F;&lt;&#x2F;code&gt; isn&#x27;t even audio files, it&#x27;s full of videos that I was going to convert to audio but I never ended up doing so, to begin with I usually listen to music from video files in the first place so there is little point of converting them to audio, but I can&#x27;t (Well, I don&#x27;t want to) do the same the other way around, so they will stay as audio.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;books&quot;&gt;&lt;code&gt;Books&#x2F;&lt;&#x2F;code&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;Has like 6 books and the rest is random .pdf files that can&#x27;t really be called books, wouldn&#x27;t be so bad if not for the fact that I have some 30gb worth of books somewhere in the computer (I&#x27;ll read them one of these days I swear), yet the modest subset of them in this folder barely reaches a few MB, I&#x27;ve got no idea where the rest of books is but I&#x27;d consider this a sorting failure.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;zips&quot;&gt;&lt;code&gt;Zips&#x2F;&lt;&#x2F;code&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;While this accomplishes having only it&#x27;s subject matter inside, the category of &quot;zips&quot; is terribly useless and overlaps with a lot of stuff, from manga to minecraft modpacks to random source code to some really bizarre files I made when messing with raw binary data to some who knows what password protected archives(probably some game considering it&#x27;s size and name) to actual important backups to whatever else the directory has. Having a &quot;Zips&quot; folder accomplishes absolutely nothing more than a &quot;Misc Junk&quot; folder would, except this obfuscates it&#x27;s content and makes finding content inside it almost impossible.&lt;&#x2F;p&gt;
&lt;h4 id=&quot;now-it-s-time-for-the-ugly-ones&quot;&gt;Now it&#x27;s time for the ugly ones&lt;&#x2F;h4&gt;
&lt;h2 id=&quot;software&quot;&gt;&lt;code&gt;Software&#x2F;&lt;&#x2F;code&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;Originally meant for installers and similar; .deb, .flatpak, .snap, .apk, etc or direct executables; bins, appimages, .desktop launchers, etc.
After the Factorio accident I also gave it the additional meaning of storing all folders that are unsorteable because they are required to have a structure for some software to run, I soon realized that:&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;I have no idea what software requires what structure to run&lt;&#x2F;li&gt;
&lt;li&gt;I am already putting most &quot;folders required to have a structure&quot; elsewhere, this is redundant&lt;&#x2F;li&gt;
&lt;li&gt;Since this is impossible to automate, all folders that get into this are sorted manually&lt;&#x2F;li&gt;
&lt;li&gt;Folders that require structure often have reasons to stay in the place they were created and not in my big &lt;code&gt;SORT&lt;&#x2F;code&gt; folder&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;p&gt;And as you might&#x27;ve realized by no I suck at organizing stuff, so point 3) in particular is really bad, many files in there don&#x27;t actually fit the criteria like 1 off installer scripts and folders containing nothing but them.&lt;&#x2F;p&gt;
&lt;p&gt;The folder also has .isos and ROMs.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;programming&quot;&gt;&lt;code&gt;Programming&#x2F;&lt;&#x2F;code&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;Small scripts in various languages, mostly python, bash, lua and js, those are not meant to be software project or anything like that, they&#x27;re just scripts to perform a single task, often meant to be run only once, let&#x27;s see &lt;code&gt;t.4 (copy 1)-1.py&lt;&#x2F;code&gt;&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #BFBDB6; background-color: #0D1017;&quot;&gt;&lt;code data-lang=&quot;python&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;from&lt;&#x2F;span&gt;&lt;span&gt; subprocess&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt; import&lt;&#x2F;span&gt;&lt;span&gt; run&lt;&#x2F;span&gt;&lt;span style=&quot;color: #BFBDB6B3;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #95E6CB;&quot;&gt; PIPE&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;with&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F07178;&quot;&gt; open&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt;&amp;quot;P4.txt&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;as&lt;&#x2F;span&gt;&lt;span&gt; f&lt;&#x2F;span&gt;&lt;span style=&quot;color: #BFBDB6B3;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F07178;&quot;&gt; open&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt;&amp;quot;O.txt&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;as&lt;&#x2F;span&gt;&lt;span&gt; safe&lt;&#x2F;span&gt;&lt;span style=&quot;color: #BFBDB6B3;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span&gt; i&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F29668;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; {t&lt;&#x2F;span&gt;&lt;span style=&quot;color: #BFBDB6B3;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FFB454;&quot;&gt;strip&lt;&#x2F;span&gt;&lt;span&gt;()&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt; for&lt;&#x2F;span&gt;&lt;span&gt; t&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt; in&lt;&#x2F;span&gt;&lt;span&gt; f}&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F29668;&quot;&gt;-&lt;&#x2F;span&gt;&lt;span&gt;{t&lt;&#x2F;span&gt;&lt;span style=&quot;color: #BFBDB6B3;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FFB454;&quot;&gt;strip&lt;&#x2F;span&gt;&lt;span&gt;()&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt; for&lt;&#x2F;span&gt;&lt;span&gt; t&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt; in&lt;&#x2F;span&gt;&lt;span&gt; safe}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;for&lt;&#x2F;span&gt;&lt;span&gt; t&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt; in&lt;&#x2F;span&gt;&lt;span&gt; i&lt;&#x2F;span&gt;&lt;span style=&quot;color: #BFBDB6B3;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F07178;&quot;&gt;	print&lt;&#x2F;span&gt;&lt;span&gt;(t)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FFB454;&quot;&gt;	run&lt;&#x2F;span&gt;&lt;span&gt;([&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F29668;&quot;&gt;*&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt;&amp;quot;adb shell pm uninstall --user 0&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #BFBDB6B3;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FFB454;&quot;&gt;split&lt;&#x2F;span&gt;&lt;span&gt;()&lt;&#x2F;span&gt;&lt;span style=&quot;color: #BFBDB6B3;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt;t]&lt;&#x2F;span&gt;&lt;span style=&quot;color: #BFBDB6B3;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt;stdout&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F29668;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #95E6CB;&quot;&gt;PIPE&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;It&#x27;s very simple, it just uninstalls android apps listed in &lt;code&gt;P4.txt&lt;&#x2F;code&gt; but not on &lt;code&gt;O.txt&lt;&#x2F;code&gt;, it has some other garbage commented out at the end but it still is an incredibly simple script...&lt;&#x2F;p&gt;
&lt;p&gt;The thing is, I don&#x27;t have a &lt;code&gt;P4.txt&lt;&#x2F;code&gt; nor &lt;code&gt;O.txt&lt;&#x2F;code&gt; in &lt;code&gt;Programming&#x2F;&lt;&#x2F;code&gt;, and thus this script is completely useless, not only this one, pretty much every single script in this dir has been stripped from the one context they were designed to be in, rendering most of them completely useless, they&#x27;re not that valuable in the first place (I hope) so nothing depended on them (I think) and as such nothing has broken when I moved them here (I lie to myself).&lt;&#x2F;p&gt;
&lt;h2 id=&quot;minecraft&quot;&gt;&lt;code&gt;Minecraft&#x2F;&lt;&#x2F;code&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;A folder for Minecraft as the name implies, it has several subfolders:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo no&quot;&gt;user@computer:~&#x2F;SORT&#x2F;Minecraft$ ls
Instances  OtherVersions
Modpacks   Resourcepacks
Mods       Shaders&lt;&#x2F;pre&gt;
&lt;h3 id=&quot;modpacks&quot;&gt;&lt;code&gt;Modpacks&#x2F;&lt;&#x2F;code&gt;&lt;&#x2F;h3&gt;
&lt;p&gt;Contains some modpacks as .zip, it doesn&#x27;t have many since they are really hard to recognize programatically (&lt;code&gt;Zips&#x2F;&lt;&#x2F;code&gt; has several files that are just collections of standalone mods, those should be here), other than that it is solid.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;resourcepacks&quot;&gt;&lt;code&gt;Resourcepacks&#x2F;&lt;&#x2F;code&gt;&lt;&#x2F;h3&gt;
&lt;p&gt;Pretty much the same, easier to detect too so more of them are sorted there, no complaints.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;mods&quot;&gt;&lt;code&gt;Mods&#x2F;&lt;&#x2F;code&gt;&lt;&#x2F;h3&gt;
&lt;p&gt;The gates to hell, it has some source code as folders and some standalone mods already as jars, a subset of the former is the the code of the mods I&#x27;ve made myself, those folders aren&#x27;t really stored here, but rather they are symlinks to the the code stored in the dreaded &quot;Projects&quot; folder, I won&#x27;t stride further into it quite yet.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;shaders&quot;&gt;&lt;code&gt;Shaders&#x2F;&lt;&#x2F;code&gt;&lt;&#x2F;h3&gt;
&lt;p&gt;The opposite is true in this case, this is a regular folder containing many shaders, when I create a new instance I then make a symlink to this folder instead of downloading and configuring shaders all over again, I&#x27;ve got no idea how far has this folder spread nor what depends on it, so I rather not touch it.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;otherversions&quot;&gt;&lt;code&gt;OtherVersions&#x2F;&lt;&#x2F;code&gt;&lt;&#x2F;h3&gt;
&lt;p&gt;Clones, Reimplementations of both servers and clients, Pocket Edition, PS3 edition, PI edition, etc, basically anything that is Minecraft but it isn&#x27;t the Java version or Shitrock.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;instances&quot;&gt;&lt;code&gt;Instances&#x2F;&lt;&#x2F;code&gt;&lt;&#x2F;h3&gt;
&lt;p&gt;Many MANY instances coming from many different launchers, it&#x27;s a gigantic mess and that&#x27;s only the surface, once you go a few folders deep you&#x27;ll come to realize the fact that many inner folders are in fact symlinks to somewhere else, most to some folder inside &lt;code&gt;~&#x2F;Projects&lt;&#x2F;code&gt; (Another horror unrelated to &lt;code&gt;~&#x2F;SORT&lt;&#x2F;code&gt;), furthermore it&#x27;s filled with actually important worlds so I can&#x27;t just carelessly move it around, yet many are duplicate instances and backups of other instances elsewhere, worst part is that this folder isn&#x27;t really unique to &lt;code&gt;SORT&#x2F;Minecraft&lt;&#x2F;code&gt;, I have several such dirs everywhere in my computer and I can&#x27;t really centralize them because the symlink situation.&lt;&#x2F;p&gt;
&lt;p&gt;With 200gb it is the singular largest folder at this level(inside of one of &lt;code&gt;SORT&lt;&#x2F;code&gt;&#x27;s main subdirectories), yet it is not quite as problematic as some other folders since this is rarely accessed and grouped into mid to big sized files, there are still worse places.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;images&quot;&gt;&lt;code&gt;Images&#x2F;&lt;&#x2F;code&gt;&lt;&#x2F;h3&gt;
&lt;p&gt;Unlike every other folder in the &lt;code&gt;SORT&#x2F;&lt;&#x2F;code&gt; this is one I use very often and it contains many files, in fact this is a bucket for every png, jpg, webp and gif in the main drive and, as you might expect, it&#x27;s packed full, if it were a flat directory it would crash thunar every time I tried to open it so I separated it in 256 folders given by the first 2 digits of the blake3 hash of the file content, so every folder is ~700 big (I have some 180k images stored  here), this would be very manageable and quite a good solution if it was cold storage but it is not, this is a folder I index often and I am terribly inefficient at finding anything I want on it, I would like to tag them but this folder has a few main problems:&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;I have many copies of some images all with different hashes.&lt;&#x2F;li&gt;
&lt;li&gt;I have many images where the important is not the image but the data they contain (more on that in a future post).&lt;&#x2F;li&gt;
&lt;li&gt;For some idiotic reason many images are the thumbnails of other images in the folder, including some that are thumbnails of thumbnails, and thumbnails of thumbnails of thumbnails, and so on.&lt;&#x2F;li&gt;
&lt;li&gt;I am a very lazy person, unless I find an equally simple alternative where I can press a keybind and it does everything for me I doubt I&#x27;ll change the current system.&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;h3 id=&quot;old-projects&quot;&gt;&lt;code&gt;&#x27;Old Projects&#x27;&#x2F;&lt;&#x2F;code&gt;&lt;&#x2F;h3&gt;
&lt;p&gt;The ugliest in &lt;code&gt;SORT&lt;&#x2F;code&gt;, as it&#x27;s name implies it is full of &quot;Projects&quot;, those projects contain everything I&#x27;ve discussed above and more, regular programming, scripts, thousands of images generated by those scripts, Minecraft mods, obscure technologies and their guide books, manufactured special weird files, scrapped texts, drawn fonts, generated audio, etc, etc, etc.&lt;&#x2F;p&gt;
&lt;p&gt;The &lt;code&gt;Old&lt;&#x2F;code&gt; part comes from the fact that this isn&#x27;t actually my current project folder but rather the merging of some very old snapshots of the current one, I moved, renamed, edited, and generally changed around so many things that I don&#x27;t have a reliable way of matching the ones that were left here with the upstream &lt;code&gt;~&#x2F;Projects&lt;&#x2F;code&gt; so I had to relegate them here (&lt;code&gt;Projects&lt;&#x2F;code&gt; itself has it&#x27;s own &lt;code&gt;Old&lt;&#x2F;code&gt; folder with many more), it follows no definite structure other than folders roughly named after the name of at least one of the project they contain, sometimes.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;in-conclusion&quot;&gt;In conclusion&lt;&#x2F;h2&gt;
&lt;p&gt;Idk, don&#x27;t be like me I guess and sort your files properly, often an unplanned attempt hurts more than doing nothing and just accumulate stuff in a structured bucket.&lt;&#x2F;p&gt;
&lt;p&gt;I wish I had more drives to test many different topologies, but I guess the only solution is to get better at organizing things.&lt;&#x2F;p&gt;
</content>
	</entry>
	<entry xml:lang="en">
		<title>Stuff I like</title>
		<published>2026-07-19T00:33:53+00:00</published>
		<updated>2026-07-19T00:33:53+00:00</updated>
		<author><name>????</name></author>
		<summary type="html">Collection of things I think are worth checking out</summary>
		<content type="html" xml:base="https://subrelevant.cc/blog/sites-i-like/">&lt;p&gt;I like computers, and along them I like programs made for computers, here&#x27;s a few of them.&lt;&#x2F;p&gt;
&lt;h2&gt;Websites I like&lt;&#x2F;h2&gt;&lt;div&gt;in no particular order&lt;&#x2F;div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;digdeeper.rodeo&#x2F;&quot;&gt;digdeeper&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.complete.org&quot;&gt;complete.org&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;250kb.club&#x2F;&quot;&gt;250kb.club&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;http:&#x2F;&#x2F;verisimilitudes.net&#x2F;&quot;&gt;verisimilitudes.net&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;vulonkaaz.zip&#x2F;&quot;&gt;vulonkaaz.zip&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;nadeko.net&#x2F;&quot;&gt;nadeko.net&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;temp.sh&quot;&gt;temp.sh&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;landchad.net&#x2F;&quot;&gt;landchad.net&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;marginalia-search.com&#x2F;&quot;&gt;marginalia-search.com&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;syscall.sh&#x2F;&quot;&gt;syscall.sh&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;igwiki.lyci.de&#x2F;&quot;&gt;igwiki.lyci.de&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;subrelevant.cc&#x2F;&quot;&gt;&lt;sub&gt;SUB&lt;&#x2F;sub&gt;Relevant&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;I should put a short description on them but most would just be something along the lines of &lt;code&gt;Cool website made by cool person&lt;&#x2F;code&gt; so I&#x27;m kind of hesitant, do check them to find out what they&#x27;re about tho.&lt;&#x2F;p&gt;
&lt;p&gt;More to come soon...&lt;&#x2F;p&gt;
</content>
	</entry>
	<entry xml:lang="en">
		<title>How to make this</title>
		<published>2026-07-18T16:26:54+00:00</published>
		<updated>2026-07-18T16:26:54+00:00</updated>
		<author><name>????</name></author>
		<summary type="html">I should probably do something about the default description too</summary>
		<content type="html" xml:base="https://subrelevant.cc/blog/how-does-this-work/">&lt;p&gt;I&#x27;ll write here how I made the website itself, which is probably a good first post. Also I am certainly going to forget how to do it if I don&#x27;t write it somewhere.&lt;&#x2F;p&gt;
&lt;p&gt;Since this is the fist (real) post, it means the site isn&#x27;t &lt;mark title=&quot;Well, I doubt it&#x27;ll ever be &amp;quot;done&amp;quot;, but I haven&#x27;t even finished the 1% as I&#x27;m writing this&quot;&gt;quite done&lt;&#x2F;mark&gt;, this post will probably change often to reflect that.&lt;&#x2F;p&gt;


&lt;img src=&quot;&amp;#x2F;images&amp;#x2F;diagram.png&quot; alt=&quot;&quot; class=&quot;right&quot;&gt;



&lt;p&gt;Now this isn&#x27;t going to be 1:1 to my actual website, since my server topology looks kinda like the red path on the image on the right.&lt;&#x2F;p&gt;
&lt;p&gt;I do this because I already had a git server on the intermediate server, but I didn&#x27;t really want to host from there, so I got instead another server that will just retrieve every so often the already built website and handle the rest on it&#x27;s side, I do not recommend doing this unless you already have 2 servers laying around, otherwise you&#x27;re just adding complexity for no real benefit.&lt;&#x2F;p&gt;
&lt;p&gt;With that in mind, this guide will assume the much simpler topology of simply having your git repository in the same place as your actual server, that is, following the green arrow.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;getting-ready&quot;&gt;Getting ready&lt;&#x2F;h2&gt;
&lt;p&gt;First step would be installing &lt;strong&gt;&lt;code&gt;git&lt;&#x2F;code&gt;&lt;&#x2F;strong&gt;, &lt;strong&gt;&lt;code&gt;nginx&lt;&#x2F;code&gt;&lt;&#x2F;strong&gt;, and &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.getzola.org&#x2F;&quot;&gt;Zola&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #BFBDB6; background-color: #0D1017;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59C2FF;&quot;&gt;sudo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt; apt-get install git nginx&lt;&#x2F;span&gt;&lt;span style=&quot;color: #5A6673;font-style: italic;&quot;&gt;		# Debians&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59C2FF;&quot;&gt;sudo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt; xbps-install&lt;&#x2F;span&gt;&lt;span style=&quot;color: #95E6CB;&quot;&gt; -S&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt; git nginx&lt;&#x2F;span&gt;&lt;span style=&quot;color: #5A6673;font-style: italic;&quot;&gt;		# Void Linux&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59C2FF;&quot;&gt;cargo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt; install&lt;&#x2F;span&gt;&lt;span style=&quot;color: #95E6CB;&quot;&gt; --locked --git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt; https:&#x2F;&#x2F;github.com&#x2F;getzola&#x2F;zola&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;!-- no one must know I am actually using the apache that came with the vps instead of nginx --&gt;
&lt;p&gt;if you&#x27;re in Void you can just install zola from xbps, otherwise leave zola building from source in the &lt;mark title=&quot;Use tmux so if you get disconnected you don&#x27;t have start all over again&quot;&gt;background&lt;&#x2F;mark&gt;, be warned it&#x27;s going to take a long time.&lt;&#x2F;p&gt;
&lt;p&gt;don&#x27;t install it as flatpak&#x2F;snap, you might have problems later.&lt;&#x2F;p&gt;
&lt;p&gt;Now we want to create the main repo in the server, for that we will first isolate it into a separate git user, and make it reachable over ssh.&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #BFBDB6; background-color: #0D1017;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59C2FF;&quot;&gt;sudo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt; useradd&lt;&#x2F;span&gt;&lt;span style=&quot;color: #95E6CB;&quot;&gt; -m -s&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt; &#x2F;bin&#x2F;bash git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #95E6CB;&quot;&gt; -d&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt; &#x2F;home&#x2F;git&#x2F;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59C2FF;&quot;&gt;sudo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt; mkdir &#x2F;home&#x2F;git&#x2F;.ssh&#x2F;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59C2FF;&quot;&gt;sudo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt; chmod&lt;&#x2F;span&gt;&lt;span style=&quot;color: #D2A6FF;&quot;&gt; 700&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt; &#x2F;home&#x2F;git&#x2F;.ssh&#x2F;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59C2FF;&quot;&gt;sudo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt; chown&lt;&#x2F;span&gt;&lt;span style=&quot;color: #95E6CB;&quot;&gt; -R&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt; git:git &#x2F;home&#x2F;git&#x2F;.ssh&#x2F;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Now on each &lt;mark title=&quot;Computers where we are going to edit the website using git&quot;&gt;Client&lt;&#x2F;mark&gt; we generate a key.&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #BFBDB6; background-color: #0D1017;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59C2FF;&quot;&gt;ssh-keygen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #95E6CB;&quot;&gt; -t&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt; ed25519&lt;&#x2F;span&gt;&lt;span style=&quot;color: #95E6CB;&quot;&gt; -N&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt; &amp;quot;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #95E6CB;&quot;&gt; -f&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt; ~&#x2F;.ssh&#x2F;gitkey&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59C2FF;&quot;&gt;chmod&lt;&#x2F;span&gt;&lt;span style=&quot;color: #D2A6FF;&quot;&gt; 644&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt; ~&#x2F;.ssh&#x2F;gitkey.pub&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59C2FF;&quot;&gt;chmod&lt;&#x2F;span&gt;&lt;span style=&quot;color: #D2A6FF;&quot;&gt; 600&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt; ~&#x2F;.ssh&#x2F;gitkey&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59C2FF;&quot;&gt;cat&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt; ~&#x2F;.ssh&#x2F;gitkey.pub&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Note down whatever &lt;code&gt;cat&lt;&#x2F;code&gt; prints, it should look something like this:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo no&quot;&gt;
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDyRriWwOC9c+3MuLoJ2IKeoYQv86ApxqaPJ3&#x2F;t+UIK&#x2F; youruser@yourcomputer
&lt;&#x2F;pre&gt;
&lt;p&gt;Run the above on each client you want to give access, and note down each of the &lt;code&gt;cat gitkey.pub&lt;&#x2F;code&gt; outputs, those are your public keys.&lt;&#x2F;p&gt;
&lt;p&gt;Now to give the clients access to the git user we will add the public keys into the authorized_keys file on the server.&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #BFBDB6; background-color: #0D1017;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59C2FF;&quot;&gt;sudo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt; su - git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #5A6673;font-style: italic;&quot;&gt;		#to log in into the git user manually&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59C2FF;&quot;&gt;nano&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt; &#x2F;home&#x2F;git&#x2F;.ssh&#x2F;authorized_keys&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Now paste all public keys at the end of the file, one per line.&lt;&#x2F;p&gt;
&lt;p&gt;after that is done you should be able to run this from any configured client.&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo no&quot;&gt;
ssh git@111.111.111.111
&lt;&#x2F;pre&gt;
&lt;p&gt;with that bunch of 1s being your server IP, After executing that you should be in &lt;code&gt;git&lt;&#x2F;code&gt;&#x27;s shell.&lt;&#x2F;p&gt;
&lt;p&gt;Now that we have connectivity we want to actually host the git repo, to do that we need to create a new raw git repo using this (you can change &quot;website&quot; for whatever you want but make sure it ends with .git), on the server run:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo no&quot;&gt;
git init --bare website.git
&lt;&#x2F;pre&gt;
&lt;p&gt;If you managed to do all of that so far great, you should be able to clone your repo with a command I don&#x27;t remember right now, but we don&#x27;t want that, that&#x27;s too much of a pain in the butt, what we want is to be able to clone with a command that you can actually remember, we want to be able to do this:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo no&quot;&gt;
git clone ServerGit:website.git
&lt;&#x2F;pre&gt;
&lt;p&gt;Simple isn&#x27;t it?&lt;&#x2F;p&gt;
&lt;p&gt;Not only the website repo, your server is already a fully fledged git server, you can store all your projects there, all you need to do is init them like I did above.&lt;&#x2F;p&gt;
&lt;p&gt;Well to do that we need to edit each Client ssh config, so let&#x27;s do just that, first open the config file.&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo no&quot;&gt;
nano ~&#x2F;.ssh&#x2F;config
&lt;&#x2F;pre&gt;
&lt;p&gt;and paste the following at the end, replace the 111. with your actual server IP.&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo no&quot;&gt;
Host ServerGit
	HostName 111.111.111.111
	User git
	IdentityFile ~&#x2F;.ssh&#x2F;gitkey
	IdentitiesOnly yes
&lt;&#x2F;pre&gt;
&lt;p&gt;If everything went right you shoud now be able to do all the git commands you know and love and it&#x27;ll sychronize with the repo on the server.&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo no&quot;&gt;
git clone ServerGit:website.git
# edit as you wish
git commit -m &quot;any commit&quot;
git push
&lt;&#x2F;pre&gt;
&lt;p&gt;in addition to that, we can now ssh into the server with&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo no&quot;&gt;
ssh ServerGit
&lt;&#x2F;pre&gt;
&lt;p&gt;And there you have it, step 1 which is by far the longest is done, hopefully by now zola finished installing and you can start right away step 2;&lt;&#x2F;p&gt;
&lt;div style=&quot;min-height:1rem;background:repeating-linear-gradient(45deg,#fc1 0 1em,#000 1em 2em)&quot;&gt;&lt;&#x2F;div&gt;
&lt;h2 id=&quot;building-wip&quot;&gt;Building (WIP...)&lt;&#x2F;h2&gt;
&lt;!-- TODO: maybe another post--&gt;
&lt;p&gt;&lt;sub&gt;if you can see this on the web that means I got lazy documenting what comes next&lt;&#x2F;sub&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Now that we have git up and running on the server, we need to rebuild the website after every &lt;code&gt;git push&lt;&#x2F;code&gt;, to do that we need to add a hook in website.git&#x2F;hooks, ssh into the git user and create the hook.&lt;&#x2F;p&gt;
&lt;p&gt;The hook &lt;code&gt;post-receive&lt;&#x2F;code&gt; is simply a bash script that runs every time the server recieves an update, we&#x27;ll tell git to tell zola to build from the source code, there is a problem however, we don&#x27;t have the code just yet, the repo we created on the server only has the git internals, so we need to tell it to create a local git clone first.&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo no&quot;&gt;
nano ~&#x2F;website.git&#x2F;hooks&#x2F;post-receive
chmod +x ~&#x2F;website.git&#x2F;hooks&#x2F;post-receive
&lt;&#x2F;pre&gt;
&lt;p&gt;Then put in the nano a small bash script that automatically, checkouts the local git clone, then builds the webpage every time the code gets updated.&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #BFBDB6; background-color: #0D1017;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #5A6673;font-style: italic;&quot;&gt;#!&#x2F;bin&#x2F;bash&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;REPO&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F29668;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt;&amp;quot;&#x2F;home&#x2F;git&#x2F;website.git&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;SRC&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F29668;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt;&amp;quot;&#x2F;home&#x2F;git&#x2F;website&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;OUT&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F29668;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt;&amp;quot;&#x2F;var&#x2F;www&#x2F;yourwebsite.com&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #5A6673;font-style: italic;&quot;&gt;#Change these if you want a different path&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;if&lt;&#x2F;span&gt;&lt;span&gt; [&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F29668;&quot;&gt; ! -d&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;$SRC&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt;&#x2F;.git&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt; ]&lt;&#x2F;span&gt;&lt;span style=&quot;color: #BFBDB6B3;&quot;&gt;;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt; then&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59C2FF;&quot;&gt;	git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt; clone &amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;$REPO&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt;&amp;quot; &amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;$SRC&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;fi&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59C2FF;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #95E6CB;&quot;&gt; --git-dir=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;$REPO&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #95E6CB;&quot;&gt; --work-tree=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;$SRC&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt;&amp;quot; checkout&lt;&#x2F;span&gt;&lt;span style=&quot;color: #95E6CB;&quot;&gt; -f&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt; main&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F07178;&quot;&gt;cd&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;$SRC&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;TMP_OUT&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F29668;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span&gt;$(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59C2FF;&quot;&gt;mktemp&lt;&#x2F;span&gt;&lt;span style=&quot;color: #95E6CB;&quot;&gt; -d&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59C2FF;&quot;&gt;zola&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt; build&lt;&#x2F;span&gt;&lt;span style=&quot;color: #95E6CB;&quot;&gt; --output-dir&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;$TMP_OUT&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #95E6CB;&quot;&gt; --force&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59C2FF;&quot;&gt;rsync&lt;&#x2F;span&gt;&lt;span style=&quot;color: #95E6CB;&quot;&gt; -r --delete&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;$TMP_OUT&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt;&amp;quot;&#x2F; &amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;$OUT&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt;&amp;quot;&#x2F;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59C2FF;&quot;&gt;rm&lt;&#x2F;span&gt;&lt;span style=&quot;color: #95E6CB;&quot;&gt; -rf&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;$TMP_OUT&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;You&#x27;ll notice I am instructing zola to build into a temp dir first and then syncing that to the website folder, that is because zola can get finicky with where it outputs.&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #BFBDB6; background-color: #0D1017;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;server {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;	listen 80;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;	server_name website.com;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;	root &#x2F;var&#x2F;www&#x2F;website.com;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;	index index.html;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;br&#x2F;&gt;
&lt;aside&gt;
&lt;details&gt;
&lt;summary&gt;&lt;a&gt;Here&#x27;s&lt;&#x2F;a&gt; a little script to add new blog entries&lt;&#x2F;summary&gt;
&lt;sub&gt;replace &lt;code&gt;path&lt;&#x2F;code&gt; with wherever you want to place them&lt;&#x2F;sub&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #BFBDB6; background-color: #0D1017;&quot;&gt;&lt;code data-lang=&quot;python&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;import&lt;&#x2F;span&gt;&lt;span&gt; re&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;import&lt;&#x2F;span&gt;&lt;span&gt; os&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;import&lt;&#x2F;span&gt;&lt;span&gt; subprocess&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;import&lt;&#x2F;span&gt;&lt;span&gt; unicodedata&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;from&lt;&#x2F;span&gt;&lt;span&gt; datetime&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt; import&lt;&#x2F;span&gt;&lt;span&gt; datetime&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;path&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F29668;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt; &amp;quot;&#x2F;home&#x2F;user&#x2F;webpage&#x2F;content&#x2F;blog&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #95E6CB;&quot;&gt;{name}&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt;.md&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;def&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FFB454;&quot;&gt; slug&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #D2A6FF;&quot;&gt;s&lt;&#x2F;span&gt;&lt;span style=&quot;color: #BFBDB6B3;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #39BAE6;&quot;&gt;str&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #BFBDB6B3;&quot;&gt;-&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #39BAE6;&quot;&gt;str&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt; return&lt;&#x2F;span&gt;&lt;span&gt; re&lt;&#x2F;span&gt;&lt;span style=&quot;color: #BFBDB6B3;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FFB454;&quot;&gt;sub&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;r&lt;&#x2F;span&gt;&lt;span style=&quot;color: #95E6CB;&quot;&gt;&amp;quot;-&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F29668;&quot;&gt;{2,}&lt;&#x2F;span&gt;&lt;span style=&quot;color: #95E6CB;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #BFBDB6B3;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt;&amp;quot;-&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #BFBDB6B3;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt;re&lt;&#x2F;span&gt;&lt;span style=&quot;color: #BFBDB6B3;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FFB454;&quot;&gt;sub&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;r&lt;&#x2F;span&gt;&lt;span style=&quot;color: #95E6CB;&quot;&gt;&amp;quot;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F29668;&quot;&gt;^&lt;&#x2F;span&gt;&lt;span style=&quot;color: #95E6CB;&quot;&gt;a-z0-9]&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F29668;&quot;&gt;+&lt;&#x2F;span&gt;&lt;span style=&quot;color: #95E6CB;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #BFBDB6B3;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt;&amp;quot;-&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #BFBDB6B3;&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;	unicodedata&lt;&#x2F;span&gt;&lt;span style=&quot;color: #BFBDB6B3;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FFB454;&quot;&gt;normalize&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt;&amp;quot;NFKD&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #BFBDB6B3;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt;s)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #BFBDB6B3;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FFB454;&quot;&gt;encode&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt;&amp;quot;ascii&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #BFBDB6B3;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt;&amp;quot;ignore&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #BFBDB6B3;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FFB454;&quot;&gt;decode&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt;&amp;quot;ascii&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #BFBDB6B3;&quot;&gt;	.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FFB454;&quot;&gt;lower&lt;&#x2F;span&gt;&lt;span&gt;()))&lt;&#x2F;span&gt;&lt;span style=&quot;color: #BFBDB6B3;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FFB454;&quot;&gt;strip&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt;&amp;quot;-&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;def&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FFB454;&quot;&gt; zen&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #D2A6FF;&quot;&gt;type&lt;&#x2F;span&gt;&lt;span style=&quot;color: #BFBDB6B3;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #39BAE6;&quot;&gt;str&lt;&#x2F;span&gt;&lt;span style=&quot;color: #BFBDB6B3;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #D2A6FF;&quot;&gt;title&lt;&#x2F;span&gt;&lt;span style=&quot;color: #BFBDB6B3;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #39BAE6;&quot;&gt;str&lt;&#x2F;span&gt;&lt;span style=&quot;color: #BFBDB6B3;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #D2A6FF;&quot;&gt;text&lt;&#x2F;span&gt;&lt;span style=&quot;color: #BFBDB6B3;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #39BAE6;&quot;&gt;str&lt;&#x2F;span&gt;&lt;span&gt;):&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;	rr&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F29668;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; subprocess&lt;&#x2F;span&gt;&lt;span style=&quot;color: #BFBDB6B3;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FFB454;&quot;&gt;run&lt;&#x2F;span&gt;&lt;span&gt;([&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt;&amp;quot;zenity&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #BFBDB6B3;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;f&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt;&amp;quot;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: #95E6CB;&quot;&gt;{&lt;&#x2F;span&gt;&lt;span style=&quot;color: #39BAE6;&quot;&gt;type&lt;&#x2F;span&gt;&lt;span style=&quot;color: #95E6CB;&quot;&gt;}&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #BFBDB6B3;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt;&amp;quot;--title&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #BFBDB6B3;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt;title&lt;&#x2F;span&gt;&lt;span style=&quot;color: #BFBDB6B3;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt;&amp;quot;--text&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #BFBDB6B3;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt;text]&lt;&#x2F;span&gt;&lt;span style=&quot;color: #BFBDB6B3;&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;		capture_output&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F29668;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #D2A6FF;&quot;&gt;True&lt;&#x2F;span&gt;&lt;span style=&quot;color: #BFBDB6B3;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt;text&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F29668;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #D2A6FF;&quot;&gt;True&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;	if&lt;&#x2F;span&gt;&lt;span&gt; rr&lt;&#x2F;span&gt;&lt;span style=&quot;color: #BFBDB6B3;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;returncode&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F29668;&quot;&gt;!=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #D2A6FF;&quot;&gt;0&lt;&#x2F;span&gt;&lt;span style=&quot;color: #BFBDB6B3;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F07178;&quot;&gt; quit&lt;&#x2F;span&gt;&lt;span&gt;(rr&lt;&#x2F;span&gt;&lt;span style=&quot;color: #BFBDB6B3;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;returncode)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;	return&lt;&#x2F;span&gt;&lt;span&gt; rr&lt;&#x2F;span&gt;&lt;span style=&quot;color: #BFBDB6B3;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;stdout&lt;&#x2F;span&gt;&lt;span style=&quot;color: #BFBDB6B3;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FFB454;&quot;&gt;strip&lt;&#x2F;span&gt;&lt;span&gt;()&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;if&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F29668;&quot;&gt; not&lt;&#x2F;span&gt;&lt;span&gt; (title&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F29668;&quot;&gt;:=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FFB454;&quot;&gt;zen&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt;&amp;quot;entry&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #BFBDB6B3;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt;&amp;quot;New entry&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #BFBDB6B3;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt;&amp;quot;Title:&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;))&lt;&#x2F;span&gt;&lt;span style=&quot;color: #BFBDB6B3;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F07178;&quot;&gt; quit&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #D2A6FF;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;if&lt;&#x2F;span&gt;&lt;span&gt; os&lt;&#x2F;span&gt;&lt;span style=&quot;color: #BFBDB6B3;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;path&lt;&#x2F;span&gt;&lt;span style=&quot;color: #BFBDB6B3;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FFB454;&quot;&gt;exists&lt;&#x2F;span&gt;&lt;span&gt;(fpath&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F29668;&quot;&gt;:=&lt;&#x2F;span&gt;&lt;span&gt;path&lt;&#x2F;span&gt;&lt;span style=&quot;color: #BFBDB6B3;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FFB454;&quot;&gt;format&lt;&#x2F;span&gt;&lt;span&gt;(name&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F29668;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FFB454;&quot;&gt;slug&lt;&#x2F;span&gt;&lt;span&gt;(title)))&lt;&#x2F;span&gt;&lt;span style=&quot;color: #BFBDB6B3;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FFB454;&quot;&gt;	zen&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt;&amp;quot;error&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #BFBDB6B3;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt;&amp;quot;File exists&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #BFBDB6B3;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;f&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt;&amp;quot;File &lt;&#x2F;span&gt;&lt;span style=&quot;color: #95E6CB;&quot;&gt;{&lt;&#x2F;span&gt;&lt;span&gt;fpath&lt;&#x2F;span&gt;&lt;span style=&quot;color: #BFBDB6B3;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FFB454;&quot;&gt;rsplit&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt;&amp;quot;&#x2F;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #BFBDB6B3;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #D2A6FF;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span&gt;)[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F29668;&quot;&gt;-&lt;&#x2F;span&gt;&lt;span style=&quot;color: #D2A6FF;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span&gt;]&lt;&#x2F;span&gt;&lt;span style=&quot;color: #95E6CB;&quot;&gt;}&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt; already exists&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F07178;&quot;&gt;	quit&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #D2A6FF;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;with&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F07178;&quot;&gt; open&lt;&#x2F;span&gt;&lt;span&gt;(fpath&lt;&#x2F;span&gt;&lt;span style=&quot;color: #BFBDB6B3;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt;&amp;quot;w&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt; as&lt;&#x2F;span&gt;&lt;span&gt; N&lt;&#x2F;span&gt;&lt;span style=&quot;color: #BFBDB6B3;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span&gt; N&lt;&#x2F;span&gt;&lt;span style=&quot;color: #BFBDB6B3;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FFB454;&quot;&gt;write&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;f&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt;&amp;quot;&amp;quot;&amp;quot;+++&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt;title = &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #95E6CB;&quot;&gt;{&lt;&#x2F;span&gt;&lt;span&gt;title&lt;&#x2F;span&gt;&lt;span style=&quot;color: #95E6CB;&quot;&gt;}&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt;draft = true&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt;description = &amp;quot;____________________&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt;weight = 10&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt;date = &lt;&#x2F;span&gt;&lt;span style=&quot;color: #95E6CB;&quot;&gt;{&lt;&#x2F;span&gt;&lt;span&gt;datetime&lt;&#x2F;span&gt;&lt;span style=&quot;color: #BFBDB6B3;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FFB454;&quot;&gt;today&lt;&#x2F;span&gt;&lt;span&gt;()&lt;&#x2F;span&gt;&lt;span style=&quot;color: #BFBDB6B3;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FFB454;&quot;&gt;isoformat&lt;&#x2F;span&gt;&lt;span&gt;(timespec&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F29668;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt;&amp;quot;seconds&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #95E6CB;&quot;&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt;[taxonomies]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt;tags = [&amp;quot;unsorted&amp;quot;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt;+++&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt;&amp;quot;&amp;quot;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;&#x2F;details&gt;
&lt;&#x2F;aside&gt;
</content>
	</entry>
	<entry xml:lang="en">
		<title>Hello World!</title>
		<published>2026-07-18T00:07:39+00:00</published>
		<updated>2026-07-18T00:07:39+00:00</updated>
		<author><name>????</name></author>
		<summary type="html">first post</summary>
		<content type="html" xml:base="https://subrelevant.cc/blog/hello-world/">&lt;h1 id=&quot;does-this-work&quot;&gt;Does this work?&lt;&#x2F;h1&gt;
&lt;p&gt;What to write what to write...&lt;&#x2F;p&gt;
</content>
	</entry>
</feed>