From 65a3e92d28437d33926e5482c9bc3c8008e88065 Mon Sep 17 00:00:00 2001
From: will
Date: Tue, 10 Sep 2024 04:42:07 -0600
Subject: [PATCH] - Restructured blog - Most blog posts are now written and
stored as markdown - Markdown parsing and dynamic rendering for blog posts
has been moved to a single file - Title for blog posts is now pulled from
atom feed, just like dates - Changed code block styling and slightly altered
content of some posts for compatibility with markdown parsing - Removed some
old blog posts I'm no longer proud of - Added link to deeptwisty.com to
navbar on /
---
blog/blog.atom | 51 +--
blog/posts/ai_art/index.md | 76 ++++
blog/posts/ai_art/index.php | 65 +---
blog/posts/building_a_normal_server/index.md | 174 +++++++++
blog/posts/building_a_normal_server/index.php | 133 +------
.../index.php | 10 -
blog/posts/discord/index.md | 204 +++++++++++
blog/posts/discord/index.php | 332 +-----------------
blog/posts/fediverse_dms/index.php | 28 +-
.../guide_blacklist_websites_searxng/index.md | 21 ++
.../index.php | 38 +-
.../guide_blocking_user_agents_nginx/index.md | 73 ++++
.../index.php | 71 +---
.../nginx.svg | 2 -
.../index.php | 28 +-
.../index.md | 78 ++++
.../index.php | 61 +---
blog/posts/make_your_own_cables/index.md | 33 ++
blog/posts/make_your_own_cables/index.php | 1 +
blog/posts/my_terrible_distro_hop/index.md | 116 ++++++
blog/posts/my_terrible_distro_hop/index.php | 92 +----
blog/posts/post.php | 45 +++
blog/posts/post_dates.php | 18 -
.../index.md | 55 +++
.../index.php | 55 +--
.../unity.svg | 22 --
greenhouse/index.php | 3 +
nav.php | 4 +-
style.css | 37 +-
29 files changed, 927 insertions(+), 999 deletions(-)
create mode 100644 blog/posts/ai_art/index.md
create mode 100644 blog/posts/building_a_normal_server/index.md
create mode 100644 blog/posts/discord/index.md
create mode 100644 blog/posts/guide_blacklist_websites_searxng/index.md
create mode 100644 blog/posts/guide_blocking_user_agents_nginx/index.md
delete mode 100644 blog/posts/guide_blocking_user_agents_nginx/nginx.svg
create mode 100644 blog/posts/guide_how_to_automount_drives_on_boot_in_linux/index.md
create mode 100644 blog/posts/make_your_own_cables/index.md
create mode 100644 blog/posts/make_your_own_cables/index.php
create mode 100644 blog/posts/my_terrible_distro_hop/index.md
create mode 100644 blog/posts/post.php
delete mode 100644 blog/posts/post_dates.php
create mode 100644 blog/posts/unity_runtime_fee_and_proprietary_software/index.md
delete mode 100644 blog/posts/unity_runtime_fee_and_proprietary_software/unity.svg
diff --git a/blog/blog.atom b/blog/blog.atom
index a0b2d06..df5169a 100644
--- a/blog/blog.atom
+++ b/blog/blog.atom
@@ -12,6 +12,17 @@
+
+ You Should Learn To Make Cables
+ make_your_own_cables
+
+ 2024-09-09T00:00:00+00:00
+ 2024-09-09T00:00:00+00:00
+ I saved $140 by splicing together my own audio cables, and you can too!
+
+
+
+ Admins Can Read Your DMsfediverse_dms
@@ -114,7 +125,7 @@
discord2023-06-28T00:00:00+00:00
- 2024-04-27T00:00:00+00:00
+ 2024-09-10T00:00:00+00:00Why Discord sucks, and how to find something that doesn't.
@@ -125,7 +136,7 @@
guide_how_to_automount_drives_on_boot_in_linux2023-04-26T00:00:00+00:00
- 2023-04-26T00:00:00+00:00
+ 2024-09-10T00:00:00+00:00How to configure a Linux system to automatically mount drives on boot by editing /etc/fstab.
@@ -135,13 +146,13 @@
guide_blocking_user_agents_nginx2023-02-23T00:00:00+00:00
- 2023-02-23T00:00:00+00:00
+ 2024-09-10T00:00:00+00:00How to configure Nginx to tell Cloudflare and their shitty centralized Fediverse server to go fuck themselves. And other unwelcome stuff too, I guess.
-
+
deeptwisty.com 2nd anniversary - A History of This Bullshitdeeptwistycom_2nd_anniversary_-_a_history_of_this_bullshit2022-09-19T00:00:00+00:00
- 2024-07-06T00:00:00+00:00
+ 2024-09-10T00:00:00+00:00An abridged history of my presence on the World Wide Web, from my first customized Tumblr pages to now.
@@ -176,32 +187,4 @@
-
- Late May Updates
- Late_May_Updates
-
- 2022-05-21T00:00:00+00:00
- 2022-05-21T00:00:00+00:00
- In which I discuss my evolving understanding of my sexuality, among other miscellaneous updates.
-
-
-
- Second
- Second
-
- 2022-04-25T00:00:00+00:00
- 2022-04-25T00:00:00+00:00
- A rant about the world's worst game that I think you should play.
-
-
-
-
- First
- First
-
- 2022-04-13T00:00:00+00:00
- 2022-04-13T00:00:00+00:00
- I've got a blog now!
-
-
diff --git a/blog/posts/ai_art/index.md b/blog/posts/ai_art/index.md
new file mode 100644
index 0000000..d294df0
--- /dev/null
+++ b/blog/posts/ai_art/index.md
@@ -0,0 +1,76 @@
+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.
+
+
+
+## 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 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
+
+Look, I know this isn't guaranteed to stay true forever, but in my subjective opinion, everything AI-generated kind of looks like shit. AI images, especially those meant to look like human-made art, all have this incredibly pristine, generic vibe to them, when they're not completely failing at some proportion or dimension or property of euclidean space or other. It's palpably soulless.
+
+AI text is no better. Hopefully you picked up on this in the ChatGPT post, but that thing has a distinctive, kind of shitty writing style. It makes a lot of vague, general statements and often just restates your input in this verbose, sort of professional-sounding way. It takes nine paragraphs to explain in detail a concept that can be boiled down to two or three sentences and adds absolutely nothing of substance in that space. It's like a lazy high school student trying to hit a minimum word count, but with the tone of a WSJ opinion piece.
+
+And the thing is, ChatGPT and similar commercially available LLMs might *have* to be like this, all wishy-washy and nonspecific. Remember those cases where ChatGPT would like, [implicate a real person in a hallucinated sexual harassment scandal](https://www.washingtonpost.com/technology/2023/04/05/chatgpt-lies/)? These things have no concept of truth, and no mechanism for ensuring it. If you let them get too specific, they're basically guaranteed to start spitting out lies. Large language models are models of *language*, not reality. They can either sometimes make up bullshit, or always say essentially nothing.
+
+AI voice-fakes are actually really impressive though. No notes. Probably shouldn't exist though.
+
+## It's all spam to me
+
+The most common use case I've seen for AI tools is making spam. There were content mills before, but they at least required a significant degree of human input or else it was obvious. With the advent of generative AI for text and voices, the Youtube shorts tab has gone from TTS bots reading scraped reddit posts to AI voices reading dubiously reliable AI summaries of current events, superhero comics, you name it, sometimes with AI-generated background images.
+
+Even worse is websites that do this. You've probably heard of that one time Redditors [tricked a bot-run news site](https://arstechnica.com/gaming/2023/07/redditors-prank-ai-powered-news-mill-with-glorbo-in-world-of-warcraft/) into publishing an article about the introduction of Glorbo into World of Warcraft and its impending impact on the game. That site is one of thousands, possibly more. It's a vile, disgusting enterprise, massive systems dedicated to pumping out endless filler, generated by machines for machines with the hope of tricking some innocent humans into clicking on a search result and generating some ad revenue. It's the latest and quite possibly the to-date greatest step in the enshittification of major search engines and the death of the internet as a useful platform for seeking out information.
+
+This is the vibe I get when I see *anything* made with AI now. It's all low-to-no-effort slop, utter garbage that I'm frankly offended that I have to see, given it clearly wasn't important enough for anyone to be bothered actually making it.
+
+## It's not fucking art
+
+The term "art" simply does not apply to AI-generated images. When you use one of these things, you give it instructions in the form of human-readable text and a finished image pops out the other side. The amount of creative control you get is on the order of the general vibe; you've outsourced every actual creative decision to the machine.
+
+It's like if you commissioned a piece from an artist. When you commission art from a human, you didn't make the art. They did, at your behest, based on your instructions, presumably in exchange for money. When you use an AI, you didn't make the art, the computer made the art based on your instructions. The thing is though, the computer didn't make art either. It categorically can't. It's a mindless algorithm, it doesn't have thoughts or feelings or any kind of interior experience. Hence, no art was produced. AI art isn't art.
+
+## Environmental & ethical concerns
+
+The problems with AI from a moral standpoint are myriad. For one, AI is incredibly resource and energy intensive. It uses datacenters full of the same GPUs and ASICs that power cryptocurrency to get anything at all done, and it doesn't use them any more efficiently. Untold gigawatts of power get dumped into running and cooling the machines that generate your little AI shitposts. From an environmental perspective, AI is to digital art what Bitcoin is to currency.
+
+Then there's the problems surrounding training data. All current major generative AI systems are trained using material that the companies building them did not get permission to use. You've probably seen artists and writers complaining about this online. What's more, the overwhelming majority of the labeling that needs to get done to make the training data actually useful is done by people in impoverished areas making slave wages *at best*. Generative AI is an ethical nightmare if you're *lucky*.
+
+## I don't buy the disability argument either
+
+I've seen some people claim that disabled people need AI tools to compensate for some disability that precludes the use of any other method to create art. I have some problems with this idea.
+
+Firstly, disabled people *can* make art, actually. It's nothing short of insulting and ableist to insinuate that *anyone* can only make art by outsourcing literally the entire creative process to an unthinking, unfeeling machine.
+
+Second, tough shit. No disability entitles you to the level of abject theft and human suffering that makes AI image generators possible. I'm generally all for anything that benefits accessibility, but in this case in particular I think you can just suck it up and deal. If you can do it ethically, using only images that you have the proper permissions for and data labeling done by either you or people who were adequately compensated for their labor to train the thing, fine. But a model or dataset like that does not, to my knowledge, currently exist, and I don't buy for a second that you're capable of doing all that work yourself but not of interfacing with MS Paint.
+
+## 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.
\ No newline at end of file
diff --git a/blog/posts/ai_art/index.php b/blog/posts/ai_art/index.php
index 9b55526..f572f79 100644
--- a/blog/posts/ai_art/index.php
+++ b/blog/posts/ai_art/index.php
@@ -1,64 +1 @@
-
-
-
-
-
- I Don't Like AI Art
-
-
-
-
-
-
-
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.
-
-
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 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
-
Look, I know this isn't guaranteed to stay true forever, but in my subjective opinion, everything AI-generated kind of looks like shit. AI images, especially those meant to look like human-made art, all have this incredibly pristine, generic vibe to them, when they're not completely failing at some proportion or dimension or property of euclidean space or other. It's palpably soulless.
-
AI text is no better. Hopefully you picked up on this in the ChatGPT post, but that thing has a distinctive, kind of shitty writing style. It makes a lot of vague, general statements and often just restates your input in this verbose, sort of professional-sounding way. It takes nine paragraphs to explain in detail a concept that can be boiled down to two or three sentences and adds absolutely nothing of substance in that space. It's like a lazy high school student trying to hit a minimum word count, but with the tone of a WSJ opinion piece.
-
And the thing is, ChatGPT and similar commercially available LLMs might have to be like this, all wishy-washy and nonspecific. Remember those cases where ChatGPT would like, implicate a real person in a hallucinated sexual harassment scandal? These things have no concept of truth, and no mechanism for ensuring it. If you let them get too specific, they're basically guaranteed to start spitting out lies. Large language models are models of language, not reality. They can either sometimes make up bullshit, or always say essentially nothing.
-
AI voice-fakes are actually really impressive though. No notes. Probably shouldn't exist though.
-
It's all spam to me
-
The most common use case I've seen for AI tools is making spam. There were content mills before, but they at least required a significant degree of human input or else it was obvious. With the advent of generative AI for text and voices, the Youtube shorts tab has gone from TTS bots reading scraped reddit posts to AI voices reading dubiously reliable AI summaries of current events, superhero comics, you name it, sometimes with AI-generated background images.
-
Even worse is websites that do this. You've probably heard of that one time Redditors tricked a bot-run news site into publishing an article about the introduction of Glorbo into World of Warcraft and its impending impact on the game. That site is one of thousands, possibly more. It's a vile, disgusting enterprise, massive systems dedicated to pumping out endless filler, generated by machines for machines with the hope of tricking some innocent humans into clicking on a search result and generating some ad revenue. It's the latest and quite possibly the to-date greatest step in the enshittification of major search engines and the death of the internet as a useful platform for seeking out information.
-
This is the vibe I get when I see anything made with AI now. It's all low-to-no-effort slop, utter garbage that I'm frankly offended that I have to see, given it clearly wasn't important enough for anyone to be bothered actually making it.
-
It's not fucking art
-
The term "art" simply does not apply to AI-generated images. When you use one of these things, you give it instructions in the form of human-readable text and a finished image pops out the other side. The amount of creative control you get is on the order of the general vibe; you've outsourced every actual creative decision to the machine.
-
It's like if you commissioned a piece from an artist. When you commission art from a human, you didn't make the art. They did, at your behest, based on your instructions, presumably in exchange for money. When you use an AI, you didn't make the art, the computer made the art based on your instructions. The thing is though, the computer didn't make art either. It categorically can't. It's a mindless algorithm, it doesn't have thoughts or feelings or any kind of interior experience. Hence, no art was produced. AI art isn't art.
-
Environmental & ethical concerns
-
The problems with AI from a moral standpoint are myriad. For one, AI is incredibly resource and energy intensive. It uses datacenters full of the same GPUs and ASICs that power cryptocurrency to get anything at all done, and it doesn't use them any more efficiently. Untold gigawatts of power get dumped into running and cooling the machines that generate your little AI shitposts. From an environmental perspective, AI is to digital art what Bitcoin is to currency.
-
Then there's the problems surrounding training data. All current major generative AI systems are trained using material that the companies building them did not get permission to use. You've probably seen artists and writers complaining about this online. What's more, the overwhelming majority of the labeling that needs to get done to make the training data actually useful is done by people in impoverished areas making slave wages at best. Generative AI is an ethical nightmare if you're lucky.
-
I don't buy the disability argument either
-
I've seen some people claim that disabled people need AI tools to compensate for some disability that precludes the use of any other method to create art. I have some problems with this idea.
-
Firstly, disabled people can make art, actually. It's nothing short of insulting and ableist to insinuate that anyone can only make art by outsourcing literally the entire creative process to an unthinking, unfeeling machine.
-
Second, tough shit. No disability entitles you to the level of abject theft and human suffering that makes AI image generators possible. I'm generally all for anything that benefits accessibility, but in this case in particular I think you can just suck it up and deal. If you can do it ethically, using only images that you have the proper permissions for and data labeling done by either you or people who were adequately compensated for their labor to train the thing, fine. But a model or dataset like that does not, to my knowledge, currently exist, and I don't buy for a second that you're capable of doing all that work yourself but not of interfacing with MS Paint.
-
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.
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
-
First, open up your instance's config file. If you installed it directly like I did, that'll probably be /etc/searxng/settings.yml. If you used Docker, god help you. Anyway, find the enabled_plugins: section and uncomment the entry for 'Hostname replace', then uncomment the line hostname_replace: just below it. Under there you'll put your blocks:
-
- $ service uwsgi restart searxng
-
-
-
-
+/etc/nginx/sites-available/yoursite
+
+```
+if ($http_user_agent ~* (wildebeest)) {
+ return 444;
+}
+```
+
+## More configuration
+
+If all you want is to block Wildebeest and forget about it, you can leave now. If you want to customize this behavior further, read on.
+
+### Different HTTP responses
+
+444 is a custom response code in Nginx that just drops the connection immediately. You can use any other HTTP error code you like, for example to return a `403 Forbidden` error:
+
+```
+ return 403;
+```
+
+To issue a permanent redirect to some other URL:
+
+```
+ return 301 https://example.org/;
+```
+
+Or just to be silly :3
+
+```
+ return 418;
+```
+
+### Block multiple user agents
+
+You can also block multiple user agents in one statement like so:
+
+
/etc/nginx/sites-available/yoursite
+
+```
+if ($http_user_agent ~* (wildebeest|GPTBot)) {
+ return 444;
+}
+```
+
+### Includes
+
+One thing I'd recommend doing is moving all your user agent blocks to a separate file that you can include in all your Nginx sites. I place this file at `/etc/nginx/includes/bans`:
+
+
+
+```
+include /etc/nginx/includes/bans;
+```
+
+The `include` statement goes in your `server` block as before.
diff --git a/blog/posts/guide_blocking_user_agents_nginx/index.php b/blog/posts/guide_blocking_user_agents_nginx/index.php
index 4088d37..f572f79 100644
--- a/blog/posts/guide_blocking_user_agents_nginx/index.php
+++ b/blog/posts/guide_blocking_user_agents_nginx/index.php
@@ -1,70 +1 @@
-
-
-
-
-
- Guide - How to Block User Agents With Nginx
-
-
-
-
-
-
-
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 afewreasons 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.
-
The way I've chosen to deal with this is to just configure my reverse proxy, Nginx, to deny connections from anything with "wildebeest" in the user agent string. There are several other good reasons to do this, such as blocking bots that ignore robots.txt, or adapting this approach to serve specialized pages to old browsers, or just denying access to anything that isn't Chrome if you want to earn your place in the 9th circle of Hell.
-
I'm assuming here that you already know the basics of configuring Nginx, otherwise this article won't really be of much use to you.
-
How to do it
-
Paste this into the main server block of your Nginx config to instantly drop the connection to any client with a "Wildebeest" (case insensitive) user agent:
If all you want is to block Wildebeest and forget about it, you can leave now. If you want to customize this behavior further, read on.
-
Different HTTP responses
-
444 is a custom response code in Nginx that just drops the connection immediately. You can use any other HTTP error code you like, for example to return a 403 Forbidden error:
-
- return 403;
-
-
To issue a permanent redirect to some other URL:
-
- return 301 https://example.org/;
-
-
Or just to be silly :3
-
- return 418;
-
-
Block multiple user agents
-
You can also block multiple user agents in one statement like so:
One thing I'd recommend doing is moving all your user agent blocks to a separate file that you can include in all your Nginx sites. I place this file at /etc/nginx/includes/bans:
The include statement goes in your server block as before.
-
-
-
+
-
\ No newline at end of file
diff --git a/blog/posts/guide_fix_youtube_buffering_firefox/index.php b/blog/posts/guide_fix_youtube_buffering_firefox/index.php
index a9a5e98..f572f79 100644
--- a/blog/posts/guide_fix_youtube_buffering_firefox/index.php
+++ b/blog/posts/guide_fix_youtube_buffering_firefox/index.php
@@ -1,27 +1 @@
-
-
-
-
-
- Guide - How to Make Youtube Videos Buffer All The Way Like The Old Days
-
-
-
-
-
-
-
guide:
-
How to Make Youtube Videos Buffer All The Way Like The Old Days (In Firefox)
- text(file_get_contents("index.md"));
- include("../../comment/form.php");
- ?>
-
-
+sudo blkid
+
+```
+/dev/sda1: UUID="YOUR_UUID" BLOCK_SIZE="4096" TYPE="YOUR_TYPE" PARTUUID="30aac87d-21c9-44a9-8033-108eede77f8b"
+```
+
+You'll probably have more than one though. There should be one per partition your system can see. We're interested in the `UUID` and `TYPE` attributes. Find the ones for the partition you want mounted and take note of them. We'll be adding these to your fstab file.
+
+## Editing your fstab
+
+First, make sure the directory you'll be mounting to exists. Create it if it doesn't. **Now make a backup of your fstab file in case you break things!** You can do this by simply copying the file:
+
+```
+sudo cp /etc/fstab /etc/fstab.bak
+```
+
+Now we can edit it. Open `/etc/fstab` in your favorite text editor, and you should be greeted with a file that looks something like this:
+
+![Screenshot of /etc/fstab on my computer before I did this](fstab.png)
+
+(This is the fstab file EndeavourOS generated on install. Because I set it to use btrfs, it mounted the same partition like four separate times as subvolumes. Yours will likely be smaller if you didn't do this.)
+
+This information tells your system which partitions should be mounted and at which locations to mount them, as well as some other settings. We don't need to worry about most of it, though. Simply append a line for your partition to the file:
+
+
/etc/fstab
+
+```
+#imagine the contents of your fstab file here
+UUID=YOUR_UUID /path/to/mountpoint YOUR_TYPE defaults 0 0
+```
+
+For example, here are the entries I added for my drives:
+
+
/etc/fstab
+
+```
+# btrfs partition on my /home drive
+UUID=44510605-9e1a-45cf-8e6b-bf7fd1c69502 /home btrfs defaults,noatime,compress=zstd 0 0
+
+# ext4 partition on my secondary HDD
+UUID=f8c3f1b1-7fef-4a01-bec7-ba3e89e2f8da /home/isopod/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.
+
+## The fast way
+
+Alternatively, you could just paste this into your terminal and then reboot:
+
+```
+partition="/dev/yourpartition"; directory="/path/to/mountpoint"; sudo cp /etc/fstab /etc/fstab.$(date +%s).bak; echo "UUID=$(sudo blkid $partition | sed "s/^.* UUID=\"//;s/\".*//") $directory $(sudo blkid $partition | sed "s/^.* TYPE=\"//;s/\".*//") defaults 0 0" | sudo tee -a /etc/fstab
+```
+
+But don't complain to me if you break your system doing that.
\ No newline at end of file
diff --git a/blog/posts/guide_how_to_automount_drives_on_boot_in_linux/index.php b/blog/posts/guide_how_to_automount_drives_on_boot_in_linux/index.php
index 06ab83d..f572f79 100644
--- a/blog/posts/guide_how_to_automount_drives_on_boot_in_linux/index.php
+++ b/blog/posts/guide_how_to_automount_drives_on_boot_in_linux/index.php
@@ -1,60 +1 @@
-
-
-
-
-
- Guide - How to Automount Drives On Boot in Linux
-
-
-
-
-
-
guide:
-
How to Automount Drives On Boot in Linux
-
-
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!
-
Now on to the good stuff
-
-
I recommend you log out and do this as root in a TTY if you intend to mount something as your home directory.
-
Getting partition information
-
First, run:
- sudo blkid
-
This will return a list of block devices (partitions) your system sees with some information about each, like this:
You'll probably have more than one though. There should be one per partition your system can see. We're interested in the UUID and TYPE attributes. Find the ones for the partition you want mounted and take note of them. We'll be adding these to your fstab file.
-
Editing your fstab
-
Make a backup of your fstab file in case you break things! You can do this by simply copying the file:
- sudo cp /etc/fstab /etc/fstab.bak
-
Now we can edit it. Open /etc/fstab in your favorite text editor, and you should be greeted with a file that looks something like this:
-
-
(This is the fstab file EndeavourOS generated on install. Because I set it to use btrfs, it mounted the same partition like four separate times as subvolumes. Yours will likely be smaller if you didn't do this.)
-
This information tells your system which partitions should be mounted and at which locations to mount them, as well as some other settings. We don't need to worry about most of it, though. Simply append a line for your partition to the file:
-
- /etc/fstab
- #imagine the contents of your fstab file here
- UUID=YOUR_UUID /path/to/mountpoint YOUR_TYPE defaults 0 0
-
-
For example, here's the entry I added for one of my drives:
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.
-
The fast way
-
Alternatively, you could just paste this into your terminal and then reboot:
-
- partition="/dev/yourpartition"; directory="/path/to/mountpoint"; sudo cp /etc/fstab /etc/fstab.$(date +%s).bak; echo "UUID=$(sudo blkid $partition | sed "s/^.* UUID=\"//;s/\".*//") $directory $(sudo blkid $partition | sed "s/^.* TYPE=\"//;s/\".*//") defaults 0 0" | sudo tee -a /etc/fstab
-
-
But don't complain to me if you break your system doing that.
-
-
-
+0, but it works.
+
+This isn't the only time I've had to do this, either — I, through a bizarre series of events, happen to own a piece of musical equipment made in the 1960s, in the Netherlands, with weird output jacks to match:
+
+![Male and female 2-pin DIN connectors](2pindin.jpg "By boffy_b - Own work, Copyrighted free use, https://commons.wikimedia.org/w/index.php?curid=1010205")
+
+These are 2-pin DIN connectors, from the same family as the 5-pin DIN connectors you may be familiar with from their use in MIDI ports. My device uses a pair of these for stereo output. I can only assume this was standard at the time, in the Netherlands, but where and when I live this type of connector is all but unheard of, to the point that there are *no* cables with it available whatsoever, only the bare connectors.
+
+In order to get this thing connected to my other equipment, I had to fashion my own adapter cable out of a stereo-to-dual-mono TRS splitter cable and two of those connectors purchased standalone from the internet.
+
+![A Stereo 1/4" TRS to dual mono 2-pin DIN adapter cable](homebrew2pindincable.jpg)
+
+I'm not going to attempt to teach you how to do this here — there's plenty of people on Youtube who are much more qualified to do that than me — but I think if you're at all comfortable messing with electronics this is a good skill to have. It's proven surprisingly useful to me, not just as a hobbyist who builds weird electronic gizmos for fun but as a casual enjoyer and maker of music.
+
+If this ever happens to you, consider saving the money on some bullshit expensive cable and spending it on some [soldering gear](https://pine64.com/product-category/pinecil/) instead. It's easier than you probably think it is and it can save you, like, a lot of money.
+
+---
+
+0. As of writing, I've ordered some cable sleeve to put over this. I'm not a monster. Remind me to replace this photo after it gets here and the cable looks presentable.
\ No newline at end of file
diff --git a/blog/posts/make_your_own_cables/index.php b/blog/posts/make_your_own_cables/index.php
new file mode 100644
index 0000000..f572f79
--- /dev/null
+++ b/blog/posts/make_your_own_cables/index.php
@@ -0,0 +1 @@
+1. 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.
+
+## Setup (Or Rather, My Doomed Attempt Thereof)
+
+I should say here that this isn't a review of Fedora as much as it is just me venting. It seems like it would be great for the kind of user it's designed for, but as it turns out that is *not* me. Honestly, a lot of this stuff may or may not have been my fault. Anyway, on to the pain.
+
+The first weird thing I noticed was that Firefox had reverted to the default profile instead of recalling my settings from before. Normal, except that I store my /home/ directory on a separate drive and the first thing I did was [reconfigure my fstab](../guide_how_to_automount_drives_on_boot_in_linux/) as such, so it should have seen the config files and just loaded them right up. Odd.
+
+I also had to manually install all the nonfree media codecs in order to watch videos on Youtube, but that's basically fine. Takes two seconds and you never have to think about it again. Would have been nice to be prompted for that on install, though.
+
+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 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](https://rosepinetheme.com/) 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.
+
+I have a couple issues with GNOME, though. I don't much like the MacOS-style grid of large icons as an app launcher, for one, having gotten used to the density of a barely-configured Rofi menu. I've also gotten used to seeing at a glance what programs I have open, from years of using basically every desktop environment but GNOME, from KDE to XFCE to fucking Windows. I'd like if that was available in, say, the positively barren top panel. I found an extension for that, but it doesn't seem to work properly.
+
+Beyond that, I've been acclimating to the fresh install pretty much fine. All my programs are set up the way I like them again, which is nice. Turns out GNOME ships with Wayland by default now, and it's actually been giving me fewer issues than I was expecting. Even gaming is fine from what I've seen so far (what kind of topsy turvy world are we living in where gaming is one of the EASIEST things to do on Linux?), but I did have to pass the flag `-platform xcb` to OBS to get it to run. Also, the state of graphical package managers on Arch is utterly abysmal, but that's neither here nor there.
+
+I do have one very difficult issue, though.
+
+## What Is The Fucking Deal With ProtonVPN On Linux
+
+I use ProtonVPN, and one of the things I attempted to do on Fedora was set it back up. I don't know what I did originally to dodge this, but trying to set it up recently, both on Fedora and on Arch, has been an excercise in navigating an insane maze of complete and utter bullshit.
+
+Proton lists Fedora as officially supported by ProtonVPN. Great! One issue: It Fucking Isn't, It Would Seem. The ProtonVPN client is only present in the Software Center as an unofficial GTK app (as opposed to the Electron app I'm used to (I know, ugh)) that refused to work. I went to Proton's website and followed the instructions there, only to end up with a very similar looking GTK app that very similarly didn't work. Awesome.
+
+Fortunately, ProtonVPN supports connecting using OpenVPN, and GNOME's network settings panel has an option for that built right in! I download the relevant configuration file from the ProtonVPN website and it also doesn't work. Even awesomer!
+
+Back on Arch, which is *not* officially supported, I install the AUR package that worked perfectly before and it fails. Trying to connect via the CLI (which, by the way, didn't exist in Fedoraland) with my usual settings gives this output:
+
+
protonvpn-cli c --cc CA -p udp
+
+```
+Setting up Proton VPN.
+Connecting to Proton VPN on CA#166 with UDP.
+
+Unable to connect to Proton VPN: Proton VPN connection failed due to unknown reason.
+```
+
+Tremendously fucking helpful. Why even bother having an error message if it's gonna tell me nothing?
+
+So I look up this "unknown reason" error and find a Github issue where someone says to run a `journalctl` command to see if there's any errors, and wouldn't you know it, I find one!
+
+
sudo journalctl -eu NetworkManager
+
+```
+"Proton VPN CA#166"]: secrets: failed to request VPN secrets #3: No agents were available for this request.
+```
+
+Progress! I think. I don't know what this means. I look up this error and find a different Github issue where someone claims to have fixed a similar issue by installing a package called nm-applet, which... doesn't seem to exist. Transcendantly spectacular!!!
+
+(Mind you, all this is going on on a repo that was archived some time last year, which seems ominous. Please tell me that weird GTK client from Fedora that's missing a CLI isn't the up-to-date official solution.)
+
+So I look up "nm-applet" and find a Stackoverflow thread from eight years ago where someone is describing an unrelated issue with an ancient version of GNOME and I learn that the package I'm looking for is actually called `network-manager-applet` and not `nm-applet` in the Arch repos for some reason. So I install it and run the `nm-applet` command, and, bracing for disappointment, run the command to start the VPN...
+
+
protonvpn-cli c --cc CA -p udp
+
+```
+Setting up Proton VPN.
+Connecting to Proton VPN on CA#70 with UDP.
+
+Successfully connected to Proton VPN.
+```
+
+huh.
+
+I think the Github user I learned this from says it best in their comment:
+
+
+
+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-'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.
\ No newline at end of file
diff --git a/blog/posts/my_terrible_distro_hop/index.php b/blog/posts/my_terrible_distro_hop/index.php
index 98103ed..f572f79 100644
--- a/blog/posts/my_terrible_distro_hop/index.php
+++ b/blog/posts/my_terrible_distro_hop/index.php
@@ -1,91 +1 @@
-
-
-
-
-
- My Terrible, Horrible, No-Good, Very Bad Distro Hop
-
-
-
-
-
-
-
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 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.
-
Setup (Or Rather, My Doomed Attempt Thereof)
-
I should say here that this isn't a review of Fedora as much as it is just me venting. It seems like it would be great for the kind of user it's designed for, but as it turns out that is not me. Honestly, a lot of this stuff may or may not have been my fault. Anyway, on to the pain.
-
The first weird thing I noticed was that Firefox had reverted to the default profile instead of recalling my settings from before. Normal, except that I store my /home/ directory on a separate drive and the first thing I did was reconfigure my fstab as such, so it should have seen the config files and just loaded them right up. Odd.
-
I also had to manually install all the nonfree media codecs in order to watch videos on Youtube, but that's basically fine. Takes two seconds and you never have to think about it again. Would have been nice to be prompted for that on install, though.
-
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 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.
-
I have a couple issues with GNOME, though. I don't much like the MacOS-style grid of large icons as an app launcher, for one, having gotten used to the density of a barely-configured Rofi menu. I've also gotten used to seeing at a glance what programs I have open, from years of using basically every desktop environment but GNOME, from KDE to XFCE to fucking Windows. I'd like if that was available in, say, the positively barren top panel. I found an extension for that, but it doesn't seem to work properly.
-
Beyond that, I've been acclimating to the fresh install pretty much fine. All my programs are set up the way I like them again, which is nice. Turns out GNOME ships with Wayland by default now, and it's actually been giving me fewer issues than I was expecting. Even gaming is fine from what I've seen so far (what kind of topsy turvy world are we living in where gaming is one of the EASIEST things to do on Linux?), but I did have to pass the flag -platform xcb to OBS to get it to run. Also, the state of graphical package managers on Arch is utterly abysmal, but that's neither here nor there.
-
I do have one very difficult issue, though.
-
What Is The Fucking Deal With ProtonVPN On Linux
-
I use ProtonVPN, and one of the things I attempted to do on Fedora was set it back up. I don't know what I did originally to dodge this, but trying to set it up recently, both on Fedora and on Arch, has been an excercise in navigating an insane maze of complete and utter bullshit.
-
Proton lists Fedora as officially supported by ProtonVPN. Great! One issue: It Fucking Isn't, It Would Seem. The ProtonVPN client is only present in the Software Center as an unofficial GTK app (as opposed to the Electron app I'm used to (I know, ugh)) that refused to work. I went to Proton's website and followed the instructions there, only to end up with a very similar looking GTK app that very similarly didn't work. Awesome.
-
Fortunately, ProtonVPN supports connecting using OpenVPN, and GNOME's network settings panel has an option for that built right in! I download the relevant configuration file from the ProtonVPN website and it also doesn't work. Even awesomer!
-
Back on Arch, which is not officially supported, I install the AUR package that worked perfectly before and it fails. Trying to connect via the CLI (which, by the way, didn't exist in Fedoraland) with my usual settings gives this output:
-
- protonvpn-cli c --cc CA -p udp
- Setting up Proton VPN.
- Connecting to Proton VPN on CA#166 with UDP.
-
- Unable to connect to Proton VPN: Proton VPN connection failed due to unknown reason.
-
-
Tremendously fucking helpful. Why even bother having an error message if it's gonna tell me nothing?
-
So I look up this "unknown reason" error and find a Github issue where someone says to run a journalctl command to see if there's any errors, and wouldn't you know it, I find one!
-
- sudo journalctl -eu NetworkManager
- "Proton VPN CA#166"]: secrets: failed to request VPN secrets #3: No agents were available for this request.
-
-
Progress! I think. I don't know what this means. I look up this error and find a different Github issue where someone claims to have fixed a similar issue by installing a package called nm-applet, which... doesn't seem to exist. Transcendantly spectacular!!!
-
(Mind you, all this is going on on a repo that was archived some time last year, which seems ominous. Please tell me that weird GTK client from Fedora that's missing a CLI isn't the up-to-date official solution.)
-
So I look up "nm-applet" and find a Stackoverflow thread from eight years ago where someone is describing an unrelated issue with an ancient version of GNOME and I learn that the package I'm looking for is actually called network-manager-applet and not nm-applet in the Arch repos for some reason. So I install it and run the nm-applet command, and, bracing for disappointment, run the command to start the VPN...
-
- protonvpn-cli c --cc CA -p udp
- Setting up Proton VPN.
- Connecting to Proton VPN on CA#70 with UDP.
-
- Successfully connected to Proton VPN.
-
-
huh.
-
I think the Github user I learned this from says it best in their comment:
-
-
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-'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.
Posted on $pdate");
- if($pdate != $udate) {
- echo(" | Updated on $udate");
- }
- echo("
");
-?>
\ No newline at end of file
diff --git a/blog/posts/unity_runtime_fee_and_proprietary_software/index.md b/blog/posts/unity_runtime_fee_and_proprietary_software/index.md
new file mode 100644
index 0000000..633b1a5
--- /dev/null
+++ b/blog/posts/unity_runtime_fee_and_proprietary_software/index.md
@@ -0,0 +1,55 @@
+[Well this fucking sucks.](https://archive.ph/gBpXw)
+
+**[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.
+
+The company behind Unity, an extremely popular game engine used to make [some games you may have heard of](https://store.steampowered.com/curator/39750107-Games-Made-With-Unity/) (including about a fifth of my Steam library, for reference), has just announced a new fee for developers using their engine.
+
+In essence, as of next year, developers will owe Unity a fee for every time their game made with the engine is installed after certain retroactive revenue and install base thresholds. There's various different tiers of this, but for the free plan you and I would be using it amounts to $0.20 per install after the first 200,000 installs and $200,000 of revenue.
+
+Side note - How these installs are counted is left intentionally vague too, so it's unclear whether it's a severe violation of user privacy or vulnerable to abuse by maliciously performing repeated reinstalls of a game, or perhaps both. Plus, this also means that even pirated copies might count towards the total.
+
+I won't mince words: **this absurd pricing change has the potential to sink a lot of small game development studios**, especially those working on games that are extremely popular or not aggressively monetized.
+
+For example, Among Us has over 500 million downloads on the Google Play Store alone. Under this pricing scheme, that would cost its developer, Innersloth, $100,000,000 on the free plan, or a paltry $5,000,000 if they're using the if-you-have-to-ask-you-can't-afford-it Enterprise plan. I don't have access to Innersloth's financial data, but that's probably at least a year or two of pay for all of their employees at the absolute minimum, more if they're on a cheaper plan. I seriously doubt they can afford this.
+
+That's an extreme example, but I think it gets the point across. If you don't believe me, take it from developers on Twitter (via [u/Sparky2199](https://archive.ph/IQPjW)):
+
+[![Compilation of various twitter posts from indie game studios using Unity complaining about the change.](devprotest.png)](devprotest.png)
+
+## The obligatory free software soapbox moment
+
+As angry as I am about this, I do feel kind of vindicated, because here's the thing: something like this was always going to happen. Not because Unity in particular is a *bad* company (although it is), but because it's a *for-profit* company, and especially because it's one with shareholders to please.
+
+Capitalism demands infinite growth, but there's a finite number of people to sell a game engine to, so at a certain point Unity has no choice but to start trying to squeeze more money out of its existing customer base (or expand the customer base by, say, trying to cater to filmmakers). Though certain internal factors definitely sped up the process of reaching this point, Unity was bound to get desperate enough to try some shit like this eventually.
+
+And that's the danger here. When you become reliant on something in order to do your work, you're inherently gambling on it being still around and usable until you're done. In the case of proprietary software (and cloud services, but that's a different rant), you're betting on the company not changing the software or the terms of the license on you, or going under, or just deciding the software isn't worth it to maintain anymore. In Unity's case, we're seeing what happens when you place a losing bet. Suddenly the company hates you and you've gotta migrate to something else, and if you can't you're SOL. Sure, an open-source project might die off as its developers lose interest or can't work on it anymore, but then somebody might fork it, or you have the right to maintain it yourself, if you can. Only proprietary software can suddenly decide you're not *allowed* to use it anymore.
+
+Videogames in particular are hit especially hard by this - they often take years to make, and are often incredibly complex, to the point where porting a game between engines can be harder than making it to begin with, so choosing an engine is a *huge* commitment that not every studio or developer can afford to go back on. Something like this can easily kill a project, both financially and from simple loss of motivation.
+
+This problem isn't unique to Unity, or to game engines. We've been watching this play out across the industry for as long as there's been an industry, except normally companies boil the frog a lot more slowly and in ways that are a lot more subtle. Google didn't go from world's best search engine to mega-monopolistic adware provider overnight. To extend the metaphor, Unity just tossed a grenade in the pot.
+
+It's my opinion that all proprietary software will die this way in the end. The structure is fundamentally unsustainable. You can't have infinite growth. At some point all the proprietary software and services that are commomplace nowadays with their ad-supported business models and predatory pricing schemes and suspiciously high marketing budgets will wither and die, having made themselves intolerable to even their most loyal customers, and most of the survivors will be open-source projects. Not as sleek or sexy or well-advertised, as they'll have had less incentive to appeal to new users, but fundamentally sustainable, having had *no* incentive to appeal to shareholders.
+
+## An attempt at optimism
+
+In this particular case, I don't think this is gonna stick. Unity's runtime fee is absurd, and I think they know it just as well as all their moderately high-profile customers on Twitter do. Unity has already started to walk back some of the more extreme parts of the initial plan, as you can see on archived versions of the posts: [Blog post (Sep 12)](https://archive.ph/gEckm), [Blog post (Sep 14)](https://archive.ph/gBpXw), [Forum thread (Sep 12)](https://archive.ph/HYTq5), [Forum thread (Sep 14)](https://archive.ph/eByMm). Unity also has some customers that are bigger than them and notoriously litigation-happy, namely Nintendo (with Pokemon BD/SP and Go, plus a couple Mario mobile games) and Disney (also with quite a few mobile and console games). Unity's CEO also sold a bunch of stock in the company in the lead-up to this announcement, which, since the company's stock price dropped *significantly* after the announcement, might actually constitute fraud. You know, from federal crimes! Basically, this initial announcement was probably an attempt to see how much they could get away with, and Unity's probably fucked if they stick to their guns on this.
+
+On the technical side, if you're a budding game developer, Unity isn't your only option. My top recommendation is [Godot](https://godotengine.org/), a free and open source game engine that's recently taken steps to increase its funding in a way that's actually sane and not cartoon villain behavior. It also supports C# by default, since you probably got used to that with Unity. There's also RPG Maker and Unreal Engine, the latter of which I imagine a lot of studios will be switching to soon.
+
+Finally, if you've been eyeing a game that uses the Unity engine, you've got until the end of the year to install it without incurring that fee for the developer assuming this change goes through. So I'd check for that. By my understanding you'll have to run it at least once before then, too.
+
+## Update as of 2023-09-23
+
+Good(?) news! Unity's responded to community feedback and it's actually... better than I expected. You can read the full post [here](https://archive.ph/rLi8u), but I'll summarize the changes:
+
+- No more runtime fee for the free Personal tier
+- Revenue cap for the Personal tier doubled and mandatory splash screen removed
+- The runtime fee now only applies starting with the next LTS release in 2024
+- The runtime fee is now capped at 2.5% of total revenue, and all relevant data is now self-reported instead of a "proprietary data model"
+- Just like, a straight up apology at the beginning of the post
+
+This is all good. These changes remove all of the most devastating knock-on effects of the original policy, and I think this is actually a *better* deal for free users than before.
+
+That said, my original point still stands. Unity is still squeezing more money out of its userbase in a way it hadn't previously, and it could pull some shit like this again at any time. Just because it caved this time, doesn't mean there's anything stopping Unity from making more horrible retroactive policy changes in future. Unity has destroyed a lot of the trust it's built with its community - a lot of developers won't trust Unity not to screw them over in the future, and in my opinion they'd be right not to.
+
+It's my hope that a lot of game developers will take this opportunity to ditch Unity for something better. At the very least, I don't think we'll see many games de-listed like Cult of the Lamb [threatened to do](https://archive.ph/4xyTO), since existing games can just not update their Unity release. A lot of games may still be forced to move engines if they don't want to deal with this, though. For example, support for new consoles, OS versions, etc. probably won't be backported to old Unity versions. Games that continually add new content or aren't finished yet will probably eventually start encountering issues resulting from this.
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 00903b5..f572f79 100644
--- a/blog/posts/unity_runtime_fee_and_proprietary_software/index.php
+++ b/blog/posts/unity_runtime_fee_and_proprietary_software/index.php
@@ -1,54 +1 @@
-
-
-
-
-
- The Unity Runtime Fee and Proprietary Software
-
-
-
-
-
-
-
[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.
-
The company behind Unity, an extremely popular game engine used to make some games you may have heard of (including about a fifth of my Steam library, for reference), has just announced a new fee for developers using their engine.
-
In essence, as of next year, developers will owe Unity a fee for every time their game made with the engine is installed after certain retroactive revenue and install base thresholds. There's various different tiers of this, but for the free plan you and I would be using it amounts to $0.20 per install after the first 200,000 installs and $200,000 of revenue.
-
Side note - How these installs are counted is left intentionally vague too, so it's unclear whether it's a severe violation of user privacy or vulnerable to abuse by maliciously performing repeated reinstalls of a game, or perhaps both. Plus, this also means that even pirated copies might count towards the total.
-
I won't mince words: this absurd pricing change has the potential to sink a lot of small game development studios, especially those working on games that are extremely popular or not aggressively monetized.
-
For example, Among Us has over 500 million downloads on the Google Play Store alone. Under this pricing scheme, that would cost its developer, Innersloth, $100,000,000 on the free plan, or a paltry $5,000,000 if they're using the if-you-have-to-ask-you-can't-afford-it Enterprise plan. I don't have access to Innersloth's financial data, but that's probably at least a year or two of pay for all of their employees at the absolute minimum, more if they're on a cheaper plan. I seriously doubt they can afford this.
-
That's an extreme example, but I think it gets the point across. If you don't believe me, take it from developers on Twitter (via u/Sparky2199):
-
-
The obligatory free software soapbox moment
-
As angry as I am about this, I do feel kind of vindicated, because here's the thing: something like this was always going to happen. Not because Unity in particular is a bad company (although it is), but because it's a for-profit company, and especially because it's one with shareholders to please.
-
Capitalism demands infinite growth, but there's a finite number of people to sell a game engine to, so at a certain point Unity has no choice but to start trying to squeeze more money out of its existing customer base (or expand the customer base by, say, trying to cater to filmmakers). Though certain internal factors definitely sped up the process of reaching this point, Unity was bound to get desperate enough to try some shit like this eventually.
-
And that's the danger here. When you become reliant on something in order to do your work, you're inherently gambling on it being still around and usable until you're done. In the case of proprietary software (and cloud services, but that's a different rant), you're betting on the company not changing the software or the terms of the license on you, or going under, or just deciding the software isn't worth it to maintain anymore. In Unity's case, we're seeing what happens when you place a losing bet. Suddenly the company hates you and you've gotta migrate to something else, and if you can't you're SOL. Sure, an open-source project might die off as its developers lose interest or can't work on it anymore, but then somebody might fork it, or you have the right to maintain it yourself, if you can. Only proprietary software can suddenly decide you're not allowed to use it anymore.
-
Videogames in particular are hit especially hard by this - they often take years to make, and are often incredibly complex, to the point where porting a game between engines can be harder than making it to begin with, so choosing an engine is a huge commitment that not every studio or developer can afford to go back on. Something like this can easily kill a project, both financially and from simple loss of motivation.
-
This problem isn't unique to Unity, or to game engines. We've been watching this play out across the industry for as long as there's been an industry, except normally companies boil the frog a lot more slowly and in ways that are a lot more subtle. Google didn't go from world's best search engine to mega-monopolistic adware provider overnight. To extend the metaphor, Unity just tossed a grenade in the pot.
-
It's my opinion that all proprietary software will die this way in the end. The structure is fundamentally unsustainable. You can't have infinite growth. At some point all the proprietary software and services that are commomplace nowadays with their ad-supported business models and predatory pricing schemes and suspiciously high marketing budgets will wither and die, having made themselves intolerable to even their most loyal customers, and most of the survivors will be open-source projects. Not as sleek or sexy or well-advertised, as they'll have had less incentive to appeal to new users, but fundamentally sustainable, having had no incentive to appeal to shareholders.
-
An attempt at optimism
-
In this particular case, I don't think this is gonna stick. Unity's runtime fee is absurd, and I think they know it just as well as all their moderately high-profile customers on Twitter do. Unity has already started to walk back some of the more extreme parts of the initial plan, as you can see on archived versions of the posts: Blog post (Sep 12), Blog post (Sep 14), Forum thread (Sep 12), Forum thread (Sep 14). Unity also has some customers that are bigger than them and notoriously litigation-happy, namely Nintendo (with Pokemon BD/SP and Go, plus a couple Mario mobile games) and Disney (also with quite a few mobile and console games). Unity's CEO also sold a bunch of stock in the company in the lead-up to this announcement, which, since the company's stock price dropped significantly after the announcement, might actually constitute fraud. You know, from federal crimes! Basically, this initial announcement was probably an attempt to see how much they could get away with, and Unity's probably fucked if they stick to their guns on this.
-
On the technical side, if you're a budding game developer, Unity isn't your only option. My top recommendation is Godot, a free and open source game engine that's recently taken steps to increase its funding in a way that's actually sane and not cartoon villain behavior. It also supports C# by default, since you probably got used to that with Unity. There's also RPG Maker and Unreal Engine, the latter of which I imagine a lot of studios will be switching to soon.
-
Finally, if you've been eyeing a game that uses the Unity engine, you've got until the end of the year to install it without incurring that fee for the developer assuming this change goes through. So I'd check for that. By my understanding you'll have to run it at least once before then, too.
-
Update as of 2023-09-23
-
Good(?) news! Unity's responded to community feedback and it's actually... better than I expected. You can read the full post here, but I'll summarize the changes:
-
-
No more runtime fee for the free Personal tier
-
Revenue cap for the Personal tier doubled and mandatory splash screen removed
-
The runtime fee now only applies starting with the next LTS release in 2024
-
The runtime fee is now capped at 2.5% of total revenue, and all relevant data is now self-reported instead of a "proprietary data model"
-
Just like, a straight up apology at the beginning of the post
-
-
This is all good. These changes remove all of the most devastating knock-on effects of the original policy, and I think this is actually a better deal for free users than before.
-
That said, my original point still stands. Unity is still squeezing more money out of its userbase in a way it hadn't previously, and it could pull some shit like this again at any time. Just because it caved this time, doesn't mean there's anything stopping Unity from making more horrible retroactive policy changes in future. Unity has destroyed a lot of the trust it's built with its community - a lot of developers won't trust Unity not to screw them over in the future, and in my opinion they'd be right not to.
-
It's my hope that a lot of game developers will take this opportunity to ditch Unity for something better. At the very least, I don't think we'll see many games de-listed like Cult of the Lamb threatened to do, since existing games can just not update their Unity release. A lot of games may still be forced to move engines if they don't want to deal with this, though. For example, support for new consoles, OS versions, etc. probably won't be backported to old Unity versions. Games that continually add new content or aren't finished yet will probably eventually start encountering issues resulting from this.