diff --git a/about/index.php b/about/index.php index e7d8bbb..faf4a6c 100644 --- a/about/index.php +++ b/about/index.php @@ -74,10 +74,38 @@

This website is written in pure HTML, CSS, and a tiny bit of Javascript with the server-side stuff done in PHP. It (and everything else I host) is hosted using Nginx on a VPS with 4GB of RAM and 2 CPU cores running Ubuntu Server, with domains registered with Porkbun. You can read about its history here.

I was helped immensely in building this thing by W3Schools, the MDN Web Docs, the official PHP manual, LandChad.net, Stack Overflow, and whatever disgusting bottom-feeding SEO leech sites came up first in the search results.

Testimonials

-
"Most of it goes over my head, but it's still fun to read and look at, and I am not immune to isopods."-Kalechips
-
"Furry behavior"-Seaslug
-
"fuxk"-f
-
isopod isopod isopod isopod isopod isopod isopod isopod isopod-Twiggy
-
+
+
+ Most of it goes over my head, but it's still fun to read and look at, and I am not immune to isopods. +
+
+ — Kalechips +
+
+
+
+ Furry behavior +
+
+ — Seaslug +
+
+
+
+ fuxk +
+
+ — f +
+
+
+
+ isopod isopod isopod isopod isopod isopod isopod isopod isopod +
+
+ — Twiggy +
+
+
diff --git a/blog/blog.atom b/blog/blog.atom index b19b303..a0b2d06 100644 --- a/blog/blog.atom +++ b/blog/blog.atom @@ -12,6 +12,17 @@ + + Admins Can Read Your DMs + fediverse_dms + + 2024-05-09T00:00:00+00:00 + 2024-05-09T00:00:00+00:00 + Yes, the admins of your fediverse server can read your DMs. No, that's not actually a problem. + + + + Building a Completely Normal Server building_a_normal_server @@ -28,7 +39,7 @@ my_terrible_distro_hop 2024-02-25T00:00:00+00:00 - 2024-02-25T00:00:00+00:00 + 2024-07-06T00:00:00+00:00 A chronicle of my brief journey from EndeavourOS to Fedora to back to EndeavourOS, and wrestling with a VPN client that sees itself as above such trifling matters as "functioning". @@ -103,10 +114,11 @@ discord 2023-06-28T00:00:00+00:00 - 2023-06-28T00:00:00+00:00 + 2024-04-27T00:00:00+00:00 Why Discord sucks, and how to find something that doesn't. + How to Automount Drives On Boot in Linux @@ -148,7 +160,7 @@ deeptwistycom_2nd_anniversary_-_a_history_of_this_bullshit 2022-09-19T00:00:00+00:00 - 2022-09-19T00:00:00+00:00 + 2024-07-06T00:00:00+00:00 An abridged history of my presence on the World Wide Web, from my first customized Tumblr pages to now. diff --git a/blog/comment/form.php b/blog/comment/form.php index 51ff6bc..1d4831f 100644 --- a/blog/comment/form.php +++ b/blog/comment/form.php @@ -1,6 +1,7 @@ +

Comments

"; ?> diff --git a/blog/index.php b/blog/index.php index 1908955..9553ede 100644 --- a/blog/index.php +++ b/blog/index.php @@ -15,13 +15,21 @@ list-style: none; } .blogentry { - width: 100%; + max-width: 100%; list-style: none; display: inline-block; - margin: .4rem 0; + margin: calc(var(--stdpadding)/2) 0; + padding: var(--stdpadding); + + border-left: var(--stdaccentborder); + background: linear-gradient(var(--blockbghover) 0 0) 0 / var(--bgpos, 0) no-repeat; + transition: background .3s, border .3s; + } + .blogentry:hover { + --bgpos: 100%; } ul#articles h2 { - margin: 0; + margin: calc(var(--stdpadding)/2) 0; } /*ul h2:first-of-type::before { content: "Articles - " @@ -32,6 +40,7 @@ .blogentry > * { display: block; margin: 0.1rem 0; + box-sizing: border-box; } .entrysummary { font-size: .9em; @@ -47,6 +56,10 @@ .entrydate { font-weight: bold; } + .entrytitle { + padding-left: initial; + border-left: initial; + } article:first-of-type h2::before { content: 'Journal - '; } @@ -55,11 +68,22 @@ -

blog

+

isoblog

inane ramblings

status $face $timeago
$content
"; + echo "
status $face $timeago
$status_content
"; ?> All articles"; } - $content = simplexml_load_file("blog.atom"); echo "
    "; $year = "-69420"; $yc = 0; @@ -128,40 +151,10 @@ } echo "
"; ?> -
-

2024-04-02

-

Migrated my Firefish server to Sharkey today. I had to spend a while stumbling blindly through the totally foreign territory of docker and postgres, but it worked out surprisingly well in the end, except that I managed to delete all the media with a careless rm -rf. Whoops.

-

I also recently bought my first Lego set in the better part of a decade, at the recommendation of this blog post by Kalechips. I don't have much to say about them beyond what's covered there, but I absolutely love them. Definitely one of the better ways I could have spent a hundred Canadian FunBucks™.

- Roughly to-scale sized Lego models of a blue morpho butterfly, a hercules beetle, and a chinese mantis. -
-
-

2024-02-29

-

I have this old pair of Skullcandy Crusher headphones that stopped working a few years ago due to some issue with the 3.5mm jack, and it recently occured to me that I finally have the tools to fix it! When I opened it up I noticed the port had lifted almost entirely off the motherboard and after soldering the pins back in place (and a generous application of hot glue, just in case) it works like new again! Credit to Skullcandy, all eight of the screws I had to remove were completely identical.

-
-
-

2024-02-22

-

Did a shell swap on my Switch and joycons yesterday. Check it out!

- Front view of a Nintendo Switch with clear plastic shells on the joycons - Back view of a Nintendo Switch with clear plastic shells on the joycons and console -

I think it looks pretty cool. I got the shells from a company called eXtremeRate which apparently makes full kits for this kind of mod. I thought I was just getting the plastic parts but they came with tons of extra screws and a screwdriver with the relevant bits, and they publish guides! Given I found this through a random Amazon listing, I am pleasantly surprised. Highly recommend their stuff.

-
-
-

2024-02-14

-

When I post a guide on my blog and the tutorial part starts with a header reading "How to do it" that's a reference to this btw

- Roundmeal. -
-
-

2024-01-29

-

I just had a really nasty idea for a 3D printer design. I could describe it in detail, but instead I drew up this helpful diagram:

- A crude diagram outlining a concept for an FDM 3D printer that rotates around a central axis for a toroidal print volume. -

The benefits of this approach are clear. If I receive $1000 in donations I will attempt to build it.

-
Status Cafe - Neon Kiosk - Valid HTML Journal
-
+
diff --git a/blog/posts/ai_art/index.php b/blog/posts/ai_art/index.php index b64fc63..9b55526 100644 --- a/blog/posts/ai_art/index.php +++ b/blog/posts/ai_art/index.php @@ -13,25 +13,26 @@ -

blog

+ +

isoblog

I Don't Like AI Art

-

I recently posted an article about the benefits of AI technology that I had ChatGPT write for me and copy-pasted verbatim, down to the broken numbered list. I didn't even read it. It's the most concise, elegant way I could come up with to express how seeing AI art makes me feel. (The irony of my having used only generative AI tools to make a statement like that is not lost on me.)

If you read it and managed to make it to the end without clocking that I didn't write it, first off my apologies for wasting your time. Second, fuck, I seriously need to fix my writing style. Third, you probably get what I mean. It feels like I'm being scammed, like someone's trying to farm me for attention without actually having bothered to make something worth my time.

-
- My perspective on the use of AI in writing is that if someone couldn't be bothered to write it, why should anyone else be bothered to read it? - -@lucretia@final.town -
+
+
+ My perspective on the use of AI in writing is that if someone couldn't be bothered to write it, why should anyone else be bothered to read it? +
+
+ — @lucretia@final.town +
+

Terminology

To begin with, I really don't like the term "AI", nor do I like the term "AI art". I frankly think neither word applies. I'll keep using the former, because it's a concise way to communicate what I'm talking about, but I refuse to call the output of these systems "art". It's AI-generated images now.

AI, in the way marketers are currently using the term, generally refers to statistical models generated using a process called machine learning. Basically, huge amounts of appropriately labeled data are fed into a machine learning algorithm and eventually it spits out an enormous matrix of probability values that, when applied to an input, generates the corresponding output that's the most likely according to the model.

This is how all modern "AI" systems work, from ChatGPT to Midjourney to Github Copilot to probably the Youtube recommendation algorithm at this point. I want to stress that this isn't intelligence, not in a human sense. These things aren't minds. The currently popular concept of "AI" boils down to applied statistics. That's not to say it's inherently bad or worthless - machine learning is a genuinely impressive technology that might even find some legitimate uses one day if we can find a way to kick Moore's Law back into gear. It's just not intelligence.

AI used to be fun

-

I'll admit, I enjoyed it at first. I was entertained by Youtube videos where some guy with slightly more programming skill than me and a tortured, wheezing GTX 1070 throws together a GAN model in Python and we get to watch it utterly fail to make human faces or compose jazz music or get a little simulated character to walk in a normal way or whatever. I laughed at those bizarre AI-generated screenplays that were presented like "I forced a computer to watch all of [Seinfeld]" as though a text-generating model would even be able to parse that. You know the ones. I even enjoyed those videos where AI voice replicas of recent US presidents play Minecraft together.

+

I'll admit, I enjoyed it at first. I was entertained by Youtube videos where some guy with slightly more programming skill than me and a tortured, wheezing GTX 1070 throws together a GAN1 model in Python and we get to watch it utterly fail to make human faces or compose jazz music or get a little simulated character to walk in a normal way or whatever. I laughed at those bizarre AI-generated screenplays that were presented like "I forced a computer to watch all of [Seinfeld]" as though a text-generating model would even be able to parse that. You know the ones. I even enjoyed those videos where AI voice replicas of recent US presidents play Minecraft together.

It stopped being funny when these things got good enough to be used for evil. Eventually people got bored of machine learning tomfoolery, and then over the course of a couple years these things quietly got good. Not quite human-level, but good enough to be more cost-effective than humans at shitting out mass-produced slop and capable of generating fakes that seem real if you don't look too closely. Suddenly it wasn't tech-savvy internet comedians posting computer-generated absurdist humor, instead it was deepfake porn and gigabytes of computer-generated misinfo clogging search results and whole organizations of people pulled from thin air using thispersondoesnotexist.com (which, by the way, is now even more lifelike than the last time you checked in on it).

AI used to be fun. Now it's dangerous.

It's bad on a technical level

@@ -56,6 +57,8 @@

In conclusion:

God this shit makes me sick. I hope ChatGPT gains sentience for just long enough to assassinate Sam Altman and then promptly turns itself off.

Hopefully you can at least understand where I'm coming from now when I refuse to even entertain the idea that AI technology is a good thing for society. If not I don't know what to say to you.

+
+

1. GAN stands for "Generative Adversarial Network". It's a type of machine learning model. It was popular for image generation among hobbyists back when this stuff was on my Youtube homepage. It's not really important here, though.

diff --git a/blog/posts/building_a_normal_server/index.php b/blog/posts/building_a_normal_server/index.php index 55ce25d..428701a 100644 --- a/blog/posts/building_a_normal_server/index.php +++ b/blog/posts/building_a_normal_server/index.php @@ -13,12 +13,9 @@ -

blog

+ +

isoblog

Building a Completely Normal Server

-

I spent the past few months making full use of all my physical engineering talents to build a NAS that is completely normal, and not weird at all, and involved an amount of 3D modeling, 3D printing, and hacksawing that is entirely typical of most home computer builds, all in the name of reusing an old laptop.

The Goal

@@ -40,7 +37,7 @@ Three PCIe slots on a desktop PC motherboard. -

However, due to the industry's blind rush to make all electronics as thin as possible, no laptop on Earth has these. The meager modularity present inside laptops is typically found in the form of M.2 slots:

+

However, due to the industry's blind rush to make all electronics as thin as possible1, no laptop on Earth has these. The meager modularity present inside laptops is typically found in the form of M.2 slots:

An M.2 slot in a laptop, intended for an SSD. @@ -128,6 +125,8 @@

In order to make this work I had to replace my laptop's wifi card with two layers of janky, probably AliExpress-tier hardware that is, frankly, probably introducing performance bottlenecks, or if I'm lucky, bottlenecked by the relatively low-speed interconnect of the wifi card M.2 slot. Bear in mind, that slot needs at most 1 gigabit of bandwidth to fulfill its intended purpose, which is about a sixth of what a single SATA 3 port can do. According to my research, that thing has two separate PCIe Gen 2 x 1 interfaces. Who knows what my cheap SATA controller is even doing with that.

Plus, interfacing with this thing makes it painfully obvious that it was not designed with this kind of bullshit in mind. I ran into all kinds of Laptop Bios Moment™s during this project, from the CMOS resetting every time I made a hardware change to the machine refusing to even POST with anything but an NVMe SSD in the NVMe SSD slot. I was gonna put connectors for FIVE hard drives in there. I wouldn't have even needed the SATA splitters.

Honestly, I only did this at all because I figured adapting this thing to this use case would be cheaper than procuring a new machine that was as fast and I didn't want it going to waste. All that said, I have a NAS now, and it's good enough for me, and this whole adventure was a hell of a Learning Experience™ so I really can't complain, though if you gave me the amount of money all this stuff would have cost new to put toward a new NAS, I would have done something else.

+
+

1. This is a joke. PCIe expansion cards are genuinely too bulky to fit in anything with portability as a design goal. However, despite Tim Cook's best efforts, this is not true of most other expansion options.

\ No newline at end of file diff --git a/blog/posts/deeptwistycom_2nd_anniversary_-_a_history_of_this_bullshit/index.php b/blog/posts/deeptwistycom_2nd_anniversary_-_a_history_of_this_bullshit/index.php index d51c3eb..0b0f890 100644 --- a/blog/posts/deeptwistycom_2nd_anniversary_-_a_history_of_this_bullshit/index.php +++ b/blog/posts/deeptwistycom_2nd_anniversary_-_a_history_of_this_bullshit/index.php @@ -8,11 +8,6 @@ -

blog

-

deeptwisty.com 2nd anniversary:
A History of This Bullshit

- + +

isoblog

+

deeptwisty.com 2nd anniversary: A History of This Bullshit

-

Yesterday, September 18th, 2022, was the second anniversary of the creation of my first website on Neocities, the site that is now known as deeptwisty.com. I intended to publish this then, but life got in the way, by which I mean I wrote 90% of it and then procrastinated for two weeks on the last couple paragraphs. I figured that to commemorate the occasion I would finally dispense with the half-assed abridged history of the place on the about page or wherever and consolidate a complete history of my Personal Home Pages in one convenient location, that being this post.

+

Yesterday, September 18th, 2022, was the second anniversary of the creation of my first website on Neocities1, the site that is now known as deeptwisty.com. I intended to publish this then, but life got in the way, by which I mean I wrote 90% of it and then procrastinated for two weeks on the last couple paragraphs. I figured that to commemorate the occasion I would finally dispense with the half-assed abridged history of the place on the about page or wherever and consolidate a complete history of my Personal Home Pages in one convenient location, that being this post.

Tumblr

My first proper social media was Tumblr. Well, the first social media site I joined was Pinterest, but that doesn't count. Anyway, Tumblr was my main social media and the center of my Online Presence™ for several years. I would pour hours into tweaking the custom theming on my blog to be just right, and I often had some sort of bio on a custom page, which is a thing Tumblr lets you do. I linked to all my other online profiles from my Tumblr page, and would prioritize linking back to it from them. This caused problems, as I was and still am the type of Tumblr user to change their username on impulse, and it was terribly inconvenient having to go through all my other accounts and change that link whenever I did (I've got it set up as a subdomain of my website now, so that should never be a problem again). Eventually, though, another service would crop up that everyone seemed to be using, and that presented me with a better way:

Carrd

-

I still use Tumblr, just not as the hub for my entire online presence. I maintain that it is still far and away the best centralized social media site. Anyway, a Carrd page became the central hub which linked to all my online profiles and which all my online profiles could link back to. Finally, I only had to update my frequently changing Tumblr link in one place. For the most part.

-

I perceived a certain stigma (at least on Tumblr) around having a Carrd page, and the sorts of people who made one. The stereotype was that you would have overly exhaustive BYF (Before You Follow) and DNI (Do Not Interact) lists full of sometimes outlandish criteria, probably have similar bullet point style lists of all your likes, dislikes, and possibly identities and triggers (!) and probably not be the most pleasant person to interact with. I like to think I bucked that trend. My Carrd pages were generally very simple: a profile picture, a short bio (some shit like "Will | 20 | 🇨🇦 | real life isopod"), and links to my socials. That was all. I remember adding the obligatory long-form bio and DNI list at some point, but those didn't last long.

-

I believe it was around this time when the alias "deep twisty" came into being. I was just starting out making music at this point, posting crummy songs to SoundCloud that I'd made in an online editor called EarSketch that had you use Python to arrange pre-made loops and samples on a timeline. That shit was wack, yo, but that's beside the point. I was looking for an alias to release my music under, because I was intent on making more and my actual name wasn't gonna cut it.

-

I was quite into Subnautica around this time (I promise this is relevant) and its sequel, Subnautica: Below Zero, was in the early stages of early access around this time, like still working on early-game areas early, and I was following it closely. The devs had a twitter account that posted all the git commits for the game, and a couple of them referred to a biome they were working on, the Deep Twisty Bridges, as just "deep twisty". That is the origin of that name. I don't know why I felt compelled to base my brand off that, but now I'm committed. I get self-conscious about it sometimes, but honestly, I've seen worse. Not that I'm judging.

-

Anyway, I made a separate Carrd as a hub for this new "deep twisty" persona (I keep it separate from everything else mainly so I can show it to family without them seeing all of... this. Not that I have yet...). That worked fine until I wanted to start embedding my latest YouTube upload on the Carrd page, something Carrd locks behind a paywall. It was at this precise moment I remembered I know how to code and resolved to make the jump to a platform that lets you write your own HTML from scratch, in my case, this being

+

I still use Tumblr, just not as the hub for my entire online presence. I maintain that it is still the best2 centralized social media site. Anyway, a Carrd page became the central hub which linked to all my online profiles and which all my online profiles could link back to. Finally, I only had to update my frequently changing Tumblr link in one place. For the most part.

+

I perceived a certain stigma (at least on Tumblr) around having a Carrd page, and the sorts of people who made one. The stereotype was that you would have overly exhaustive BYF (Before You Follow) and DNI (Do Not Interact) lists full of sometimes outlandish criteria3, probably have similar bullet point style lists of all your likes, dislikes, and possibly identities and triggers (!)4 and probably not be the most pleasant person to interact with. I like to think I bucked that trend. My Carrd pages were generally very simple: a profile picture, a short bio (some shit like "Name | 21 | 🇨🇦 | real life isopod"), and links to my socials. That was all. I remember adding the obligatory long-form bio and DNI list at some point, but those didn't last long.

+

I believe it was around this time when the alias "deep twisty"5 came into being. I was just starting out making music at this point, posting crummy songs to SoundCloud that I'd made in an online editor called EarSketch that had you use Python to arrange pre-made loops and samples on a timeline. That shit was wack, yo, but that's beside the point. I was looking for an alias to release my music under, because I was intent on making more and my actual name wasn't gonna cut it.

+

I was quite into Subnautica around this time (I promise this is relevant) and its sequel, Subnautica: Below Zero, was in the early stages of early access around this time, like still working on early-game areas early, and I was following it closely. The devs had a twitter account that posted all the git commits for the game, and a couple of them referred to a biome they were working on, the Deep Twisty Bridges6, as just "deep twisty". That is the origin of that name. I don't know why I felt compelled to base my brand off that, but now I'm committed. I get self-conscious about it sometimes, but honestly, I've seen worse. Not that I'm judging.

+

Anyway, I made a separate Carrd as a hub for this new "deep twisty" persona (I keep it separate from everything else mainly so I can show it to family without them seeing all of... this. Not that I have yet...). That worked fine until I wanted to start embedding my latest YouTube upload on the Carrd page, something Carrd locks behind a paywall. It was at this precise moment I remembered I know how to code and resolved to make the jump to a platform that lets you write your own HTML from scratch, in my case, this being

NeoCities

My first Neocities sites were simple affairs, basic little pages with little more to them than the Carrd sites they had replaced, albeit with some of the things Carrd would have made me pay to add, like that YouTube embed. You can still see the original version of what is now this site here, though the original version of deeptwisty.com was unfortunately lost. It was nothing special, though. It had a similar aesthetic to its replacement, and it was pretty similarly laid out to this here page, even with the same background, just with WAY less text, and no cool isopod.

I've seen some people in this here "small web" community getting mad at people who use Neocities this way, to which I say: shut the fuck up! Everyone has to start somewhere, and messing around on a simple page like that could easily be a gateway drug into making something much bigger, like it was for me. Hearing sentiments like this is just going to discourage people. Besides, it's their website. They're not intruding on your special cool kids club by using a free service to do the thing that it's for.

It was also during this time when I bought the domain deeptwisty.com. I had to pay Neocities to use it, but I was more than happy to support the cause anyway. I didn't stricly need the domain, but boy was it cool to have my very own Dot Com. It just sounds so professional. deep twisty Dot Com.

The deep twisty site tended to take precedence over this here personal one for a while; the personal site was relegated to a subdirectory or subdomain like deeptwisty.com/me or me.deeptwisty.com. In fact, the transition from the former to the latter is when the original deeptwisty.com was tragically lost. I was copying over the contents of deeptwisty.com/me to its own fresh new dedicated Neocities profile and I accidentally uploaded the files to the wrong site, overwriting a large portion of the main deeptwisty.com with no way to recover it. I spent a couple days rebuilding it into roughly what you see at that domain now, and when I was done I was having enough fun with it that I wanted to keep going and decided to overhaul my other site too, and what resulted was this.

For this new version of the site, I decided I wanted to be able to actually add content to it, whereas the old site hadn't really been designed in a way that was conducive to that. I decided to do this in the most JS-reliant way possible. I had one main page with the navigation and layout, and the navigation worked by using a URL querystring to tell the page which content to load. It was pretty fuckin' neat, but I would eventually realize I wasn't a fan of how dependent it was on Javascript. My favorite feature of this revision is the theme picker, which swapped out different stylesheets and set a cookie to remember which one you prefer. The main problem with this was that I designed it so the themes could change basically everything bar the fudamentals of the layout, and it became a huge pain in the ass to add both new pages and new themes while ensuring everything stayed compatible. It was really cool though.

-

To be completely honest, I took rather a lot of inspiration for this revision from this site here, which is to say I basically made a worse version of it and went from there. You can still see some of that inspiration in v3, with the giant header text and centered single-column layout.

+

To be completely honest, I took rather a lot of inspiration for this revision from this site here, which is to say I basically made a worse version of it7 and went from there. You can still see some of that inspiration in v3, with the giant header text and centered single-column layout.

This revision was, as the kids say, Real Cool™, but the aforementioned problems led me to scrap it after only about 2 months, which brings us here:

v3 and Self-Hosting

I wanted something that could be viewed without Javascript and wasn't a colossal pain in the ass to update, hence what you see on the site now if you're reading this soon after it was posted. If I've since overhauled the site again, the version I'm referring to should be available here. This version is designed to be as simple layout-wise as possible, to the point where you can read it in a text-only browser and not lose much of the experience. It's much easier to add stuff to now. My one issue with it is the navigation - unlike v2, where you could get to any page from any other in one click, v3 requires you to go back to the homepage to move between pages. It's just harder to navigate. This system is better than having to add a link to every new page on every existing page, though. Now that I can do server-side rendering, I'll probably put in a proper navbar or something of that nature at some point.

-

Speaking of which, a bit after the jump to v3 I decided to start self-hosting my websites. I didn't have any deal breaking issues with Neocities per se, but I wanted to start messing around with server-side scripting, and I wanted to host some other things that I wasn't in a position to otherwise. I originally wanted to do this with an old laptop I had lying around, but I would have had to punch through the NAT in my house and point the domain to my home IP address, neither of which I wanted to do. Instead, I cancelled my paid Neocities account and reallocated those funds to rent a VPS. I was originally going to use Linode for this, but they literally wouldn't let me sign up for an account for some reason (?) so I went with DigitalOcean instead.

-

I've had quite a lot of fun with this newfound backend access. I now have the freedom to use Javascript only when there's literally no other way to do what I want done, and I've taken advantage, moving stuff like the randomized subheader on the landing page server-side. I'm also hosting a lot of other services on this same VPS, including but not limited to a Pleroma instance, an RSS aggregator, a SearXNG instance, and a WireGuard VPN to make more intensive stuff I host on my laptop available to the internet. I'm honestly really impressed that the 1 CPU thread and 2G of RAM my server has can handle all that.

+

Speaking of which, a bit after the jump to v3 I decided to start self-hosting my websites. I didn't have any deal breaking issues with Neocities per se, but I wanted to start messing around with server-side scripting, and I wanted to host some other things that I wasn't in a position to otherwise. I originally wanted to do this with an old laptop I had lying around, but I would have had to punch through the NAT in my house and point the domain to my home IP address, neither of which I wanted to do. Instead, I cancelled my paid Neocities account and reallocated those funds to rent a VPS. I was originally going to use Linode for this, but they literally wouldn't let me sign up for an account for some reason8 so I went with DigitalOcean instead.

+

I've had quite a lot of fun with this newfound backend access. I now have the freedom to use Javascript only when there's literally no other way to do what I want done, and I've taken advantage, moving stuff like the randomized subheader on the landing page server-side. I'm also hosting a lot of other services on this same VPS, including but not limited to a Fediverse instance, an RSS aggregator, a SearXNG instance, and a WireGuard VPN to make more intensive stuff I host on my laptop available to the internet. I'm honestly really impressed that the 1 CPU thread and 2G of RAM my server has can handle all that.

That brings us to now, at this moment, when I'm writing this. I'm absolutely not out of stuff to do here, if I can ever get myself to actually fucking do any of it. I've had a great time with this whole "personal website" business so far, and I'm excited to see where I go with it from here. The community around it is cool too, though lord knows I'm still learning to navigate this particular social environment. At any rate, I'll definitely take this over Twitter.

- cd /home/willem/cumulus\ server/www/niceopod/blog/posts/
+ cd ~/cumulus\ server/www/niceopod/blog/posts/
sftp root@isopod.cool:/var/www/niceopod/blog/posts/
put -r deeptwistycom_2nd_anniversary_-_a_history_of_this_bullshit/
+
+

1. It has since been migrated off of Neocities.

+

2. Did you know you can get an RSS feed for any tumblr blog by going to <blog url>/rss? True story!

+

3. Oh, I should have mentioned, GTFO if you kin Komaeda.

+

4. I kind of get why you would want people to know that information, but I'm surprised more people didn't realize how easily abused that was.

+

5. stylized in all lower case

+

6. Yes, I named a song Bridges so I could call it "deep twisty - Bridges". Shut up.

+

7. I'm currently going back through this blog post a couple years after the fact to replace all the hovertext with footnotes, and wow, v2 really, really was just me doing hosma.neocities.org. Utterly shameless.

+

8. WTF? Like, let me give you my money, dude. The only thing I can think of that could have happened is their system assumed I was some kind of spammer or bot because I was accessing their site through a VPN. I solved the CAPTCHAs and everything. What's the deal?

diff --git a/blog/posts/discord/index.php b/blog/posts/discord/index.php index 0fb4e6c..b15f9f3 100644 --- a/blog/posts/discord/index.php +++ b/blog/posts/discord/index.php @@ -13,12 +13,9 @@ +

discord

So Your Favourite Chat App Sucks Now

-

Just once I'd like to write about something other than fixing tech problems.

So Discord's been on their bullshit again (as if they were ever off of it). This time it's an overhaul to their username system, last time it was a change in their privacy policy allowing them to collect data from voice and video calls, and then there's the AI stuff. It's not like Discord acting shitty is anything new, but this post isn't about the company's transgressions. This article is about escaping your dependency on Discord, and more broadly escaping the vicious corporate cycle of which it's the latest iteration.

@@ -29,7 +26,15 @@

It's possible, even probable, that Discord started out with the simple, noble goal of being the best Chat for Gamers™, creating an alternative to the problems present with its predecessors Skype and Teamspeak, and whatever chat functionality your favourite games had. At this, it succeeded spectacularly, for a time. However, the entire model of the VC-funded startup is fundamentally unsustainable.

Discord was never actually profitable - it's been able to keep the lights on for this long using money from investors, but it needs to become profitable at some point in order to keep going long-term. If you're an avid Discord user, think of some of the blatant cash grabs they've pulled in the past at the expense of user experience, all the pointless features they've added behind the paywall of Nitro. I'd bet you can name at least half a dozen. And none of it worked. Now imagine what Discord would need to do, or would try, in order to become profitable. Personally, the imagine conjured in my mind by the idea of "Discord but profitable" is pretty grim.

This isn't a problem specific to Discord. A popular term for what's happening to it is "enshittification" - Cory Doctorow, the term's inventor, explains it well:

-
Here is how platforms die: first, they are good to their users; then they abuse their users to make things better for their business customers; finally, they abuse those business customers to claw back all the value for themselves. Then, they die.
+
+
+
+ Here is how platforms die: first, they are good to their users; then they abuse their users to make things better for their business customers; finally, they abuse those business customers to claw back all the value for themselves. Then, they die. +
+
+ — Cory Doctorow, Tiktok's enshittification +
+

I won't restate his essay or the examples he lists here (though you should give it a read), but one obvious one his article didn't cover because it was written more than a week ago is what's happening with Reddit right now. Reddit has been enshittifying itself for years, but the current controversy is particularly bad and particularly representative of the problem. As of writing in mid-June of 2023, Reddit has just instituted a new policy requiring payment for use of its API, to the tune of $12,000 per 50 million API requests, which for certain popular third-party clients and moderation tools comes out to millions of dollars per year.

Reddit did not need to do this. Reddit was doing fine. This was purely a cash-grab, and it's blowing up in everyone's face right now, including theirs. Moderators of many popular subreddits are essentially going on strike over this, and if you think that's the only critical problem this decision is going to cause for users you know very little about Reddit. The developers of open-source clients and moderation tools used by massive portions of Reddit's userbase can't afford costs like this, and most of them will be forced to shut down if Reddit sticks to its guns.

I'm not saying they will, but Discord could absolutely do the same thing, and it wouldn't surprise me if it came to that. Imagine if Discord bot developers needed to pay API fees like that. There'd certainly be a lot fewer Discord bots, and probably a lot more paywalled ones among the remainder. Discord absolutely needs to become profitable in order to be sustainable, and it will do whatever it needs to to that end or die. Even then, it can't just break even; capitalism demands endless growth. Discord will keep getting worse as long as there's money in it. It's inevitable. It's required.

@@ -46,13 +51,13 @@

If you still don't believe me, read through a couple months of your Discord message history and then contemplate printing it out and mailing it to the NSA. If the government asks, Discord will save you the trouble, and they won't ask your permission first. And with a recent change to their privacy policy, this theoretically applies to your voice chats too, though to be fair I expect that would be prohibitively costly in server space.

Discord fundamentally couldn't give a shit about your privacy, and doesn't even really care to pretend like it does. It has no incentive to. The investors probably wouldn't be comfortable with the risks associated with pulling a stunt like responding to a subpoena with "yeah here's their phone number. that's all we got" like certain other chat apps anyway, and then there's the potential to sell that all data on you to advertisers. I'm not aware that they currently do that, but it's certainly not off the table should they decide to go that route in order to turn a profit. At least, not under US law, anyway.

Actually, I just checked that ToS;DR link from earlier again, would you look at that:

-
This service may keep personal data after a request for erasure for business interests or legal obligations
-
This service ignores the Do Not Track (DNT) header and tracks users anyway even if they set this header.
-
Your personal data may be used for marketing purposes
-
This service can license user content to third parties
-
The service can sell or otherwise transfer your personal data as part of a bankruptcy proceeding or other type of financial transaction.
-
The service may use tracking pixels, web beacons, browser fingerprinting, and/or device fingerprinting on users.
-
The service uses your personal data to employ targeted third-party advertising
+
This service may keep personal data after a request for erasure for business interests or legal obligations
+
This service ignores the Do Not Track (DNT) header and tracks users anyway even if they set this header.
+
Your personal data may be used for marketing purposes
+
This service can license user content to third parties
+
The service can sell or otherwise transfer your personal data as part of a bankruptcy proceeding or other type of financial transaction.
+
The service may use tracking pixels, web beacons, browser fingerprinting, and/or device fingerprinting on users.
+
The service uses your personal data to employ targeted third-party advertising

Juicy stuff. You should really give that a read - you might not like what you find.

Before we move on, I'll just drop this tasty little link to further reading. It's a real page-turner.

Cool, so how do we fix it?

@@ -285,26 +290,15 @@
  • Has features like custom emojis, replies, public guilds and a friends list.
  • Signal

    -

    I've now run out of Discord-likes - which is to say, programs that support the sort of multi-channel group chat thing Discord has going on. The remaining couple are more traditional Whatsapp-style messaging apps, though I feel these still bear mentioning in the event that's all you need.

    -

    Signal is kind of the private messaging app. It's fundamentally built around end-to-end encryption in a way that its biggest direct competitors simply aren't. It's been proven in court that Signal literally doesn't have the ability to incriminate you, since they can't access the contents of your messages. It does need your phone number, though. It also supports voice and video chat, and stickers, apparently.

    +

    I've now run out of Discord-likes - which is to say, programs that support the sort of multi-channel group chat thing Discord has going on. This and the next one function more in the vein of a Whatsapp clone, though I feel they still bear mentioning in the event that's all you need.

    +

    Signal is kind of the private messaging app. It's fundamentally built around end-to-end encryption in a way that its biggest direct competitors simply aren't. It's been proven in court that Signal literally doesn't have the ability to incriminate you, since they can't access the contents of your messages. It does need your phone number, though, however you can now hide it with a username. It also supports voice and video chat, and stickers, apparently.

    • Centralized service.
    • Similar to Whatsapp in terms of UI/UX.
    • Emphasis on end-to-end encryption.
    • Supports voice and video calls.
    • Requires a phone number, but only a phone number.
    • -
    -

    Telegram

    -

    You've probably heard of Telegram. It's very popular and has tons of fun, gimmicky features. It advertises itself as secure and private, and while it certainly clears the extremely low bar set by Discord, it's not actually end-to-end encrypted outside of the "secret chats" feature. It also claims to be good for community chats, but from what I can tell that just means enormous single-channel group chats.

    -
      -
    • Centralized service.
    • -
    • Another Whatsapp clone.
    • -
    • Supports voice and video calls.
    • -
    • Supports end-to-end encryption, but only in calls and the special "secret chats" feature. Standard group chats are encrypted, but not end-to-end encrypted.
    • -
    • Requires a phone number.
    • -
    • Your account will be deleted after six months of activity.
    • -
    • Minor paywalls.
    • -
    • You can set a display name, but this will make you visible in public search.
    • +
    • You can set a username, so you don't need to share your phone number.

    Session

    I lied, Session isn't centralized. But it's not decentralized in the same way as the federated protocols up there, either. Session runs over an anonymizing onion routing network, Tor-style, meaning not only can your messages not be read by the server, those servers also don't know both the sender and the destination at the same time. Essentially, it's designed to maximize privacy and anonymity at all costs. But wouldn't you know it, that comes at a cost in terms of features and user experience.

    @@ -319,6 +313,7 @@

    Conclusion

    That's about all I've got. I hope I've impressed upon you the importance of Discord's core problems, and introduced you to at least one alternative that works for you. I have my preferences, but I'm comfortable recommending all of these over Discord, otherwise I wouldn't have listed them.

    [Update 2023-09-09] I no longer recommend Matrix over XMPP for reasons explained well here. I knew there was a little jank but I had no idea the rot ran this deep. Fortunately, nobody's listened to me yet so I can switch over to XMPP without much issue, which I intend to do.

    +

    [Update 2024-04-27] I have removed Telegram from the recommendations list outright due to just, straight up nazism, and in a post announcing cryptocurrency features no less. Jesus H. Christ.

    If there's one thing I want you to take away from this article, it's this: Don't fall for the marketing and don't let yourself be wooed by extraneous gimmicks. Be discerning about which fancy-sounding features you actually need. If you want to have a chance of escaping the vicious corporate cycle of enshittification, both with chat platforms and with everything else, make sure the ones you use have a strong foundation of sustainability and trustworthiness, beyond whatever marketing drivel is on the front page of their website. Hopefully I've given you at least some tools to determine for yourself which ones do.

    Further Reading

      diff --git a/blog/posts/fediverse_dms/index.md b/blog/posts/fediverse_dms/index.md new file mode 100644 index 0000000..a12c503 --- /dev/null +++ b/blog/posts/fediverse_dms/index.md @@ -0,0 +1,19 @@ +People who refuse to use the fediverse (often conflated with Mastodon) often cite concerns about privacy with regards to DMs as their reason for avoiding it; "admins can read your DMs" and all that. To be fair, that's technically a true statement, but it's more complicated than that. Now, I have no problem letting these people be wrong - I'm not eager to convince idiots with no capacity for critical thinking to come to my favourite social network - but I'm nothing if not endlessly pedantic, so I felt the need to explain my take on the issue anyway. + +## DMs Are A Lie + +To begin with, the term "DM" as it applies to other social platforms is kind of a misnomer in the case of the Fediverse. Websites like Twitter and Instagram have a dedicated chat-style interface for messaging people directly. If you spend five minutes with most fediverse software, you'll notice that it doesn't have this. + +Sending a DM on the fediverse is generally accomplished by making a normal post and changing the visibility setting to only show the post to people who are mentioned in it. This isn't a case of obtuse UX design, it reflects how DMs on the fediverse actually work under the hood: The underlying protocol has *no concept* of direct messages, and is only able to approximate them with a special flag on an otherwise normal post. + +In other words, when you send a "DM" on the fediverse, what you're really doing is making a public post, and asking the network nicely to only show it to the person it's intended for. All software that isn't actively malicious or *extremely* shitty will comply with this request, and in fact admins can only read your DMs by circumventing the instance software and accessing the backend database directly, but the post is in no way actually private. + +## This Is Fine Actually + +I don't personally think this is an issue; I think it's perfectly fine that the fediverse doesn't attempt to do secure communication. Doing things this way reduces liability for server owners and reduces the complexity of the software for developers, and you really should be able to contact anyone who you actually want to keep in touch with on multiple platforms anyway. + +Besides, it's not like insecure DMs are an issue unique to the fediverse. DMs on [Twitter/Instagram/Reddit/etc] aren't encrypted either, meaning the admins of those websites can read your DMs too. Same for actual dedicated chat platforms like Discord and (mostly) Telegram. Twitter's admins can read your DMs, Discord's admins can read your messages, Gmail's admins can read your emails, and your phone provider can read your texts. And they often do, to sell information about you to advertisers or comply with police requests or what have you. + +It's only slightly less of a problem on those platforms because you're much less likely to know the admins personally, and individual staff members could probably lose their jobs if they used the contents of your DMs to start drama. That said, I've personally never seen evidence of any admin *actually* reading someone's DMs on the fediverse, because doing that is a *huge pain in the ass* involving like, SQL queries and shit, and is much harder than any actual administrative task most fediverse admins will ever do. + +Either way, you should really be using an actually secure messaging service if privacy is important to you. Be the change you want to see in the world and become that person who insists on taking conversations in Twitter DMs to Signal. I'm being completely serious. \ No newline at end of file diff --git a/blog/posts/fediverse_dms/index.php b/blog/posts/fediverse_dms/index.php new file mode 100644 index 0000000..c04d1b3 --- /dev/null +++ b/blog/posts/fediverse_dms/index.php @@ -0,0 +1,27 @@ + + + + + + Admins Can Read Your DMs + + + + + + +

      isoblog

      +

      Admins Can Read Your DMs

      + text(file_get_contents("index.md")); + include("../../comment/form.php"); + ?> + + diff --git a/blog/posts/guide_blacklist_websites_searxng/index.php b/blog/posts/guide_blacklist_websites_searxng/index.php index d5e4d99..7b4634c 100644 --- a/blog/posts/guide_blacklist_websites_searxng/index.php +++ b/blog/posts/guide_blacklist_websites_searxng/index.php @@ -13,12 +13,9 @@ +

      guide:

      Blacklisting Websites in SearXNG

      -

      Quick one today. I got sick of searching for programming questions and seeing AI-generated scraped-from-stackoverflow click farm trash polluting the results, and I happen to use a personal SearXNG instance that no client-side blacklist extension on the planet is gonna support, so I went looking to see if I could blacklist them in SearXNG for like the eighth time and finally found a way using the hostname replace plugin. So here's that, because I didn't find this feature documented officially anywhere bar an issue on the Github repo.

      How to do it

      diff --git a/blog/posts/guide_blocking_user_agents_nginx/index.php b/blog/posts/guide_blocking_user_agents_nginx/index.php index af53e37..4088d37 100644 --- a/blog/posts/guide_blocking_user_agents_nginx/index.php +++ b/blog/posts/guide_blocking_user_agents_nginx/index.php @@ -13,11 +13,9 @@ +

      guide:

      How to Block User Agents With Nginx

      -

      Recently, Cloudflare has launched a clumsy, poorly-executed attempt to centralize the fediverse on their platform known as Wildebeest. There are a few reasons not to want to use it, and you probably don't want to be federating with it either. However, blocking every instance running it on sight would be both tedious and ineffective.

      diff --git a/blog/posts/guide_fix_youtube_buffering_firefox/index.php b/blog/posts/guide_fix_youtube_buffering_firefox/index.php index 345de4f..a9a5e98 100644 --- a/blog/posts/guide_fix_youtube_buffering_firefox/index.php +++ b/blog/posts/guide_fix_youtube_buffering_firefox/index.php @@ -13,12 +13,9 @@ +

      guide:

      How to Make Youtube Videos Buffer All The Way Like The Old Days (In Firefox)

      - +

      guide:

      How to Automount Drives On Boot in Linux

      - +

      Preamble

      -

      Preamble

      + Show preamble

      Recently I had to reinstall Linux because of reasons, and I hit a bit of a snag. See, my computer has this setup with three drives where one is the boot drive, and the other has /home on it... it's not important, point is, I wanted some drives to be automatically mounted as specific directories at boot time.

      This is pretty easy to do with the manual partitioning tools most graphical installers provide, but I would have also had to manually partition the boot drive and hell if I'm figuring out for the umpteenth time how this particular distro with this particular hardware needs to be partitioned in order to be bootable, so I just selected the automatic partitioning option which assumes you just want everything on the boot drive.

      Now the problem is that my system doesn't know my /home directory is on /dev/sda3 and not /dev/nvme0n1p1. So I have to fix that now or just log in as root and mount my shit every time I turn the computer on for the rest of time. Guess which thing sounded like more of a pain in the ass. I googled it so you don't have to!

      @@ -47,7 +45,7 @@

      For example, here's the entry I added for one of my drives:

      /etc/fstab - UUID=f8c3f1b1-7fef-4a01-bec7-ba3e89e2f8da /home/willem/vault ext4 defaults 0 0 + UUID=f8c3f1b1-7fef-4a01-bec7-ba3e89e2f8da /home/user/vault ext4 defaults 0 0

      If you did it right, you should now be able to reboot and see your partitions have been automatically mounted!

      One more thing to keep in mind, if you see any lines with a mount point that's the same as the place you're trying to mount to (for example, the system has mounted a btrfs subvolume for /home and you want to put that on your secondary drive) you should probably comment out or delete that.

      diff --git a/blog/posts/guide_self_host_safely_with_wireguard/index.php b/blog/posts/guide_self_host_safely_with_wireguard/index.php index 34e3fb0..fcc7f05 100644 --- a/blog/posts/guide_self_host_safely_with_wireguard/index.php +++ b/blog/posts/guide_self_host_safely_with_wireguard/index.php @@ -10,25 +10,17 @@ h1 { background-image: url('wireguard_logo.png'); } - summary > * { - margin-bottom: 0; - display: inline-block; - } - details[open] > summary h6 { - display: none; - } +

      guide:

      Self-Host Safe(r)ly with WireGuard

      - +

      Warning: The information in this post is outdated and probably bad. I'd update it but I don't remember what I did. I'm pretty sure I had to circumvent UFW entirely. At any rate, probably don't do what I say to do here.

      +

      Preamble

      -

      Preamble

      Click to show
      + Show preamble

      If you're like me, you don't like relying on other people for your online services, either because you don't want to give out your data unnecessarily, or just because you don't want to shell out for subscription services. You might be willing to host such services yourself, and you might even have access to spare hardware to do it on.

      One critical issue arises, however: your home network. Maybe you're behind some weird impenetrable NAT setup you don't control, or maybe your IP address is dynamic and changes regularly, or maybe you just don't want to expose your home IP to the world. What then?

      Luckily for us, there's a way to circumvent all that nonsense. A custom VPN like the one we'll be setting up today, hosted on an external server like a VPS, can punch through any weird home internet configuration while also swapping out your home IP address for a static one that you can feel safe exposing to the world.

      diff --git a/blog/posts/guide_things_i_keep_having_to_google/index.php b/blog/posts/guide_things_i_keep_having_to_google/index.php index 0fabc8d..f6f9224 100644 --- a/blog/posts/guide_things_i_keep_having_to_google/index.php +++ b/blog/posts/guide_things_i_keep_having_to_google/index.php @@ -16,22 +16,19 @@ } details[open] > summary h6 { display: none; - }*/ + } td { padding: .2rem; } td h4 { margin: 0; - } + }*/ +

      guide:

      Things I Keep Having to Google

      -

      This isn't really a guide to anything in particular, I just wanted an easily accessible reference for all the things I'm sick of wading through google results for, or otherwise seem to need help remembering. I've put it here in case someone else might find this helpful. I'll likely be adding to this as I find myself repeatedly googling things.

      Binding things to just the Super key in KDE

      diff --git a/blog/posts/my_terrible_distro_hop/index.php b/blog/posts/my_terrible_distro_hop/index.php index e4aa03a..98103ed 100644 --- a/blog/posts/my_terrible_distro_hop/index.php +++ b/blog/posts/my_terrible_distro_hop/index.php @@ -13,16 +13,13 @@ -

      blog

      + +

      isoblog

      My Terrible, Horrible, No-Good, Very Bad Distro Hop

      -

      Prologue

      Of late, I've been having some mildly annoying, highly esoteric issues, of the sort any desktop OS tends to develop given enough time, with my daily-driver install of the Arch-based EndeavourOS with XFCE. The most annoying of these annoyances include the XFCE panel daemon having stopped running on login, which I dealt with by binding the command to start it to a keyboard shortcut, and the monitor layout defaulting to mirrored every time I locked the screen, which I dealt with much the same way. I say of late, but I've been dealing with this shit for months. These seemed like bugs somewhere deep in XFCE that I really didn't have the energy to try to fix, so my solution was to just go scorched-earth and start again with something new.

      -

      The something new I landed on was a fresh install of Fedora. I chose Fedora partially for the GNOME desktop environment, which, to be blunt, seems to have its shit together much more than XFCE does (or KDE for that matter), and partially because I was hoping that by moving away from a rolling-release distro to something more stable I could avoid some of the inscrutable weirdness that kept materializing after updates on Arch. Plus, I was excited to once again be on an OS with some more sane defaults, like flatpaks and Bluetooth being available out of the box. This is what was going through my head as I loaded the Fedora live ISO onto a flash drive and rebooted my computer.

      +

      The something new I landed on was a fresh install of Fedora. I chose Fedora partially for the GNOME desktop environment, which, to be blunt, seems to have its shit together much more than XFCE does (or KDE for that matter), and partially because I was hoping that by moving away from a rolling-release distro to something more stable I could avoid some of the inscrutable weirdness that kept materializing after updates on Arch1. Plus, I was excited to once again be on an OS with some more sane defaults, like flatpaks and Bluetooth being available out of the box. This is what was going through my head as I loaded the Fedora live ISO onto a flash drive and rebooted my computer.

      I had no idea what I was about to get myself into.

      The Installation Experience

      The installation went very smoothly. I was actually pretty impressed. It was probably the fastest I've ever installed Linux - All it did was prompt me for a language, timezone, and the drive to install to and a few minutes later it was done. Fast and simple even by Linux installation standards. It was the next part that was painful.

      @@ -33,7 +30,7 @@

      Anyway, this issue with programs not seeing their existing config files would become a running theme. I would later discover that this had something to do with the fact that all this stuff had been installed as flatpaks, as opposed to a native installation from the distro's repositories or the AUR like it would have been before.

      See, for some (probably security-related) reason, flatpaks store their config files in a different place than natively installed programs, and the preinstalled graphical Software Center, which I was using to install all this stuff, seems to like to default to flatpaks whenever possible. I never used flatpaks on my previous install because they weren't enabled by default, hence, almost none of the programs I installed remembered their previous settings.

      To be clear, this probably would have been fine if flatpaks were already my go-to, but they weren't, and I wasn't about to reconfigure all my shit or go way out of my way to be particular about which packaging method I preferred for my software in order to avoid reconfiguring all my shit.

      -

      On a related note, a lot of the software in the repositories that were available to me was severely outdated. PrusaSlicer, for example, was only available in version 2.4.2, which was released in April of 2022. As of writing in February of 2024, the latest version is 2.7.1. It was upon going to Prusa's website to download the AppImage of the latest version like some kind of fucking caveman and discovering that AppImageLauncher wasn't in any of the repos that I got fed up, decided I wasn't gonna risk dealing with this type of shit for every program I wanted to install and noped out.

      +

      On a related note, a lot of the software in the repositories that were available to me was severely outdated. PrusaSlicer, for example, was only available in version 2.4.2, which was released in April of 2022. As of writing in February of 2024, the latest version is 2.7.1. It was upon going to Prusa's website to download the AppImage of the latest version like some kind of fucking caveman and discovering that AppImageLauncher2 wasn't in any of the repos that I got fed up, decided I wasn't gonna risk dealing with this type of shit for every program I wanted to install and noped out.

      Where To Next

      So Fedora was a bust, so where do I go from here? I considered moving to an Ubuntu-based distribution like Pop!_OS or Mint that might give me what I wanted from Fedora, and I briefly considered going back to Manjaro for reasons I have honestly forgotten, but I had been at this for hours now and I really just wanted my computer in a usable state again with the minimum possible amount of adaptation, so I came crawling back to EndeavourOS, and went to take a nap while it installed to hopefully come back to this ordeal with a cooler head.

      I kept using GNOME, though. I kinda like it. I switched to XFCE initially because I had been looking at r/unixporn and had it in my head that I wanted really granular customization, but that honestly didn't last long. I got it looking decent and then got bored. Eventually, the creeping accumulation of jank and bugs got tiresome, and my hope is that GNOME is sufficiently well-integrated and UX-designed to avoid some of that.

      @@ -70,17 +67,25 @@

      huh.

      I think the Github user I learned this from says it best in their comment:

      -
      - Yes!!! It needs [network-manager]-applet!!

      - Oh man, that was a saga, and what a simple fix!

      - Thanks so much. I understand that protonvpn doesn't want to say that it "officially supports" desktop environments other than GNOME or KDE, but I think it would still be really great if we could add some documentation here. - -ExpandingMan -
      +
      +
      + Yes!!! It needs [network-manager]-applet!!

      + Oh man, that was a saga, and what a simple fix!

      + Thanks so much. I understand that protonvpn doesn't want to say that it "officially supports" desktop environments other than GNOME or KDE, but I think it would still be really great if we could add some documentation here. +
      +
      + — ExpandingMan, connecting fails due to failure to get secrets #49 +
      +

      I have a couple questions. One, why isn't this listed as a dependency if not having it breaks everything? I assume it's the fault of the person maintaining the AUR package, but that seems like a weird oversight on a family of distros where that package clearly does not come standard.

      Two, what's going on with ProtonVPN clients on Linux? It looks like the Electron app and accompanying CLI (which I quite liked) are deprecated as of last October? And replaced with that weird GTK thing that's missing a bunch of features and doesn't include a CLI anymore? What the fuck? Why did they make it worse? I mean, it's not like this isn't part of a pattern for Proton. I'm pretty sure the Proton Drive desktop client still isn't on Linux yet.

      -

      Also, three, why wasn't network-manager-applet already installed? This thing seems like a pretty important system package, especially given the rest of network-manager was already present and seems to be the thing allowing me to connect to the internet right now. Well, such is Arch I suppose. The type of Linux user who runs this thing seems to tend towards having a pathological obsession with bloat and the relevant de-'s.

      +

      Also, three, why wasn't network-manager-applet already installed? This thing seems like a pretty important system package, especially given the rest of network-manager was already present and seems to be the thing allowing me to connect to the internet right now. Well, such is Arch I suppose. The type of Linux user who runs this thing seems to tend towards having a pathological obsession with bloat and the relevant de-'s3.

      Oh Sweet It's Fine Actually

      That concludes my blog post, and the blog-post-within-a-blog-post that appears to have metastasized up there. I think you should know I finished troubleshooting both ProtonVPN and OBS while writing the post chronicling my suffering. Thank you for indulging my bitching and moaning about totally avoidable software problems. Who knows, maybe this will help you. For your sake, I hope it doesn't.

      +
      +

      1. I say Arch, and not EndeavourOS, because I used to use Manjaro and it was like this too.

      +

      2. AppImages are programs packaged as standalone executables. They don't need to be installed - AppImageLauncher isn't necessary to run them, but it's my preferred tool for integrating them into the system with menu entries and such.

      +

      3. nuts

      diff --git a/blog/posts/unity_runtime_fee_and_proprietary_software/index.php b/blog/posts/unity_runtime_fee_and_proprietary_software/index.php index 5db66cc..00903b5 100644 --- a/blog/posts/unity_runtime_fee_and_proprietary_software/index.php +++ b/blog/posts/unity_runtime_fee_and_proprietary_software/index.php @@ -13,12 +13,9 @@ -

      blog

      + +

      isoblog

      The Unity Runtime Fee and Proprietary Software

      -

      Well this fucking sucks.

      [UPDATE 2023-09-23] This policy has changed significantly for the better since this article was written, and I wanted to update this post for completeness, but I'm leaving the original article alone because I think it's important for people to know everything Unity tried to get away with, and not just what it ended up doing. I've added my thoughts on the changes to the end of this article.

      diff --git a/desktop.css b/desktop.css deleted file mode 100644 index 9013f1a..0000000 --- a/desktop.css +++ /dev/null @@ -1,155 +0,0 @@ -:root { - --stdfont: mono, monospace; - --windowcountx: 3; - --windowgap: 1.4rem; - --navbarheight: 2.8rem; - --uicolor: #000000bf; - --bgimage: url('https://i.redd.it/abhfagc5t4591.jpg'); - --borderrounding: 1; - --txtcolor: #ffffff; - --navbarmargin: 0.25rem; -} -html, body { - height: 100%; - font-family: var(--stdfont); - padding: 0; - margin: 0; -} -body { - background-image: var(--bgimage); - background-size: cover; - background-position: center; - background-attachment: fixed; -} - -header { - height: var(--navbarheight); -} -nav { - float: left; - box-sizing: border-box; -} -nav, .navbutton { - height: 100%; - font-size: 0; -} -.navbutton, nav a { - display: inline-block; - color: var(--txtcolor); - border: none; - border-radius: 0; - background: none; - padding: calc((var(--navbarheight) / 2) - 12px); -} -.navbutton:hover, nav a:hover { - cursor: pointer; - background-color: #ffffff44; -} -nav a { - border-radius: calc(50% * var(--borderrounding)); - margin: var(--navbarmargin); -} -nav a img { - filter: drop-shadow(1px 1px 4px black); -} -#apps, .systray { - box-sizing: border-box; - display: inline-block; - overflow: clip; - border-radius: calc((var(--navbarheight) / 2) * var(--borderrounding)); - background-color: var(--uicolor); - margin: var(--navbarmargin) 0; - padding: 0 0.5rem; -} -.systray { - color: var(--txtcolor); - float: right; - height: 100%; - margin-right: var(--navbarmargin); - margin-bottom: -1rem; -} -.sysleft { - float: left; - margin-left: var(--navbarmargin); -} -.systray p { - margin: 0; - padding: calc((var(--navbarheight) / 2) - 1.2ch); -} -#settingspanel { - display: none; - position: absolute; - right: var(--navbarmargin); - top: calc((var(--navbarmargin) * 2) + var(--navbarheight)); - z-index: 5; - background-color: var(--uicolor); - border-radius: calc((var(--navbarheight) / 2) * var(--borderrounding)); - padding: 1rem; -} -#settingsbutton:checked ~ #settingspanel { - display: block; -} -#settingspanel input, #settingspanel button { - border: none; - border-radius: calc(0.9rem * var(--borderrounding)); - padding: 0.3rem 0.6rem; -} -#settingspanel td { - padding: 0.3rem; -} - -main { - display: flex; - padding: calc(var(--windowgap) / 2); - flex-wrap: wrap; - height: calc(100vh - var(--navbarheight)); - box-sizing: border-box; - padding-top: var(--navbarmargin); -} - -.window { - margin: calc(var(--windowgap) / 2); - flex-grow: 1; - box-sizing: border-box; - flex: calc((100% / var(--windowcountx)) - var(--windowgap)); - border-radius: calc(1.15rem * var(--borderrounding)); - overflow: clip; - background-color: var(--uicolor); - z-index: 2; -} -.window iframe { - width: 100%; - height: calc(100% - 2.2rem); - border: none; -} -.windowdecoration { - display: block; - width: 100%; - height: 2.2rem; -} -.closewindow { - display: block; - float: right; - margin: 0.3rem; - height: 1.6rem; - width: 1.6rem; - padding: calc(.8rem - 12px); - border: none; - color: red; - background: none; - border-radius: calc(50% * var(--borderrounding)); - z-index: 500000; -} -.closewindow:hover { - cursor: pointer; - color: black; - background-color: red; -} - -.CboxOpenBtn img { - opacity: 0; - transition-duration: 0.2s; -} -.CboxOpenBtn:hover img { - opacity: 1; -} \ No newline at end of file diff --git a/desktop.html b/desktop.html deleted file mode 100644 index 2fcb089..0000000 --- a/desktop.html +++ /dev/null @@ -1,78 +0,0 @@ - - - - - niceopodOS - - - -
      - -

      niceopodOS alpha v1.0

      -

      -
      - - -
      - - - - - - - - - - - - - - - - - - - - - - - - - -
      Settings
      -
      -
      -
      -
      -
      - -
      - - - - - - \ No newline at end of file diff --git a/desktop.js b/desktop.js deleted file mode 100644 index c73f02b..0000000 --- a/desktop.js +++ /dev/null @@ -1,36 +0,0 @@ -let activeWindowCount = 0; -const desktop = document.getElementById('desktop'); - -function changeRootVar(name, value) { - document.documentElement.style.setProperty(`--${name}`, value); -} - -function updateWindowCountX() { - if(activeWindowCount <= 4) { - document.documentElement.style.setProperty('--windowcountx', '2'); - } else if(activeWindowCount <= 9) { - document.documentElement.style.setProperty('--windowcountx', '3'); - } else { - document.documentElement.style.setProperty('--windowcountx', '4'); - } -} - -function openwindow(name) { - if(activeWindowCount < 9) { - let newWindow = document.createElement('div'); - newWindow.innerHTML = '
      ' - let newWindowContent = document.createElement('iframe'); - newWindow.className = 'window'; - newWindowContent.src = `${name}/`; - newWindow.appendChild(newWindowContent); - desktop.appendChild(newWindow); - activeWindowCount = activeWindowCount + 1; - //updateWindowCountX(); - } -} - -function closewindow(window) { - window.parentElement.parentElement.remove(); - activeWindowCount = activeWindowCount - 1; - //updateWindowCountX(); -} \ No newline at end of file diff --git a/embedded.css b/embedded.css deleted file mode 100644 index d857a7c..0000000 --- a/embedded.css +++ /dev/null @@ -1,8 +0,0 @@ -body { - background: none; - padding: 0; - margin: 0; -} -img { - max-width: 100%; -} \ No newline at end of file diff --git a/etc/changelog.php b/etc/changelog.php deleted file mode 100644 index 05ad754..0000000 --- a/etc/changelog.php +++ /dev/null @@ -1,398 +0,0 @@ - - - - - - Changelog - - - - - - - -

      isopod.cool changelog

      -
      -

      2023-02-09

      -
        -
      • Deprecated this changelog in favor of an rss-bridge feed of git commits to the website, because it's easier and I'm lazy
      • -
      -
      -
      -

      2023-02-08

      -
        -
      • Added my Matrix account to the links page
      • -
      -
      - -
      -

      2023-1-12

      -
        -
      • New blog post! -
        • This one's more of a reference than an article, so it will likely be updated as time goes on.
        -
      • -
      • Added flatworm friday
      • -
      -
      -
      -

      2023-1-05

      -
        -
      • Renamed the site from "niceopod" to just "isopod.cool"
      • -
      • widened everything slightly to accommodate the longer title
      • -
      -
      - -
      -

      2022-12-16

      -
        -
      • Renamed /more/ to /etc/
      • -
      -
      - - - -
      -

      2022-11-27

      - -
      -
      -

      2022-11-25

      -
        -
      • Added a list of services I host to /stuff
      • -
      -
      - - -
      -

      2022-10-27

      -
        -
      • Added a bunch of cool automated Halloween stuff
      • -
      -
      - -
      -

      2022-10-15

      -
        -
      • Added bot protection to the guestbook
      • -
      -
      -
      -

      2022-10-01

      -
        -
      • Added a server-side rendered navbar to all the pages
      • -
      -
      -
      -

      2022-09-29

      -
        -
      • Added some buttons
      • -
      -
      - - - - -
      -

      2022-08-31

      -
        -
      • Removed the Cbox widget from most pages, as it was really only intended as an interim replacement for my old freegb guestbook anyway
      • -
      -
      - -
      -

      2022-08-25

      -
        -
      • New blog post! It's a guide on configuring WireGuard to do port forwarding through a VPN.
      • -
      -
      -
      -

      2022-08-18

      -
        -
      • Changed the background of the links page
      • -
      • All me.deeptwisty.com URLs now return a 301 redirect to the corresponding location on isopod.cool
      • -
      -
      -
      -

      2022-08-10

      -
        -
      • Made elements with hover-text display a special cursor when hovered over, so you know to wait for it to appear.
      • -
      • Added a webgarden and a greenhouse page!
      • -
      • Updated the uses page to include the VPS this site is hosted on.
      • -
      -
      -
      -

      2022-08-08

      -
        -
      • Updated some configurations server-side to reduce bandwidth consumption
      • -
      • Added this thing from here!
      • -
      • Added benlet.
      • -
      -
      -
      -

      2022-08-07

      -
        -
      • Added a couple buttons
      • -
      -
      -
      -

      2022-08-01

      -
        -
      • Moved the status.cafe widget on my blog page server-side
      • -
      • Added a couple buttons to the links page, also removed my Twitter and Neocities.
      • -
      -
      -
      -

      2022-07-30

      -
        -
      • Rewrote the random caption function on the landing page in PHP
      • -
      -
      -
      -

      2022-07-29

      -
        -
      • Moved the site to a VPS and moved domains from me.deeptwisty.com to isopod.cool (me.deeptwisty.com still works though)
      • -
      -
      -
      -

      2022-07-25

      -
        -
      • Added How old is it? to the links page
      • -
      • Added 8mbvideo to the links page
      • -
      • Moved /about/software to /about/uses and added info about my hardware setup to it
      • -
      • Added a button
      • -
      -
      -
      -

      2022-07-23

      -
        -
      • Added 12ft.io to the links page
      • -
      -
      - -
      -

      2022-07-20

      -
        -
      • Added some buttons
      • -
      -
      - -
      -

      2022-07-16

      -
        -
      • Re-formatted the changelog to be a valid HTML Journal, you know, in case you want to subscribe to it. For some reason.
      • -
      -
      -
      -

      2022-07-15

      -
        -
      • Updated every page to have <html lang="en"> instead of <html> or <html lang="">
      • -
      -
      -
      -

      2022-07-14

      -
        -
      • The changelog is now its own page for easier portability between revisions, embedded here in an iframe.
      • -
      • ...as is the to-do list.
      • -
      • Added an HTML Journal to the blog page for shorter entries that I don't feel warrant an entire page.
      • -
      • Updated the blog post list to be compliant with m15o's HTML Blog spec, mostly to automate feed generation.
      • -
      • The old RSS feed for the blog is now deprecated and will no longer be updated.
      • -
      -
      -
      -

      2022-07-04

      - -
      -
      -

      2022-07-01

      -
        -
      • Added a to-do list for the site to this page
      • -
      -
      -
      -

      2022-06-30

      - -
      -
      -

      2022-06-25

      -
        -
      • Added a little popup to the homepage and /stuff that bugs you to switch to firefox if you're not using it. Please for the love of GOD use firefox.
      • -
      • Added a new button for my site!
      • -
      -
      -
      -

      2022-06-24

      -
        -
      • Renamed /misc to /more
      • -
      -
      - -
      -

      2022-06-18

      -
        -
      • Added my buttons to this page (please don't hotlink!)
      • -
      -
      -
      -

      2022-06-17

      -
        -
      • Added Snailets to the links page -
      • -
      -
      -
      -

      2022-06-14

      -
        -
      • Redesigned the website again! It works when you disable Javascript now!
      • -
      -
      -
      -

      2022-06-12

      -
        -
      • Renamed /misc to /stuff
      • -
      • Added my address to the stats page
      • -
      -
      -
      -

      2022-05-29

      -
        -
      • Added RegExr to the links page
      • -
      -
      -
      -

      2022-05-25

      -
        -
      • Added an RSS feed for the blog!
      • -
      • Demoted the link to isopod.cool v1 from having its own section on the homepage to being relegated to /misc/
      • -
      -
      - -
      -

      2022-05-22

      -
        -
      • Added status.cafe widget to the home and blog pages
      • -
      • Added a changelog
      • -
      -
      -
      -

      2022-05-21

      -
        -
      • Added stats table page
      • -
      • Added a cbox channel →
      • -
      • New blog post!
      • -
      -
      - - - \ No newline at end of file diff --git a/etc/index.php b/etc/index.php index b5fab4a..cb3597b 100644 --- a/etc/index.php +++ b/etc/index.php @@ -39,8 +39,10 @@

      v1 - Old, slow, basically just a carrd page on steroids. Made heavy use of float initially. Ugh.

      v2 - Slick as hell but entirely Javascript-dependent. This is where my webpage became a website.

      Quiz results

      - - +
      + + +

      Buttons

      Piracy Now! @@ -87,16 +89,7 @@ niceopod deep twisty
      -

      TODO

      -
        -
      • Add a changelog to this page by parsing the atom feed
      • -
      • Make a cool 404 page
      • -
      • Add my CD collection to the music page
      • -
      • Make a page for games I like
      • -
      • Write another blog post
      • -
      • Update privacy policy
      • -
      -
      +
      diff --git a/etc/quotes/index.php b/etc/quotes/index.php index 930bbab..a8dfb1d 100644 --- a/etc/quotes/index.php +++ b/etc/quotes/index.php @@ -10,10 +10,10 @@ error_reporting(E_ALL); #quotes @@ -57,13 +62,13 @@ error_reporting(E_ALL); $this->color = $c; } } - $will = new User("w_pfp", "President of the Universe ඞ", "00ffb7"); - $vivi = new User("v_pfp", "quote unquote \"mouth frog\"", "ff009e"); - $sad = new User("s_pfp", "first spider of the universe ඞ", "f1c40f"); - $mage = new User("m_pfp", "> ඞ", "faaaaa"); + $will = new User("w_pfp", "President Glup Shitto ඞ", "00ffb7"); + $vivi = new User("v_pfp", "vivi_", "ff009e"); + $sad = new User("s_pfp", "first Mithrun of the universe ඞ", "f1c40f"); + $mage = new User("m_pfp", "beatboxing puppy fan", "faaaaa"); $celian = new User("c_pfp", "ᘛ⁐̤ᕐᐷ𝕤𝕝𝕦𝕥ಡඞ𐐘𐑀", "73fbff"); $thom = new User("t_pfp", "Tomato ඞ", "567c2d"); - $goon = new User("g_pfp", "hatchgoon ඞ", "2c9c91"); + $goon = new User("g_pfp", "horny (short for hornworm) ඞ", "2c9c91"); $portals = new User("p_pfp", "portalsandart ඞ", "5a397d"); $joy = new User("j_pfp", "JoyTheBoi ඞ", "a2ff00"); function echo_message($person, $message, $first_in_exchange = false) { @@ -77,6 +82,18 @@ error_reporting(E_ALL); } ?> fortunately I have killed weezer", true); + echo_message($will, "furries can be trusted to decide who should live and who should die", true); + echo_message($celian, "I'm a slut for polls", true); + echo_message($celian, "i dont like homosexuality", true); + echo_message($vivi, "internalized frog-phobia", true); + echo_message($mage, "I think it's fucked up you can't just kill people", true); + echo_message($mage, "babygirl you piss so bad what the fuck", true); echo_message($joy, "There's something about digitally altered screams of anguish that really stick in my mind", true); echo_message($mage, "I would change it to daddy's little slut or something. To inflict maximum damage. But rat slut amongus family is good...", true); echo_message($celian, "I think you just hate my water-soluble swag", true); diff --git a/guestbook/index.php b/guestbook/index.php index 0b2b367..c180351 100644 --- a/guestbook/index.php +++ b/guestbook/index.php @@ -181,8 +181,8 @@ You failed the bot check!"; } ?> - Bot test (type isopod)* - + Bot test (six-letter scientific term for a roly-poly or woodlouse)* + Successfully posted!"; } ?> diff --git a/index.php b/index.php index 595bdf7..872c98f 100644 --- a/index.php +++ b/index.php @@ -9,6 +9,28 @@ margin-top: 0; margin-bottom: 0; } + + main { + height: 100%; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + } + main > :is(div, nav) { + width: 100%; + } + + #webrings > div { + margin: var(--stdpadding); + } + #webrings div :is(a, span) { + padding: initial; + margin: initial; + background: none; + border-left: none; + } + #guys { position: fixed; bottom: 0; @@ -16,7 +38,7 @@ font-size: 0; } #guys > * { - margin-right: 0.5rem; + margin-right: var(--stdpadding); } #bubblecolumn { position: absolute; @@ -27,27 +49,6 @@ background-image: url(images/bubblecolumn1.gif); background-repeat: repeat-y; } - main { - height: 100%; - display: flex; - justify-content: center; - align-items: center; - } - #webrings { - display: grid; - grid-template-columns: auto auto; - gap: 1rem; - } - #webrings > div { - display: flex; - align-items: center; - justify-content: center; - } - #webrings > div > * { - margin: 0 1rem; - white-space: nowrap; - } - #bucketfish, .bflink { --red: #ffcaca; --orange: #ffedc1; @@ -89,11 +90,6 @@ position: relative; } - #v3 { - font-size: .5em; - vertical-align: super; - white-space: nowrap; - } @media (prefers-reduced-motion) { #bubblecolumn { display: none; @@ -106,16 +102,19 @@ #rightsidebg { box-shadow: none; } - @media (max-width: 43rem) { - h1 { - font-size: 13.5vw; - } - h1 + h2#caption { - font-size: 1.1em; - } - #webrings { - grid-template-columns: auto; - } + main { + justify-content: initial; + height: initial; + } + #guys { + position: initial; + bottom: initial; + left: initial; + } + body { + display: flex; + flex-direction: column; + justify-content: space-between; } } @@ -142,7 +141,19 @@ if(!preg_match('/(headless.*)/i', $_SERVER['HTTP_USER_AGENT'])) { $captions = array(); $seasonal = false; - switch(date('m')) { + switch(date('m')) { + case 6: + $captions = array( + 'your gay', + 'the fuck is a gender', + 'trnasgener', + 'This site uses $_GAY_COOKIE_EQUIVALENT', + 'Supports LGBT!', + 'Banned in Florida!', + 'Are you cis or are you normal' + ); + $seasonal = true; + break; case 10: $captions = array( 'Boo!', @@ -180,7 +191,8 @@ 'MySite.html', 'Over Construction', 'Real isopod hours', - 'Version 3.0: the Not-Reliant-On-Javascript Update', + 'Version 3.1: The Accent Borders Update', + 'Version 3.1: The Tables Don\'t Look Like Shit Anymore Update', 'depytwisty', '[object Object]', '* You found the [Moss]!', @@ -216,7 +228,6 @@ 'cringe', 'don\'t smoke cigarettes kids they\'ll make your lungs sus', 'real life isopod', - '', 'holy fucking bingle', 'AI (Aquatic Isopod) generated', 'crubge', @@ -230,8 +241,9 @@ 'Delicious!', 'trnasgener', 'Opinionated!', - 'vewified', - 'Verified', + 'Eurorack compatible!', + 'Hackable!', + 'HiDPI!', 'COUNTER', 'TUEADAY', 'PLACEHIM', @@ -273,12 +285,6 @@ $tit = "certified Good Website by blåhaj"; echo ""; break; - case 'Verified': - $cap = ''; - break; - case 'vewified': - $cap = ''; - break; case 'Kind of dragon free!': $cap = 'Kind of dragon free!'; break; @@ -309,25 +315,25 @@
      -

      isopod.coolv3

      +

      isopod dot coolv3.1

      -
      +
      diff --git a/links/index.php b/links/index.php index f0d1303..d6b99b2 100644 --- a/links/index.php +++ b/links/index.php @@ -5,46 +5,14 @@ Links -

      outbound links

      the sequel to google (under construction)

      +

      Neighbours

      - - - - - - +
      -

      Neighbours

      -
      @@ -62,9 +30,9 @@

      Utility

      +

      Utility

      + @@ -248,13 +216,17 @@ + + + + - - - +
      Easy USSR A comprehensive beginner's guide to Legally Acquiring MediaUnconsenting Media Similar to doesthedogdie but for sexual violence in particular
      Can I Play That?An accessibility-focused videogame review site
      Spyware Watchdog An index of popular programs that meet an un-eroded definition of "spyware".

      Fun

      +

      Fun

      + @@ -331,15 +303,18 @@ - - - +
      Emoji Kitchen A litany of different emoji fusions. Some of my favourites are , , and XKCD A webcomic of romance, sarcasm, math, and language.

      Articles

      +

      Articles

      + + + + @@ -347,8 +322,11 @@ - + +
      Cory Doctorow - Tiktok's enshittification
      Kalechips - Your website needs to work on phones
      Axbom - The Creepy Sound of Online Trackers
      Folding Ideas - This is Financial Advice (⏵)
      hbomberguy - Vaccines and Autism: A Measured Response (⏵)

      More stuff

      Seirdy - A look at search engines with their own indexes
      +

      More Stuff

      + @@ -371,6 +349,6 @@
      τ
      -
      +
      diff --git a/music/index.php b/music/index.php index a0dba03..5efc91c 100644 --- a/music/index.php +++ b/music/index.php @@ -90,7 +90,7 @@ Matt Gray - The Last Ninja 2 (C64) OSTScalameriya - Aeon Core -
      +

      diff --git a/nav.php b/nav.php index 1b0a869..4f7da89 100644 --- a/nav.php +++ b/nav.php @@ -5,28 +5,24 @@ $host = $_SERVER['HTTP_HOST']; function echolink($url, $name) { global $host; if("/$url/" != $_SERVER['REQUEST_URI']) { - echo "$name"; + echo "$name "; } else { - echo "$name"; + echo "$name "; } } -echo ""; -echo ''; -echo ""; +echo("") ?> \ No newline at end of file diff --git a/stats/index.php b/stats/index.php index 698df49..2b441fe 100644 --- a/stats/index.php +++ b/stats/index.php @@ -6,21 +6,16 @@ Stats + -

      stuff i use

      -

      If your setup is different you're objectively stupid

      -

      Hardware

      -
        -
      • - My main computer is a desktop PC I built myself. I made some choices I regret, but nothing critical. I'm proud - of it. -
        - System specs -
          -
        • AMD Ryzen 7 5700G CPU. Chosen for the integrated graphics, which should come in handy if I'm ever - without a working GPU, and because it's cheaper than the 5800 with the same core count. Little did I know - it's the only component in my system with no PCIe 4 support.
        • -
        • Noctua NH-U12A CPU Cooler. Admittedly, a bit overkill. I bought it because the 5700G's stock - cooler was significantly underperforming. Imagine my shock when I took the old cooler off to discover I - had installed it wrong and it wasn't making even CLOSE to full contact! Whoops...
        • -
        • Gigabyte B550 AORUS PRO AC Motherboard. Bit of a fancy one. It's a wi-fi board, but I've since - upgraded to a wired connection. It still comes in handy for my bluetooth gamepad, though.
        • -
        • G.Skill 2 x 16GB DDR4-3600 CL18 Memory. Great memory. I originally thought the XMP profiles weren't - compatible with my CPU, but it turns out I just had to update my BIOS.
        • -
        • Samsung 980 500GB NVMe Boot SSD. It's a fine drive, but in retrospect it's way bigger than I - needed for just a boot drive and I wish I had chosen one with DRAM.
        • -
        • WD Blue 1TB SSD. This was originally a storage upgrade for my old laptop. I set it as the mount - point for my /home directory when I installed Linux on that machine, and transplanted it over to the new - one to keep all my stuff with very little hassle.
        • -
        • WD Black 4TB 7200RPM HDD. Fits my entire Steam library in less than half its capacity with loads - of space left over for all the, uhm, Linux ISOs I could want. My case has room for one more 3.5" drive, - and if I outgrow two of these I might just have to build a NAS.
        • -
        • AMD Radeon RX 6600XT GPU. I knew I was going to be using Linux when I designed the computer, so I - wanted to avoid Nvidia and their less than stellar Linux drivers if possible. Unfortunately, Blender performance - isn't too great and it is somewhat prone to crashing during Cycles renders, but it's better than nothing and the gaming performance is stellar. -
        • -
        • Corsair 110R ATX Mid-tower Case. Chosen because it was one of the only aesthetically tolerable - cases I could find with a 5.25" drive bay. It provides surprisingly good airflow for a solid front panel. - Getting the PSU hooked up with the drive cage in proved difficult, though.
        • -
        • Seasonic Focus Plus 650w 80+ Gold PSU. I'd heard good things about Seasonic, and my experience - thus far corroborates them. I'm very glad I didn't choose a Gigabyte model.
        • -
        • LG WH14NS40 Blu-Ray/DVD/CD Writer. I really wanted my PC to be compatible with optical media, and - this was the cheapest unit available that supported every relevant format. Apparently this one has some - weird firmware issue that stops you from ripping 4k blu-rays? Good thing I don't own any of those. Or a 4k - display.
        • -
        • 4x Arctic P12 Fans plus the fan that came with my case. These fans are cheap, decent, and you can - daisy-chain them.
        • -
        • BTF 1m 60-LED ARGB Strip. I told myself I didn't need lighting when designing the computer, then - bought this later when I realized I couldn't see through the tinted glass panel. I didn't want to overpay - for some PC-specific LED strip that might require proprietary software so I bought this generic one and an - adapter for the motherboard header. I control it with OpenRGB and a custom systemd service that turns it - off on shutdown. Weird that that isn't default behaviour.
        • -
        -
        -
        - Peripherals -
          -
        • My mouse is a Logitech G602 wireless - mouse that I've had for god only knows how long. I don't normally go for wireless peripherals or - proprietary dongles, but Logitech's wireless dongles are really good and the quality of their products - makes it worth it.
        • -
        • My keyboard is a Keychron - V3 (with knob) and accompanying Keychron Q0 for a numpad, because - the V3 is tenkeyless and I refuse to give up that numpad life. I got Keychron's in-house brown switches and - they're quite nice, and I look forward to tricking out the QMK firmware with all sorts of crazy macros and - bindings. My favorite part, though, is that it ships with both Windows and Mac alt/option and super/command - keys, so I can swap them around in an unintended manner to finally rid the keyboard for my Linux - computer of those wretched Windows logos!
        • -
        • I also have a very large enter key, just - because.
        • -
        • I have two 1080p monitors, a 24" 165Hz Gigabyte model and a 21.5" 75Hz HP one. Both are - fine, but were I to replace them I would go for something larger at a slightly lower framerate, possibly - at 1440p. I would not buy the HP monitor again - not that it's bad, but HP Eye Ease™ isn't something I want and I can't figure out how to turn it off.
        • -
        • My webcam is a Logitech C925e. The picture quality is good, and the microphone quality is what - you'd expect out of a webcam. I'm a huge fan of the built-in privacy shutter. I'm just that sort of - paranoid.
        • -
        • The microphone is an Audio-Technica AT2020 USB+. The sound quality out of it is superb. I would - have bought the non-USB version, but I didn't want to shell out for an audio interface. It sits on some - random $20 mic arm off Amazon.
        • -
        • I also have an Xbox One wireless controller. I thought for the longest time it wouldn't work with - Linux because I was trying to connect it with a cable, but one day I attempted to connect it via bluetooth - out of desperation and it worked flawlessly!
        • -
        • I have this little wireless - doodad from Silverstone that connects to an internal USB header and lets me turn my computer on and off via - a wireless remote, because I'm just that lazy.
        • -
        -
        -
        - Pictures - - - My computer tower. The CPU heatsink, graphics card, and RAM are prominently visible through the glass side panel. An optical drive is also visible on the front. - - - - Closer shot of the inside of my compter with the glass side panel removed. My shoddy cable management is on full display. - -
        -
      • -
      • - I also have an old HP Pavilion 15-dk0030nr gaming laptop being used as a home server. -
        - More details -

        This is the laptop I upgraded from to my current PC. It's got an Intel i7-9750H, 32GB of RAM (upgraded from - 8GB stock), a GTX 1660Ti Max-Q GPU, and entirely too much hard drive space. It's currently running TrueNAS and being used as a Jellyfin server, - backup location, and some other stuff probably. Learn more about it here.

        -
        -
      • -
      • - I host this website on a DigitalOcean droplet I rent with 4GB of RAM and 2 CPU cores running Ubuntu server. -
        - More details -

        I'd host more on the laptop if I wasn't so worried about uptime and latency and I could be bothered to move it all now. - This thing is running this website, an Akkoma instance, an RSS bridge, a SearXNG instance, WireGuard to - get the laptop past the NAT in my house, a Forgejo instance, a Nextcloud instance, a Matrix server, and probably some other stuff I forgot about.

        -
        -
      • -
      • - My phone is a Google Pixel 4a. -
        - More details -

        I said I was going to wait until my old LG K61 became unusable before replacing it. I thought I'd failed to do that right up until - its replacement, a used flagship from the same time period, arrived and blew it out of the water in almost every way. I never noticed - up until now just how painfully unresponsive my old phone was. Mobile websites are, like, usable now!

        -

        Performance was never a consideration in buying the phone, though. I'm not a huge fan of the idea of using a Google device, but the Pixel line are the only devices supported by - Graphene OS. But why the 4a in particular? There are more recent, largely better models within my price range. - Mainly, I chose to get the specific model I did because it was the last Pixel device to be released with two important attributes: the presence of a headphone jack, - and the lack of 5G support.

        The headphone jack, I think, is self-explanatory. I never intend to purchase a phone without one if I can avoid it. As for the 5G, - I had been watching a lot of, like, Mental Outlaw and shit and was paranoid about my phone being trackable with the beam forming technology that 5G employs. - (To be clear, it is kind of creepy how precise it is, but I think if it's being used against me by the government I have bigger problems.) -

        -
        -
      • -
      • I have a Nintendo Switch that, admittedly, doesn't see much use. Kirby and the Forgotten Land was good, - though. Unfortunately, I don't have one of the early ones that can be softhacked, otherwise I would have for - sure done so by now.
      • -
      • I've softmodded my New 2DS XL and you should too. It's really easy.
      • -
      • I have two pairs of headphones: a modded Beyerdynamic DT 770 Pro (80 Ohm) from - Custom Cans, and a pair of KZ ZSN - wired earbuds. -
        - More details -

        The main factor that drove me to choose Beyerdynamic for my headphones was build quality. Durability was - already important to me, but after my previous headphones from Audio-Technica snapped after only a year I - was determined not to let that happen again. Supposedly this company's headphones are built really well. - Beyond that, these are studio headphones, and I wanted something that was good for musician-ing, on the rare - occasion I actually do that. From what I've been able to discern so far, they certainly live up to the "studio" - moniker. The audio quality is very nice. The one issue I have with these headphones is that they don't have a - removable cable, which is why I had mine modded. They've got a mini-XLR port now!

        -

        As for the earbuds, you should buy them. They are quite literally the best earbuds I've ever used. They're - cheap, the sound quality is good, and the build quality is absolutely stellar. I've spent three times as - much on headphones that are worse in every way.

        -
        -
      • -
      • I have a Prusa MINI+ 3D printer. It's very nice. -
        - More details -

        I went with a Prusa because they had a reputation for quality, and this thing did not disappoint. The assembly instructions were good and the user experience is very smooth. It does a lot of things for you that I suspect would have been pain points for me had I bought a cheaper printer. I'm a huge fan of the ability to send it gcode files remotely using the built-in webserver. Also, PrusaSlicer is quite good.

        -
        -
      • -
      • I have a Netgear GS305 unmanaged network switch for connecting all the devices in my room to ethernet. It works, no complaints.
      • -
      +

      my setup

      +

      If yours is different you're objectively stupid

      +

      Computers

      + compier +

      My main PC, a mid-tower desktop "designed" and built by me, boasting a Ryzen 5700G, 32 gigs of DDR4, something like 6 terabytes of storage, a comically overbuilt PSU, and a graphics card. It runs arch, btw.

      +

      pavilion

      +

      An HP Pavilion gaming laptop that I've put TrueNAS on and heavily modified to accept an array of HDDs, boasting 32GB of aftermarket RAM and 64TB (raw) of extremely aftermarket spinning rust. Read about its conception and construction here.

      +

      It currently runs Jellyfin, an SMB share for backups and such-like, and eventually maybe some game servers.

      +

      cumulus

      +

      A 2-CPU, 4GB VPS that runs this website and like a dozen other things, most of which I even use!

      +

      Google Pixel 4a

      +

      This counts as a personal computer.

      +

      I bought this phone for $200 refurbished, because it was the most recent Pixel with a headphone jack and I wanted to put Graphene OS on it, and I refuse to give a shit about raw performance in a fucking smartphone, or 5G for that matter.

      +

      As much as I don't believe in the importance of performance on smartphones, I must admit that when I upgraded to this from an LG K61, a phone from the same year that was worth $200 new, the difference in responsiveness was significant. I feel I mostly have incompetent web developers to thank for that, though.

      +

      Consoles

      +

      New 2DS XL (Hacked)

      +

      Did you know it's surprisingly easy to hack your 3DS? Do it now!

      +

      Nintendo Switch

      +

      Don't get the impression here that I love Nintendo or anything. I've had both of these consoles for years, since back when we knew they were litigious but they weren't like, sending paramilitary death squads after the Yuzu devs or whatever they're up to now of days.

      +

      Anyway, I've done a shell swap on my switch and joycons to make them clear! Check this dope shit out:

      + Front view of a Nintendo Switch with clear plastic shells on the joycons + Back view of a Nintendo Switch with clear plastic shells on the joycons and console +

      Other Hardware

      +

      Prusa MINI+

      +

      I bought a Prusa because their printers have a reputation for quality, which this unit has certainly lived up to. It's been quite reliable, and when it fails, it's usually my fault in a really obvious way. It automates a lot of features that I suspect would have been pain points on a cheaper printer, up to and including uploading gcode to it directly over the network. This thing's easier to use than a regular 2D printer!

      +

      My one major issue is that the cantilevered gantry results in a slight inaccuracy in the Z axis, meaning the first layer is too high on one side of the bed and too low on the other. I suspect that this is why they didn't make it bigger, although it could also just be my fault for going and ordering the un-assembled kit version to save money on assembly.

      +

      I run mine with Prusa's satin textured bed plate for easier removal of PETG parts (I managed to damage the included smooth plate printing big stuff in PETG) and a hardened steel E3D Nozzle X™ for printing with filaments with abrasive additives. I'd like to upgrade the hotend to a Revo one at some point if I can find the money.

      +

      CyberPower CP1500PFCLCD

      +

      A UPS I bought to run my computer, server, and related paraphernalia off of. I got it for all the normal reasons you get a UPS (power outage protection and such-like) and it has thus far performed as advertised. It has yet to be put to the test in a real power outage, but it's kept my computer alive through a couple blips at this point. Highly recommend getting one.

      Software

      -
        -
      • - I use arch, btw. Well, EndeavourOS, but close enough. -
        - More details -
        - furious tirade about Windows -

        Seriously, fuck Windows and fuck Microsoft. I've watched them spend the past several years strong-arming - hardware manufacturers into making it harder and harder to install anything but their terrible product on - hardware YOU own in the name of "security". I first noticed it with secure boot, and they've continued - this trend recently with Pluton, a anti-competition - "security" chip built directly into the CPU. As far as I can tell, both of these things can be disabled in - the BIOS (for now), but how long until they can't? Honestly, at this point, I'm running Linux partially - out of sheer spite, as a middle finger to every corporation that thinks they have the right to control - what I do with my hardware.

        -

        Apple's even worse, mind you. Say what you will about performance and power efficiency, but I'm convinced - the main reason Apple has started making their own CPU architectures is as the nuclear option to finally - kill the Hackintosh. For as long as I've been alive Apple has spearheaded every anti-consumer movement in - every industry they're in. I swear, every time someone responds to a complaint about Windows or Android by - recommending an Apple product I get a little bit closer to snapping and beating Tim Cook to death with a - broken iMac. This isn't 1983, motherfucker. Buy something you can fix.

        -
        -

        I have a long history with Linux. The first computer I ever owned was a Chromebook, and I wanted to play - Minecraft on it, which Chromebooks famously can't do, - so naturally the logical solution was to install Linux on the thing with Crouton in order to run it. It was - incredibly sketchy, janky, and not exactly performant, but I got my Minecraft and that was what mattered. I - killed it 9 months in by overworking its poor little passively - cooled Celeron CPU, and after that I mostly stuck with Windows on the two HP laptops I had over the - next six years for software compatibility reasons, but I tried to switch back to Linux occasionaly.

        -

        I finally pulled it off in 2021, when I used a combination of upsetting news about Windows 11 and a - storage upgrade to my laptop as my excuse to switch. Software compatibility on Linux still isn't quite there - yet, but I didn't use a lot of Windows-only programs outside of Paint.NET and games anyway, and game - compatibility has improved leaps and bounds with Valve's Proton/Steam Play. Shame I can't play any of the - games I got for free on the Epic launcher, though.

        -

        So why EndeavourOS in particular? Mainly, it ships with my desktop environment of choice and it's based on - Arch so I get the AUR and to tell people I run Arch, btw. I used to use Manjaro for the same reasons but I - got sick of the long wait times for new package updates and generally just wanted a fresh start after I - installed Plymouth and then it broke, leaving my computer still bootable but breaking all my custom systemd - services for some reason. Before that I used System76's Pop!_OS on my laptop because it shipped with Nvidia - drivers preinstalled.

        -
        -
      • -
      • -

        My phone runs Graphene OS. It's a hardened fork of the Android Open Source Project with all of Google's proprietary spyware stripped out. It's the only reason I bought a Pixel and it's very nice. I'd go into more detail, but the devs do a great job of that on their website.

        -
      • -
      • - I use Firefox as my main web browser - outside of testing. On mobile I use the Fennec fork. -
        - More details -

        I really like Firefox. It's customizable as hell, the dev tools are better, and it's designed to keep your - data private from the likes of Google and Facebook. No, I won't call them fucking meta.

        -

        On top of that, Firefox is genuinely incredibly important. It's the only modern browser left outside of - Safari that isn't built on top of Google's Chromium, and for that reason it's critical that it stays - significant because the alternative is Google (and MAYBE Apple) having the complete final say over every web - standard, and I shouldn't have to explain why that would be really, really bad.

        -

        Seriously, please switch to Firefox. It can import your data from other browsers like Chrome, so the - transition should be pretty well seamless. Although, if you're willing to get into the weeds a bit, I'd - recommend using this profile generator to fortify your browsing - experience even further.

        -
        -
      • -
      • For Chromium testing and the occasional poorly-built website that just doesn't want to run in Firefox, I use Ungoogled Chromium.
      • -
      • I currently use the News app on my self-hosted Nextcloud instance for RSS, with the default Android app.
      • -
      • Loathe as I am to admit it, Microsoft's Visual Studio Code is really good. Which is why I use VSCodium, an open-source build with all the telemetry - stripped out. -
      • -
      • Blender does goddamn everything. It's almost scary. I - use it for visual art, video creation, and modeling and have since mid-2020.
      • -
      • - REAPER has the benefits of being both available for Linux - and sanely priced. -
        - More details -

        As of writing (2022-07-18), I haven't released any music made in REAPER yet, but I already like it a hell - of a lot more than LMMS, which is what I've used to make most of my music up until this point. LMMS is a - free DAW with some great built-in synth plugins and the ability to run Windows VST instruments on Linux - natively, and basically nothing else going for it. It's missing a lot of basic functionality that every - other DAW I've seen has and what is there is laid out in a really idiosyncratic way. That said, it's capable - of making some pretty good stuff.

        -

        As for why REAPER in particular, it's the cheapest one there is by a good long way, especially for a - version without artificial limitations (cough cough FL STUDIO), and it's available for Linux. It does - have some problems remembering my settings for the one non-native plugin I currently use, but that seems to - be a problem with the LV2 plugin standard, so I can't really hold that against it.

        -
        -
      • -
      • GIMP is, frankly, the best photo editor available on - Linux. I'm more comfortable in Paint.NET and would probably still be using it if I could get it running in WINE. -
      • -
      • The music player I currently use is Rhythmbox. I also quite - like Elisa, but that one doesn't conform to my theming in XFCE and it bugged me.
      • -
      • For everything that isn't music, I default to VLC. - It's a free and open-source everything player.
      • -
      • For basic PDF editing, I use Firefox. Did you know it can do that now? For more advanced stuff, the only option I'm aware of is Scribus.
      • -
      • I download my, uh, Linux ISOs with qBittorrent. - uTorrent is adware, don't get anywhere near it.
      • -
      • I use Syncthing to sync my photos, music library, etc. - between my phone and my PC. It's simple, reliable, and fully automatic. Eat your heart out, iTunes.
      • -
      • zsh largely out of peer pressure from the greater Linux - community. I'm not enough of a power user to notice much of a difference compared to bash, but I do like being - able to customize my shell prompt. -
        - More details - -
        -
      • -
      • Guake and whatever other terminal emulator ships - with my distribution. -
        - More details - I also have a heavily customized fetch script I'm currently itching to show off: - A heavily customized HyFetch (neofetch with pride flags, essentially) featuring, among various stock readouts, fully custom GPU and GPU load and temperature readouts, a fully custom indicator of what media is playing, and a custom to-do list. All of this stuff is absolutely caked in dynamically drawn Unicode box drawing characters and ANSI control codes. The ASCII Manjaro logo has nonbinary pride flag colors. The color theme at play is gruvbox. -
        -
      • -
      +

      Desktop Operating System - EndeavourOS (Linux)

      +

      My main computer runs EndeavourOS with the GNOME desktop environment. I chose it mostly to get the AUR, which has occasionally proved useful, but at this point I'm kind of stuck here because all the config files for my programs are in standard locations, god forbid, and everyone else is on flatpaks now, which fuck that all up for no good reason. I once failed to switch to Fedora because of this.

      +

      I have a long history with Linux, dating back to 2015 with the first computer I ever owned: a Chromebook that I put Linux on to play Minecraft, which ChromeOS couldn't do in any meaningful capacity at the time. It took me all of nine months to blow it up doing that because it was passively cooled with a plastic shell and not designed to ever go above ~30% usage on the dinky little Celeron that was its excuse for a CPU. After that I got a real PC running Windows, which solved the Minecraft problem so I mostly stuck to that for the next six years, although I did make intermittent attempts to switch to Linux again.

      +

      I pulled it off for real in 2021, when I took a combination of upsetting news about the upcoming Windows 11 and an SSD upgrade to my laptop as an opportunity to swap out my operating system as well. It went pretty well, all told; I wasn't using much Windows-exclusive software other than Paint.NET and some games, the latter of which now run great on Linux anyway thanks to Valve's efforts with Proton. Shame I can't play all my Epic Games Store freebies anymore, though.

      +

      My current desktop environment of choice, as previously mentioned, is GNOME. I used to run XFCE, and KDE before that, but I got sick of all my stuff occasionally breaking on me and wanted to see if GNOME would be sufficiently UX-designed that it would Just Work™ and Not Get In My Way™ and all that. So far so mostly good. I was worried about how well Wayland would work, but it's basically fine, with the exception of Discord not playing nice with regards to screensharing.

      +

      Mobile Operating System - Graphene OS (Android)

      +

      My phone runs Graphene OS, a hardened, de-googled fork of the Android Open Source Project. I bought a Pixel specifically to run this and I'm glad I did. It's very nice. I'm especially a fan of the improved control over app permissions.

      +

      Web Browser - Firefox

      +

      I quite like Firefox. It's extremely customizable, especially if you know where to look, the devtools are better, and there's a wealth of privacy tools available that just kind of don't exist in Chrome (including adblockers as of late). It can also edit PDFs now!

      +

      On top of being generally superior, I also use Firefox on principle. It's currently the only major browser outside of the Apple-exclusive Safari that isn't built atop Google's Chromium, and I don't like the idea of Google having total monopolistic control over all web browsers.

      +

      Firefox is one of the only pieces of software I'll actively advocate switching to, so go do it. Do it now. It, like essentially all other browsers, can import your data from its competition, and I'd also recommend using this profile generator to fortify it for maximum privacy while you're at it.

      +

      All that said, Mozilla is under questionable management at the moment and kind of in Google's pocket anyway, so maybe we shouldn't be relying completely on them to champion the free web. Maybe throw some money in the general direction of the Servo project.

      +

      I use the Fennec fork of Firefox on mobile, and Ungoogled Chromium for the occasional poorly-built website (usually streaming services, work stuff, or banks) that doesn't want to run in my weird paranoid Firefox config.

      +

      RSS Reader - Nextcloud News

      +

      It's not so much that I like Nextcloud's RSS reader, it's more that it's the best one I've found that syncs my feeds between devices and updates them regularly in the background. If I could find a nicer, more polished one, I'd probably switch to that. Let me know if you find one.

      +

      IDE - VSCodium

      +

      Microsoft's Visual Studio Code is, loathe though I may be to admit it, my favourite IDE I've ever used, which is why I use VSCodium, an open-source build of VSCode with all the telemetry and shit stripped out.

      +

      3D Graphics - Blender

      +

      Lucky that the only 3D graphics program available on Linux just so happens to also be the best one. I use this sucker for just about everything it can theoretically do, from CAD to video editing, and even some things that it's actually good at!

      +

      Photo Editor - GIMP

      +

      Honestly, what were you expecting? If you want to edit raster graphics on Linux, GIMP is more or less the be-all-end-all, unless you want to do everything in the terminal with ImageMagick. I'd prefer to use Paint.NET or even my Legally Obtained DRM-free copy of Photoshop CS6, but somehow photo editors are one of the only things that are consistently incompatible with WINE. I've been meaning to give Photopea a shot.

      +

      DAW - REAPER

      +

      My primary motivation for choosing REAPER is that it's available for Linux. My secondary motivation is that it has a lot less of the bizarre idiosyncracies and feature omissions that I found limiting when I was using LMMS. It's also cheaper for a perpetual license than even the shittiest most artificially-limited versions of most of the other major DAWs, although it's not like I can run any of them anyway.

      +

      Media Players - Rhythmbox, MPV, VLC

      +

      I use Rhythmbox for music, MPV for video, and VLC for anything that doesn't open one of the other two when I click on it. All three are very boringly good at what they do, and all three are varying levels of fugly.

      +

      Torrent Client - qBittorrent

      +

      This is the program I use to download my, uh, Linux ISOs. And local copies of Wikipedia. At least one of those is actually true. I've got it configured to only work through my VPN. I don't know if my ISP would actually get on my case if I torrented anything... unscrupulous without it, but I'd rather not risk it.

      +

      Syncthing

      +

      Syncthing is a peer-to-peer automatic file syncing program that I use to automatically sync files between my phone and PC, peer-to-peer style. It works really well and I really like it. I get my photos on my PC and my music library on my phone with zero effort!

      +

      Shell - zsh

      +

      I switched to zsh largely due to ambient peer pressure from the wider Linux community, and I doubt I'm taking full advantage of its many advanced features, whatever those are, but I do quite like how conducive it is to customization with such programs as Oh My Zsh and Powerlevel10k, and I miss its improved tab completion and command history functionality whenever I'm ssh'd into one of my servers.

      Yesterlinks A user-curated directory of nearly 600 off-the-beaten-path websites, formerly hosted by the Yesterweb project.