all repos — birabittoh.github.io @ gh-pages

My current website, built with Zola.

atom.xml (view raw)

  1<?xml version="1.0" encoding="UTF-8"?>
  2<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  3    <title>BiRabittoh</title>
  4    <subtitle>Tech and privacy ramblings from a random italian dude.</subtitle>
  5    <link rel="self" type="application/atom+xml" href="https://birabittoh.github.io/atom.xml"/>
  6    <link rel="alternate" type="text/html" href="https://birabittoh.github.io/"/>
  7    <generator uri="https://www.getzola.org/">Zola</generator>
  8    <updated>2023-07-16T00:00:00+00:00</updated>
  9    <id>https://birabittoh.github.io/atom.xml</id>
 10    <entry xml:lang="en">
 11        <title>Self-hosting Extravaganza</title>
 12        <published>2023-07-16T00:00:00+00:00</published>
 13        <updated>2023-07-16T00:00:00+00:00</updated>
 14        
 15        <author>
 16          <name>
 17            
 18              BiRabittoh
 19            
 20          </name>
 21        </author>
 22        
 23        <link rel="alternate" type="text/html" href="https://birabittoh.github.io/blog/self-host/"/>
 24        <id>https://birabittoh.github.io/blog/self-host/</id>
 25        
 26        <content type="html" xml:base="https://birabittoh.github.io/blog/self-host/">&lt;p&gt;Lately, more and more companies are putting their services behind paywalls, usage limits and closed APIs. Some examples are &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;nitter.it&#x2F;elonmusk&#x2F;status&#x2F;1675187969420828672&quot;&gt;Twitter&lt;&#x2F;a&gt; limiting the number of tweets a non-paying user can read, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.redditinc.com&#x2F;blog&#x2F;2023apiupdates&quot;&gt;Reddit&lt;&#x2F;a&gt; increasing their API price to an extent that’s unbearable for any normal individual and &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;libreddit.kavin.rocks&#x2F;r&#x2F;youtube&#x2F;comments&#x2F;14kmd07&#x2F;youtube_cracking_down_on_if_youre_not_paying_them&#x2F;&quot;&gt;YouTube&lt;&#x2F;a&gt; starting to block their service towards anyone using an adblock extension.&lt;&#x2F;p&gt;
 27&lt;h2 id=&quot;there-must-be-a-better-way&quot;&gt;There must be a better way&lt;&#x2F;h2&gt;
 28&lt;p&gt;Luckily, I’ve been interested in &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;mendel5&#x2F;alternative-front-ends&quot;&gt;alternative front-ends&lt;&#x2F;a&gt; for a while. These services allow you to get the same (or better) functionality as their corporate counterpart without giving away any of your information in return. Some of these even offer their own free APIs.&lt;&#x2F;p&gt;
 29&lt;p&gt;Here’s my favorite instances with respect to the service they provide:&lt;&#x2F;p&gt;
 30&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Service&lt;&#x2F;th&gt;&lt;th&gt;PC&lt;&#x2F;th&gt;&lt;th&gt;Mobile&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
 31&lt;tr&gt;&lt;td&gt;YouTube&lt;&#x2F;td&gt;&lt;td&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;y.com.sb&#x2F;&quot;&gt;Invidious&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;td&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;apt.izzysoft.de&#x2F;fdroid&#x2F;index&#x2F;apk&#x2F;org.polymorphicshade.newpipe&quot;&gt;NewPipe&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
 32&lt;tr&gt;&lt;td&gt;Twitter&lt;&#x2F;td&gt;&lt;td&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;nitter.it&quot;&gt;Nitter&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;td&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;apt.izzysoft.de&#x2F;fdroid&#x2F;index&#x2F;apk&#x2F;org.ca.squawker&quot;&gt;Squawker&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
 33&lt;tr&gt;&lt;td&gt;Reddit&lt;&#x2F;td&gt;&lt;td&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;libreddit.kavin.rocks&quot;&gt;LibReddit&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;td&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;libreddit.kavin.rocks&quot;&gt;LibReddit&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
 34&lt;tr&gt;&lt;td&gt;Medium&lt;&#x2F;td&gt;&lt;td&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;scribe.rip&quot;&gt;Scribe&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;td&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;scribe.rip&#x2F;&quot;&gt;Scribe&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
 35&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
 36&lt;h2 id=&quot;drawbacks&quot;&gt;Drawbacks&lt;&#x2F;h2&gt;
 37&lt;p&gt;Of course, this is not a perfect solution. There are a lot of problems to be discussed.&lt;&#x2F;p&gt;
 38&lt;h3 id=&quot;privacy&quot;&gt;Privacy&lt;&#x2F;h3&gt;
 39&lt;p&gt;First and foremost, these instances do not make any profit. This is not a problem until you really think about it. Can you really trust a random developer offering a (paid) service for thousands of users out of their own kindness?
 40The answer is “probably yes”, but are you willing to take this risk?&lt;&#x2F;p&gt;
 41&lt;p&gt;Instance admins could easily edit the upstream source code to make it so they can track their users indefinetly and sell usage data without them even realizing.
 42This is a given if you use any “normal” (not self-hosted) service, but the difference is big companies are &lt;em&gt;required&lt;&#x2F;em&gt; by GDPR to protect collected user data in a certain way and keep them for a maximum set amount of time.&lt;&#x2F;p&gt;
 43&lt;p&gt;The same cannot be assured for individuals who apparently don’t even make a profit for what they’re doing.&lt;&#x2F;p&gt;
 44&lt;h3 id=&quot;scaling&quot;&gt;Scaling&lt;&#x2F;h3&gt;
 45&lt;p&gt;This buzzword has become a meme in the programming world, but it’s been shown how important it is to consider when dealing with large userbases that can grow exponentially without any warning.&lt;&#x2F;p&gt;
 46&lt;p&gt;Think about the amount of users who migrated to Mastodon immediately after Elon Musk acquired Twitter. Instance admins were used to having a couple hundred users, so hundred of thousands of new signups made a lot of popular instances slow down or even temporarily shut down while they migrated to new (and more expensive) hardware.&lt;&#x2F;p&gt;
 47&lt;p&gt;Anything public you use can be subject to this phenomenon, leading to poor user experience, as you’ll be one of the many people wondering why your feed takes one minute to load.&lt;&#x2F;p&gt;
 48&lt;h2 id=&quot;fine-i-ll-do-it-myself&quot;&gt;Fine, I’ll do it myself&lt;&#x2F;h2&gt;
 49&lt;p&gt;Since joining the world of minimalism, I had always considered Docker as a bloated way to run multiple virtual machines. I read about people complaining that even simple Python scripts were providing &lt;code&gt;Dockerfile&lt;&#x2F;code&gt; and &lt;code&gt;docker-compose.yml&lt;&#x2F;code&gt; files and I started seeing it as a bloaty way to achieve the same result.&lt;&#x2F;p&gt;
 50&lt;p&gt;Whenever I wanted to host anything by myself, I used to SSH into my VPS with password authentication (!!!)  and expose a public port for each service (!!!).
 51I used my public IP address to log into my services, so I had to resort to sending cleartext passwords through HTTP (!!!) since TLS was not an option.&lt;&#x2F;p&gt;
 52&lt;p&gt;Of course, this is possibly the most insecure way to host services on a public server, but I felt that was “secure enough” and nobody would ever be interested in hacking me (!!! × ∞).&lt;&#x2F;p&gt;
 53&lt;p&gt;Nonetheless, I used to &lt;code&gt;cat &#x2F;var&#x2F;log&#x2F;auth.log&lt;&#x2F;code&gt; to see all the failed login attempts, and pray that nobody actually got my password right.
 54Nowadays, I look back and laugh at my previous config; at least I’m (almost) sure that nobody actually managed to get in.&lt;&#x2F;p&gt;
 55&lt;h2 id=&quot;the-right-way&quot;&gt;The right way&lt;&#x2F;h2&gt;
 56&lt;p&gt;Since I started my new job, I also began experimenting with Docker and found out it’s not as bad as I thought it’d be. I will now let my previous config serve as the perfect example of how NOT to secure your VPS correctly for any self-hosting configuration.&lt;&#x2F;p&gt;
 57&lt;h3 id=&quot;ditch-password-authentication&quot;&gt;Ditch password authentication&lt;&#x2F;h3&gt;
 58&lt;p&gt;First of all, password authentication. You’ll be a lot safer as soon as you disable it.&lt;&#x2F;p&gt;
 59&lt;p&gt;Having it enabled means you’re vulnerable to dictionary and bruteforce attacks. Also, if some new vulnerability is published, the password field is one more way the attacker could send a malicious string to get inside (see &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;scribe.rip&#x2F;geekculture&#x2F;the-log4j-incident-explained-ed0ce6d36df2&quot;&gt;the log4j incident&lt;&#x2F;a&gt;).&lt;&#x2F;p&gt;
 60&lt;p&gt;A better way of logging into your VPS is through public key authentication.&lt;&#x2F;p&gt;
 61&lt;p&gt;First, generate a key on your own PC:&lt;&#x2F;p&gt;
 62&lt;pre&gt;&lt;code&gt;ssh-keygen -t ed25519 -a 100
 63&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
 64&lt;p&gt;This will create two files: &lt;code&gt;~&#x2F;.ssh&#x2F;id_ed25519.pub&lt;&#x2F;code&gt; and &lt;code&gt;~&#x2F;.ssh&#x2F;id_ed25519&lt;&#x2F;code&gt;&lt;&#x2F;p&gt;
 65&lt;p&gt;Now, use the following command to copy your key over to the VPS:&lt;&#x2F;p&gt;
 66&lt;pre&gt;&lt;code&gt;ssh-copy-id -i ~&amp;#x2F;.ssh&amp;#x2F;id_ed25519 &amp;lt;user&amp;gt;@&amp;lt;host&amp;gt;
 67&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
 68&lt;p&gt;At this point, if everything went correctly, just add or change the following line in &lt;code&gt;&#x2F;etc&#x2F;ssh&#x2F;sshd_config&lt;&#x2F;code&gt;:&lt;&#x2F;p&gt;
 69&lt;pre&gt;&lt;code&gt;PasswordAuthentication no
 70&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
 71&lt;p&gt;At this point, you should be able to log into your VPS without the need to input your password, which is more secure as well as more convenient.&lt;&#x2F;p&gt;
 72&lt;p&gt;I keep the content of my public and private ssh key files saved as secure notes in my BitWarden account, so I can take them to any PC I want to access my VPS from.
 73People say this is bad practice (you should only have a key for each host), but I personally feel like it’s not that big of a deal compared to the security mess I had going on before.&lt;&#x2F;p&gt;
 74&lt;h3 id=&quot;containerize-your-applications&quot;&gt;Containerize your applications&lt;&#x2F;h3&gt;
 75&lt;p&gt;Now that you have a safe way to SSH into your machine, you can start hosting your own services.&lt;&#x2F;p&gt;
 76&lt;p&gt;First, some terminology:&lt;&#x2F;p&gt;
 77&lt;ul&gt;
 78&lt;li&gt;&lt;code&gt;Dockerfile&lt;&#x2F;code&gt; files are like a list of ingredients. They contain every dependency needed to build a minimal operating system dedicated to running a program. They’re used to build images.&lt;&#x2F;li&gt;
 79&lt;li&gt;&lt;code&gt;Images&lt;&#x2F;code&gt; are like recipes. You can create some yourself from a Dockerfile or download them from an external repository. They can be instantiated as containers.&lt;&#x2F;li&gt;
 80&lt;li&gt;&lt;code&gt;Containers&lt;&#x2F;code&gt; are like courses. You can instantiate multiple equal courses from the same image and you can actually eat (use) them! They can be managed through &lt;code&gt;docker-compose&lt;&#x2F;code&gt;.&lt;&#x2F;li&gt;
 81&lt;li&gt;&lt;code&gt;docker-compose.yml&lt;&#x2F;code&gt; files are like menus. They’re a convenient way to instantiate and deinstantiate multiple containers in a specific and reproducible configuration. If you’re not a developer, you’ll be mainly working on these files.&lt;&#x2F;li&gt;
 82&lt;&#x2F;ul&gt;
 83&lt;p&gt;To get started with Docker, install &lt;code&gt;docker&lt;&#x2F;code&gt; and &lt;code&gt;docker-compose&lt;&#x2F;code&gt; via your package manager of choice. If you want an easy start, you can follow &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;docs.invidious.io&#x2F;installation&#x2F;#docker-compose-method-production&quot;&gt;this guide&lt;&#x2F;a&gt; to host our own Invidious instance.&lt;&#x2F;p&gt;
 84&lt;p&gt;It’s not that hard, but you might need to read the official &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;docs.docker.com&#x2F;compose&#x2F;&quot;&gt;Docker Compose documentation&lt;&#x2F;a&gt; if something doesn’t go as planned.&lt;&#x2F;p&gt;
 85&lt;p&gt;My advice is to generate an &lt;code&gt;hmac_key&lt;&#x2F;code&gt; using &lt;code&gt;pwgen 20 1&lt;&#x2F;code&gt; or &lt;code&gt;openssl rand -hex 20&lt;&#x2F;code&gt; and insert it in the correct spot inside &lt;code&gt;docker-compose.yml&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
 86&lt;p&gt;Also, remove the &lt;code&gt;127.0.0.1:&lt;&#x2F;code&gt; part in the &lt;code&gt;ports&lt;&#x2F;code&gt; section since we don’t have a reverse proxy set up (yet).&lt;&#x2F;p&gt;
 87&lt;p&gt;After you’re done configuring, you can type &lt;code&gt;docker-compose up -d&lt;&#x2F;code&gt; to pull all required images and instantiate your containers, and &lt;code&gt;docker-compose down&lt;&#x2F;code&gt; if you want to stop and remove everything.&lt;&#x2F;p&gt;
 88&lt;h3 id=&quot;use-a-reverse-proxy&quot;&gt;Use a reverse proxy&lt;&#x2F;h3&gt;
 89&lt;p&gt;If you’ve followed that guide correctly, you should now have two containers that communicate through a network. You can find out their names by running &lt;code&gt;docker ps -a&lt;&#x2F;code&gt;. Take note of the name of your main invidious container, which will be referred as &lt;code&gt;invidious&lt;&#x2F;code&gt; for the rest of this guide.&lt;&#x2F;p&gt;
 90&lt;p&gt;Problem is, you’re still using an IP address and communicating in cleartext through HTTP! This means your ISP can read every single detail in every single request you make.&lt;&#x2F;p&gt;
 91&lt;p&gt;Luckily, there is a way to get a cool domain name for free that also happens to include free and auto-generated TLS certificates.&lt;&#x2F;p&gt;
 92&lt;p&gt;First, create an account on &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.duckdns.org&#x2F;&quot;&gt;DuckDNS&lt;&#x2F;a&gt; and set up a free domain.&lt;&#x2F;p&gt;
 93&lt;p&gt;Just make a new directory near the one you used for Invidious and create a new &lt;code&gt;docker-compose.yml&lt;&#x2F;code&gt;:&lt;&#x2F;p&gt;
 94&lt;pre&gt;&lt;code&gt;mkdir swag
 95cd swag
 96nano docker-compose.yml
 97&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
 98&lt;p&gt;You can paste and edit accordingly the lines in &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;docs.linuxserver.io&#x2F;general&#x2F;swag#creating-a-swag-container&quot;&gt;this guide&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
 99&lt;p&gt;For example, instead of &lt;code&gt;DNSPLUGIN=cloudflare&lt;&#x2F;code&gt; you should have &lt;code&gt;DNSPLUGIN=duckdns&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
100&lt;p&gt;When you’re done, start your container with &lt;code&gt;docker-compose up -d&lt;&#x2F;code&gt;. This will create the config folder in &lt;code&gt;&#x2F;etc&#x2F;config&#x2F;swag&lt;&#x2F;code&gt; as well as a new network called &lt;code&gt;swag_default&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
101&lt;p&gt;Now we need to create a custom subdomain for Invidious. You can do it by creating the following file: &lt;code&gt;&#x2F;etc&#x2F;config&#x2F;swag&#x2F;nginx&#x2F;proxy-confs&#x2F;invidious.subdomain.conf&lt;&#x2F;code&gt; with this content:&lt;&#x2F;p&gt;
102&lt;pre&gt;&lt;code&gt;server {
103    listen 443 ssl http2;
104    listen [::]:443 ssl http2;
105
106    server_name y.*;
107
108    include &amp;#x2F;config&amp;#x2F;nginx&amp;#x2F;ssl.conf;
109
110    client_max_body_size 0;
111
112    location &amp;#x2F; {
113        include &amp;#x2F;config&amp;#x2F;nginx&amp;#x2F;proxy.conf;
114        include &amp;#x2F;config&amp;#x2F;nginx&amp;#x2F;resolver.conf;
115        set $upstream_app invidious;
116        set $upstream_port 3000;
117        set $upstream_proto http;
118        proxy_pass $upstream_proto:&amp;#x2F;&amp;#x2F;$upstream_app:$upstream_port;
119    }
120}
121&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
122&lt;p&gt;Where:&lt;&#x2F;p&gt;
123&lt;ul&gt;
124&lt;li&gt;&lt;code&gt;server_name yt.*&lt;&#x2F;code&gt;: &lt;code&gt;yt&lt;&#x2F;code&gt; is the subdomain of choice;&lt;&#x2F;li&gt;
125&lt;li&gt;&lt;code&gt;set $upstream_app invidious;&lt;&#x2F;code&gt;: &lt;code&gt;invidious&lt;&#x2F;code&gt; is the name of the main Invidious container;&lt;&#x2F;li&gt;
126&lt;li&gt;&lt;code&gt;set $upstream_port 3000;&lt;&#x2F;code&gt;: &lt;code&gt;3000&lt;&#x2F;code&gt; is the Invidious port.&lt;&#x2F;li&gt;
127&lt;&#x2F;ul&gt;
128&lt;p&gt;There’s one last step remaining. Invidious and Swag are two separate containers, so they cannot communicate unless they’re connected to the same network. You can connect Invidious to Swag’s network with the following command, where &lt;code&gt;invidious&lt;&#x2F;code&gt; is the name of your main Invidious container.&lt;&#x2F;p&gt;
129&lt;pre&gt;&lt;code&gt;docker network connect swag_default invidious
130&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
131&lt;p&gt;Finally, you can visit https:&#x2F;&#x2F;yt.&amp;lt;your-domain&amp;gt;.duckdns.org&#x2F; and check if you can access Invidious through HTTPS.&lt;&#x2F;p&gt;
132&lt;p&gt;Note: now that you have a reverse proxy set up, you can remove your &lt;code&gt;ports:&lt;&#x2F;code&gt; section entirely from Invidious’ &lt;code&gt;docker-compose.yml&lt;&#x2F;code&gt;.
133You can do this because the containers are communicating internally to the &lt;code&gt;swag_default&lt;&#x2F;code&gt; network, without the need to expose any ports to the outside.
134After you’re done, remember to reload your configuration by running &lt;code&gt;docker-compose restart&lt;&#x2F;code&gt; in your Invidious folder.&lt;&#x2F;p&gt;
135&lt;p&gt;Ideally, the only container with exposed ports in your VPS should be Swag exposing ports 80 (HTTP) and 443 (HTTPS).&lt;&#x2F;p&gt;
136&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;&#x2F;h2&gt;
137&lt;p&gt;Self-hosting is not easy. It’s been my &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;wiki.froth.zone&#x2F;wiki&#x2F;Camino_de_Santiago&quot;&gt;Camino de Santiago&lt;&#x2F;a&gt;: a long path of redemption for the sins I have committed in my young age.
138Even if I made a lot of mistakes, in the end I’ve learned a lot about dev-ops and cybersecurity, as well as precious skills that proved themselves useful for my engineering job.&lt;&#x2F;p&gt;
139&lt;p&gt;You can find a full list of self-hostable services &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;awesome-selfhosted&#x2F;awesome-selfhosted&quot;&gt;here&lt;&#x2F;a&gt;!&lt;&#x2F;p&gt;
140</content>
141        
142    </entry>
143    <entry xml:lang="en">
144        <title>Modernizing XFCE</title>
145        <published>2023-02-05T00:00:00+00:00</published>
146        <updated>2023-02-05T00:00:00+00:00</updated>
147        
148        <author>
149          <name>
150            
151              BiRabittoh
152            
153          </name>
154        </author>
155        
156        <link rel="alternate" type="text/html" href="https://birabittoh.github.io/blog/void-xfce/"/>
157        <id>https://birabittoh.github.io/blog/void-xfce/</id>
158        
159        <content type="html" xml:base="https://birabittoh.github.io/blog/void-xfce/">&lt;p&gt;This article is more of a memo for myself. Since I often re-install Linux systems, I spend a lot of time doing repetitive tasks and often forget some steps, which leads me to waste even more time figuring out what’s wrong.&lt;&#x2F;p&gt;
160&lt;p&gt;These instructions allow you to get a fully functional and modern-looking XFCE desktop on a fresh install of &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;voidlinux.org&#x2F;&quot;&gt;Void Linux&lt;&#x2F;a&gt; (even though they can be adapted to work in any distro).&lt;&#x2F;p&gt;
161&lt;h2 id=&quot;initial-system-update&quot;&gt;Initial system update&lt;&#x2F;h2&gt;
162&lt;p&gt;First thing I tried was to update the system, but the ISO was quite old. I had to update &lt;code&gt;xbps&lt;&#x2F;code&gt; before anything else:&lt;&#x2F;p&gt;
163&lt;pre&gt;&lt;code&gt;sudo xbps-install -Su xbps
164sudo xbps-install -Su
165&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
166&lt;h2 id=&quot;avoid-session-saving&quot;&gt;Avoid session saving&lt;&#x2F;h2&gt;
167&lt;p&gt;One thing I hate about XFCE is its fixation to save sessions. A lot of times I get my session saved and restored even with all settings turned off.&lt;&#x2F;p&gt;
168&lt;p&gt;A quick and easy solution to disable session saving entirely is just to create an empty file in place of the &lt;code&gt;sessions&lt;&#x2F;code&gt; directory.&lt;&#x2F;p&gt;
169&lt;pre&gt;&lt;code&gt;rm ~&amp;#x2F;.cache&amp;#x2F;sessions -rf
170touch ~&amp;#x2F;.cache&amp;#x2F;sessions
171&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
172&lt;p&gt;This way, even with everything turned on, XFCE fails create a folder with that name and everything works (or doesn’t, in this case) like a charm.&lt;&#x2F;p&gt;
173&lt;h2 id=&quot;change-that-shell&quot;&gt;Change that shell&lt;&#x2F;h2&gt;
174&lt;p&gt;Your shell is the main tool you use to communicate with your system, so it makes sense to replace &lt;code&gt;bash&lt;&#x2F;code&gt; with something more modern and feature-rich.&lt;&#x2F;p&gt;
175&lt;pre&gt;&lt;code&gt;sudo xbps-install -S zsh zsh-completions curl
176chsh -s &amp;#x2F;bin&amp;#x2F;zsh
177zsh
178curl -fsSL https:&amp;#x2F;&amp;#x2F;raw.githubusercontent.com&amp;#x2F;zimfw&amp;#x2F;install&amp;#x2F;master&amp;#x2F;install.zsh | zsh
179&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
180&lt;h2 id=&quot;get-some-good-sound-quality&quot;&gt;Get some good sound quality&lt;&#x2F;h2&gt;
181&lt;p&gt;I don’t like &lt;code&gt;pulseaudio&lt;&#x2F;code&gt;. Let’s replace it with &lt;code&gt;pipewire&lt;&#x2F;code&gt; and &lt;code&gt;wireplumber&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
182&lt;pre&gt;&lt;code&gt;su
183xbps-install pipewire wireplumber
184mkdir -p &amp;#x2F;etc&amp;#x2F;pipewire&amp;#x2F;pipewire.conf.d
185sed &amp;#x27;&amp;#x2F;path.*=.*pipewire-media-session&amp;#x2F;s&amp;#x2F;{&amp;#x2F;#{&amp;#x2F;&amp;#x27; \
186&amp;#x2F;usr&amp;#x2F;share&amp;#x2F;pipewire&amp;#x2F;pipewire.conf &amp;gt; &amp;#x2F;etc&amp;#x2F;pipewire&amp;#x2F;pipewire.conf
187echo &amp;#x27;context.exec = [ { path = &amp;quot;&amp;#x2F;usr&amp;#x2F;bin&amp;#x2F;wireplumber&amp;quot; args = &amp;quot;&amp;quot; } ]&amp;#x27; \
188&amp;gt; &amp;#x2F;etc&amp;#x2F;pipewire&amp;#x2F;pipewire.conf.d&amp;#x2F;10-wireplumber.conf
189ln -s &amp;#x2F;usr&amp;#x2F;share&amp;#x2F;applications&amp;#x2F;pipewire* &amp;#x2F;etc&amp;#x2F;xdg&amp;#x2F;autostart
190xbps-remove pulseaudio alsa-plugins-pulseaudio
191reboot
192&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
193&lt;h2 id=&quot;make-firefox-more-secure&quot;&gt;Make Firefox more secure&lt;&#x2F;h2&gt;
194&lt;p&gt;I like Firefox as a browser, but it doesn’t come with sane defaults as far as privacy’s concerned.&lt;&#x2F;p&gt;
195&lt;p&gt;First, visit &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;ffprofile.com&#x2F;&quot;&gt;Firefox Profilemaker&lt;&#x2F;a&gt; and create a customized &lt;code&gt;profile.zip&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
196&lt;p&gt;Then, extract your zip file to the correct destination:&lt;&#x2F;p&gt;
197&lt;pre&gt;&lt;code&gt;sudo xbps-install zip unzip p7zip xarchiver thunar-archive-plugin
198unzip -o ~&amp;#x2F;Downloads&amp;#x2F;profile.zip -d ~&amp;#x2F;.mozilla&amp;#x2F;firefox&amp;#x2F;xxxx.default-default&amp;#x2F;
199&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
200&lt;p&gt;Some useful extensions I always install are:&lt;&#x2F;p&gt;
201&lt;ul&gt;
202&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;addons.mozilla.org&#x2F;en-US&#x2F;firefox&#x2F;addon&#x2F;bitwarden-password-manager&quot;&gt;Bitwarden&lt;&#x2F;a&gt;, a password manager;&lt;&#x2F;li&gt;
203&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;addons.mozilla.org&#x2F;en-US&#x2F;firefox&#x2F;addon&#x2F;decentraleyes&quot;&gt;Decentraleyes&lt;&#x2F;a&gt;, to serve common JS libraries locally;&lt;&#x2F;li&gt;
204&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;addons.mozilla.org&#x2F;en-US&#x2F;firefox&#x2F;addon&#x2F;istilldontcareaboutcookies&quot;&gt;I still don’t care about cookies&lt;&#x2F;a&gt;, to hide and auto-reject cookie warnings;&lt;&#x2F;li&gt;
205&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;addons.mozilla.org&#x2F;en-US&#x2F;firefox&#x2F;addon&#x2F;libredirect&quot;&gt;LibRedirect&lt;&#x2F;a&gt;, a redirector for &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;mendel5&#x2F;alternative-front-ends&quot;&gt;alternative front-ends&lt;&#x2F;a&gt;;&lt;&#x2F;li&gt;
206&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;addons.mozilla.org&#x2F;en-US&#x2F;firefox&#x2F;addon&#x2F;sponsorblock&quot;&gt;SponsorBlock&lt;&#x2F;a&gt;, to skip YouTube sponsorships automagically;&lt;&#x2F;li&gt;
207&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;addons.mozilla.org&#x2F;en-US&#x2F;firefox&#x2F;addon&#x2F;ublock-origin&quot;&gt;uBlock Origin&lt;&#x2F;a&gt;, the best ad-blocker.&lt;&#x2F;li&gt;
208&lt;&#x2F;ul&gt;
209&lt;h2 id=&quot;customize-your-de&quot;&gt;Customize your DE&lt;&#x2F;h2&gt;
210&lt;p&gt;Install the last required packages for desktop usability:&lt;&#x2F;p&gt;
211&lt;pre&gt;&lt;code&gt;sudo xbps-install -S vpm xfce4-whiskermenu-plugin xfce4-clipman-plugin \
212xfce4-pulseaudio-plugin xfce4-screenshooter xclip micro neovim mpv yt-dlp
213&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
214&lt;p&gt;Remove orphaned and cached packages:&lt;&#x2F;p&gt;
215&lt;pre&gt;&lt;code&gt;sudo xbps-remove -Oo
216&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
217&lt;p&gt;Now, open XFCE’s Settings Manager and set the following options:&lt;&#x2F;p&gt;
218&lt;ul&gt;
219&lt;li&gt;Appearance → Style → Choose “Adwaita-dark”&lt;&#x2F;li&gt;
220&lt;li&gt;Desktop → Background → &lt;em&gt;&amp;lt;Choose your favorite wallpaper&amp;gt;&lt;&#x2F;em&gt;&lt;&#x2F;li&gt;
221&lt;li&gt;Desktop → Icons → Set “Icon type” to “None”&lt;&#x2F;li&gt;
222&lt;li&gt;Panel → &lt;em&gt;&amp;lt;Customize your panels&amp;gt;&lt;&#x2F;em&gt;&lt;&#x2F;li&gt;
223&lt;li&gt;Screensaver → Disable “Enable Screensaver”&lt;&#x2F;li&gt;
224&lt;li&gt;Text Editor Settings → Enable:
225&lt;ul&gt;
226&lt;li&gt;“Show line numbers”,&lt;&#x2F;li&gt;
227&lt;li&gt;“Highlight matching brackets”,&lt;&#x2F;li&gt;
228&lt;li&gt;“Wrap long lines”&lt;&#x2F;li&gt;
229&lt;&#x2F;ul&gt;
230&lt;&#x2F;li&gt;
231&lt;li&gt;Window Manager → Style → Button layout → Remove “Shade” button from title bar&lt;&#x2F;li&gt;
232&lt;li&gt;Window Manager → Advanced → Windows snapping → Enable “To other windows”&lt;&#x2F;li&gt;
233&lt;li&gt;Window Manager → Advanced → Wrap workspaces when reaching the screen edge → Disable “With a dragged window”&lt;&#x2F;li&gt;
234&lt;li&gt;Window Manager Tweaks → Cycling → Enable:
235&lt;ul&gt;
236&lt;li&gt;“Cycle through minimized windows in most recently used order”,&lt;&#x2F;li&gt;
237&lt;li&gt;“Cycle through windows on all workspaces”,&lt;&#x2F;li&gt;
238&lt;li&gt;“Raise windows while cycling”&lt;&#x2F;li&gt;
239&lt;&#x2F;ul&gt;
240&lt;&#x2F;li&gt;
241&lt;li&gt;Window Manager Tweaks → Accessibility → Disable:
242&lt;ul&gt;
243&lt;li&gt;“Raise windows when any mouse button is pressed”,&lt;&#x2F;li&gt;
244&lt;li&gt;“Use mouse wheel on title bar to roll up the window”&lt;&#x2F;li&gt;
245&lt;&#x2F;ul&gt;
246&lt;&#x2F;li&gt;
247&lt;li&gt;Window Manager Tweaks → Accessibility → Enable “Notify of urgency by making window’s decoration blink”&lt;&#x2F;li&gt;
248&lt;li&gt;Window Manager Tweaks → Compositor → Enable “Show shadows under popup windows”&lt;&#x2F;li&gt;
249&lt;li&gt;Xfce Terminal Settings → General → Scrolling → Set “Scrollbar is” to “Disabled”&lt;&#x2F;li&gt;
250&lt;li&gt;Xfce Terminal Settings → Appearance →
251&lt;ul&gt;
252&lt;li&gt;enable “Use system font”,&lt;&#x2F;li&gt;
253&lt;li&gt;set “Background” to “Transparent background”,&lt;&#x2F;li&gt;
254&lt;li&gt;set Opacity to 0.80;&lt;&#x2F;li&gt;
255&lt;&#x2F;ul&gt;
256&lt;&#x2F;li&gt;
257&lt;li&gt;Xfce Terminal Settings → Colors → Presets → Choose “Tango”&lt;&#x2F;li&gt;
258&lt;li&gt;Keyboard → Behavior → Enable “Restore num lock state on startup”&lt;&#x2F;li&gt;
259&lt;&#x2F;ul&gt;
260&lt;h2 id=&quot;shortcuts&quot;&gt;Shortcuts&lt;&#x2F;h2&gt;
261&lt;p&gt;Finally, set the following shortcuts:&lt;&#x2F;p&gt;
262&lt;ul&gt;
263&lt;li&gt;Keyboard → Application Shortcuts&lt;&#x2F;li&gt;
264&lt;&#x2F;ul&gt;
265&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Command&lt;&#x2F;th&gt;&lt;th&gt;Shortcut&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
266&lt;tr&gt;&lt;td&gt;&lt;code&gt;exo-open --launch TerminalEmulator&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td&gt;&lt;code&gt;Super&lt;&#x2F;code&gt; + &lt;code&gt;Return&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
267&lt;tr&gt;&lt;td&gt;&lt;code&gt;xfce4-popup-whiskermenu&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td&gt;&lt;code&gt;Super&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
268&lt;tr&gt;&lt;td&gt;&lt;code&gt;xfce4-screenshooter --clipboard --region&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td&gt;&lt;code&gt;Shift&lt;&#x2F;code&gt; + &lt;code&gt;Super&lt;&#x2F;code&gt; + &lt;code&gt;S&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
269&lt;tr&gt;&lt;td&gt;&lt;code&gt;xfce4-screenshooter --clipboard --window&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td&gt;&lt;code&gt;Super&lt;&#x2F;code&gt; + &lt;code&gt;S&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
270&lt;tr&gt;&lt;td&gt;&lt;code&gt;xfce4-screenshooter --clipboard --fullscreen&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td&gt;&lt;code&gt;Print&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
271&lt;tr&gt;&lt;td&gt;&lt;code&gt;sh -c &#x27;xclip -selection clipboard -t image&#x2F;png -o &amp;gt; &quot;$HOME&#x2F;Pictures&#x2F;$(date +%Y-%m-%d_%T).png&quot;&#x27;&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td&gt;&lt;code&gt;Shift&lt;&#x2F;code&gt; + &lt;code&gt;Super&lt;&#x2F;code&gt; + &lt;code&gt;V&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
272&lt;tr&gt;&lt;td&gt;&lt;code&gt;xflock4&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td&gt;&lt;code&gt;Super&lt;&#x2F;code&gt; + &lt;code&gt;L&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
273&lt;tr&gt;&lt;td&gt;&lt;code&gt;loginctl suspend&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td&gt;&lt;code&gt;Shift&lt;&#x2F;code&gt; + &lt;code&gt;Super&lt;&#x2F;code&gt; + &lt;code&gt;L&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
274&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
275</content>
276        
277    </entry>
278    <entry xml:lang="en">
279        <title>Update your mirrors!</title>
280        <published>2023-01-29T00:00:00+00:00</published>
281        <updated>2023-01-29T00:00:00+00:00</updated>
282        
283        <author>
284          <name>
285            
286              BiRabittoh
287            
288          </name>
289        </author>
290        
291        <link rel="alternate" type="text/html" href="https://birabittoh.github.io/blog/reflector/"/>
292        <id>https://birabittoh.github.io/blog/reflector/</id>
293        
294        <content type="html" xml:base="https://birabittoh.github.io/blog/reflector/">&lt;p&gt;Nah, I’m not talking about &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.bathshack.com&#x2F;blog&#x2F;bluetooth-mirrors-everything-you-need-to-know-before-you-buy&#x2F;&quot;&gt;bluetooth mirrors&lt;&#x2F;a&gt;. Mirrors are what powers all distros: they’re a (de)centralized solution for downloading pre-compiled binaries and scripts for your operating system.&lt;&#x2F;p&gt;
295&lt;h2 id=&quot;suspicion&quot;&gt;Suspicion&lt;&#x2F;h2&gt;
296&lt;p&gt;I like always having the most current version of packages, so I usually update my system several times a day. When, after a day, I ran &lt;code&gt;sudo pacman -Syu&lt;&#x2F;code&gt; and it reported the system being up to date, I was pretty weirded out.&lt;&#x2F;p&gt;
297&lt;p&gt;Another day passed, and the system was still up to date. It was not a connection problem, I was connecting to my mirrors and they were reporting absolutely zero updates for my system.&lt;&#x2F;p&gt;
298&lt;h2 id=&quot;problem&quot;&gt;Problem&lt;&#x2F;h2&gt;
299&lt;p&gt;At the third day of stagnation, I was sure something was up. I looked up the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;archlinux.org&#x2F;mirrors&#x2F;status&#x2F;&quot;&gt;Mirror Status&lt;&#x2F;a&gt; page on ArchLinux’s website and saw that loads of mirrors were out of sync.&lt;&#x2F;p&gt;
300&lt;p&gt;I had never touched my mirrorlist before, it was just generated by the  &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;archlinux&#x2F;archinstall&quot;&gt;archinstall&lt;&#x2F;a&gt; script a few months ago; a lot of Arch-based distros by default ship tools to update your mirrorlist, but I honestly thought I’d never need that.&lt;&#x2F;p&gt;
301&lt;p&gt;Pacman’s mirrorlist is located in &lt;code&gt;&#x2F;etc&#x2F;pacman.d&#x2F;mirrorlist&lt;&#x2F;code&gt;. You can filter out uncommented lines with this command:&lt;&#x2F;p&gt;
302&lt;pre&gt;&lt;code&gt;grep -v &amp;quot;^#&amp;quot; &amp;#x2F;etc&amp;#x2F;pacman.d&amp;#x2F;mirrorlist
303&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
304&lt;p&gt;And check the actual status of your mirror(s) on the Mirror Status page linked above.&lt;&#x2F;p&gt;
305&lt;h2 id=&quot;solution&quot;&gt;Solution&lt;&#x2F;h2&gt;
306&lt;p&gt;This will overwrite your mirrorlist, so you’re advised to make a backup before proceeding:&lt;&#x2F;p&gt;
307&lt;pre&gt;&lt;code&gt;sudo cp &amp;#x2F;etc&amp;#x2F;pacman.d&amp;#x2F;mirrorlist &amp;#x2F;etc&amp;#x2F;pacman.d&amp;#x2F;mirrorlist.bak
308&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
309&lt;p&gt;I decided to use &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;xyne.dev&#x2F;projects&#x2F;reflector&#x2F;&quot;&gt;reflector&lt;&#x2F;a&gt; to fix this problem. I didn’t want to have to deal with this again, so I enabled the provided systemd timer.&lt;&#x2F;p&gt;
310&lt;p&gt;First, install it.&lt;&#x2F;p&gt;
311&lt;pre&gt;&lt;code&gt;sudo pacman -S reflector
312&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
313&lt;p&gt;Then, edit &lt;code&gt;&#x2F;etc&#x2F;xdg&#x2F;reflector&#x2F;reflector.conf&lt;&#x2F;code&gt;. I only needed to edit the &lt;code&gt;--country&lt;&#x2F;code&gt; parameter and select countries next to the one where I reside; you can list available countries by running &lt;code&gt;reflector --list-countries&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
314&lt;pre&gt;&lt;code&gt;--save &amp;#x2F;etc&amp;#x2F;pacman.d&amp;#x2F;mirrorlist
315--protocol https
316--country Italy,Switzerland,France,Germany,Austria
317--latest 5
318--sort age
319&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
320&lt;p&gt;Finally, start the service and check if it worked.&lt;&#x2F;p&gt;
321&lt;pre&gt;&lt;code&gt;sudo systemctl start reflector.service
322cat &amp;#x2F;etc&amp;#x2F;pacman.d&amp;#x2F;mirrorlist
323&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
324&lt;p&gt;If everything went smoothly, enable reflector’s timer so it runs weekly.&lt;&#x2F;p&gt;
325&lt;pre&gt;&lt;code&gt;sudo systemctl enable reflector.timer
326&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
327&lt;p&gt;Done!&lt;&#x2F;p&gt;
328&lt;p&gt;Now, by default pacman &lt;em&gt;does&lt;&#x2F;em&gt; update its mirrorlist. It creates a file called &lt;code&gt;mirrorlist.pacnew&lt;&#x2F;code&gt; and it expects you to pick your favorite mirrors each time its generated. You can disable this (now unneeded) behavior by uncommenting and setting &lt;code&gt;NoExtract&lt;&#x2F;code&gt; in &lt;code&gt;&#x2F;etc&#x2F;pacman.conf&lt;&#x2F;code&gt;:&lt;&#x2F;p&gt;
329&lt;pre&gt;&lt;code&gt;...
330NoExtract = &amp;#x2F;etc&amp;#x2F;pacman.d&amp;#x2F;mirrorlist
331
332# Misc options
333Color
334ILoveCandy
335ParallelDownloads = 3
336...
337&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
338</content>
339        
340    </entry>
341    <entry xml:lang="en">
342        <title>The AI takeover is near?</title>
343        <published>2022-09-21T00:00:00+00:00</published>
344        <updated>2022-09-21T00:00:00+00:00</updated>
345        
346        <author>
347          <name>
348            
349              BiRabittoh
350            
351          </name>
352        </author>
353        
354        <link rel="alternate" type="text/html" href="https://birabittoh.github.io/blog/ai-art-contest/"/>
355        <id>https://birabittoh.github.io/blog/ai-art-contest/</id>
356        
357        <content type="html" xml:base="https://birabittoh.github.io/blog/ai-art-contest/">&lt;h2 id=&quot;context&quot;&gt;Context&lt;&#x2F;h2&gt;
358&lt;p&gt;August 29, 2022.
359The Colorado State Fair gives out prizes for various art categories in a contest. Let’s have a look at &lt;em&gt;Théâtre D’opéra Spatial&lt;&#x2F;em&gt;, the winner for category no.5: &lt;em&gt;Digital Arts &#x2F; Digitally-Manipulated Photography&lt;&#x2F;em&gt; (&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;coloradostatefair.com&#x2F;wp-content&#x2F;uploads&#x2F;2022&#x2F;08&#x2F;2022-Fine-Arts-First-Second-Third.pdf&quot;&gt;leaderboard&lt;&#x2F;a&gt;).&lt;&#x2F;p&gt;
360&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;www.tuttotech.net&#x2F;wp-content&#x2F;uploads&#x2F;2022&#x2F;09&#x2F;Intelligenza-artificiale-quadro-1.jpg&quot; alt=&quot;Théâtre D’opéra Spatial&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
361&lt;p&gt;That same day, a heated debate started on Twitter (as if that weren’t the norm there). That’s because the winner of this art contest used Midjourney, a popular AI image generator, to generate their entry.&lt;&#x2F;p&gt;
362&lt;blockquote&gt;
363&lt;p&gt;We’re watching the death of artistry unfold right before our eyes — if creative jobs aren’t safe from machines, then even high-skilled jobs are in danger of becoming obsolete&lt;&#x2F;p&gt;
364&lt;&#x2F;blockquote&gt;
365&lt;p&gt;Source: &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;nitter.it&#x2F;omnimorpho&#x2F;status&#x2F;1564782875072872450&quot;&gt;@OmniMorpho&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
366&lt;h2 id=&quot;the-debate&quot;&gt;The debate&lt;&#x2F;h2&gt;
367&lt;p&gt;While you could argue that the effort the creator (Jason M. Allen) put in was minuscule in comparison to the years of study and preparation an artist needs to undertake, I don’t think that actually matters when it comes to winning a competition or making an artpiece in general.&lt;&#x2F;p&gt;
368&lt;p&gt;First of all, &lt;em&gt;art is totally subjective&lt;&#x2F;em&gt;. I could spend 5 seconds drawing a stick figure in MSPaint and have a contemporary art critique tell me it’s garbage, while people from another age might see a complaint towards modern, lifeless technology. This feels like a hyperbole, but I don’t think it’s that far from reality.&lt;&#x2F;p&gt;
369&lt;p&gt;In 1961 Italian artist Piero Manzoni put his &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Artist%27s_Shit&quot;&gt;literal feces&lt;&#x2F;a&gt; in 90 cans and sold them as an artpiece. He also created a “magic base”, in the sense that you could put anything or anyone on it and that would become an artpiece in itself.&lt;&#x2F;p&gt;
370&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;upload.wikimedia.org&#x2F;wikipedia&#x2F;commons&#x2F;c&#x2F;c2&#x2F;Piero_Manzoni_-_Merda_D%27artista_%281961%29_-_panoramio.jpg&quot; alt=&quot;Merda d’artista&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
371&lt;p&gt;He created this because he saw &lt;em&gt;art as a relic of the artist&lt;&#x2F;em&gt;. Any object or even person can become an art piece if an artist puts his sign on it. But how do you become an artist? By making something that makes people discuss, something new and innovative that nobody ever thought about doing before. That’s what Mr. Allen did and that’s why I think he deserves his price.&lt;&#x2F;p&gt;
372&lt;p&gt;Before photography was invented, artists generally strove to make their painting as realistic as possible. As soon as people were able to cheaply make perfect copies of reality, artists began experimenting with new techniques, things that a camera could never do. Allen showed everyone how technology just reached a new milestone, introducing a new need for artists to innovate and create something exclusive to their abilities. Something an AI can’t reproduce. Yet.&lt;&#x2F;p&gt;
373&lt;h2 id=&quot;a-slight-hole-in-this-argument&quot;&gt;A slight hole in this argument&lt;&#x2F;h2&gt;
374&lt;p&gt;But wait. The competition judges did not know he used an AI to make his art piece. So how could they have considered it innovative and revolutionary?&lt;&#x2F;p&gt;
375&lt;p&gt;If you take a look at the 2nd and 3rd entries of the contest, you’ll see they’re clearly made by humans and clearly have a symbolic value. This does not apply to Allen’s entry, which is just VERY good looking. If I were a judge, I would not have chosen Allen’s work to win the competition, but again, &lt;em&gt;art is subjective&lt;&#x2F;em&gt;.&lt;&#x2F;p&gt;
376&lt;p&gt;I tried to find out more about the criteria for the evaluation of this contest’s entries and I found this:&lt;&#x2F;p&gt;
377&lt;blockquote&gt;
378&lt;p&gt;“And there should be no lagging or hanging back by anybody who has anything worth exhibiting”&lt;&#x2F;p&gt;
379&lt;&#x2F;blockquote&gt;
380&lt;p&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;coloradostatefair.com&#x2F;competitions&#x2F;general-entry-fine-arts&#x2F;fine-arts-exhibition&#x2F;&quot;&gt;Source&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
381&lt;p&gt;Also, they wrote this about the “under 18” art showcase:&lt;&#x2F;p&gt;
382&lt;blockquote&gt;
383&lt;p&gt;Art must be original in painting, drawing, sculpture, ceramics, photography, jewelry, and more! Have fun, be creative, enter to win.&lt;&#x2F;p&gt;
384&lt;&#x2F;blockquote&gt;
385&lt;p&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;coloradostatefair.com&#x2F;competitions&#x2F;general-entry-fine-arts&#x2F;amateur-art-2&#x2F;&quot;&gt;Source&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
386&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;&#x2F;h2&gt;
387&lt;p&gt;Whichever way you put it, Théâtre D’opéra Spatial deserves to be called an art piece. The judges apparently valued aesthetics more than symbolic meaning, and their opinion cannot be logically disputed. Everyone gives a value to an artpiece based on their personal studies and experiences.&lt;&#x2F;p&gt;
388&lt;p&gt;Now, knowing about the tools he used, we know Allen did something that nobody ever thought (or managed) to do before. If he hadn’t won that contest, this debate would never have started, but he did. That’s what makes him an artist and, consequently, his creation a work of art.&lt;&#x2F;p&gt;
389</content>
390        
391    </entry>
392    <entry xml:lang="en">
393        <title>My opinion on FOMO</title>
394        <published>2022-03-06T00:00:00+00:00</published>
395        <updated>2022-03-06T00:00:00+00:00</updated>
396        
397        <author>
398          <name>
399            
400              BiRabittoh
401            
402          </name>
403        </author>
404        
405        <link rel="alternate" type="text/html" href="https://birabittoh.github.io/blog/fomo/"/>
406        <id>https://birabittoh.github.io/blog/fomo/</id>
407        
408        <content type="html" xml:base="https://birabittoh.github.io/blog/fomo/">&lt;h2 id=&quot;what-are-you-even-talking-about&quot;&gt;What are you even talking about&lt;&#x2F;h2&gt;
409&lt;p&gt;Let me preface this by saying I know nothing about psychology and behavioral studies, so anything you read here is just my personal opinion.&lt;&#x2F;p&gt;
410&lt;p&gt;Let’s start with defining FOMO, to make sure we’re all on the same spectrum.&lt;&#x2F;p&gt;
411&lt;blockquote&gt;
412&lt;p&gt;Fear of missing out (FOMO) is the feeling of apprehension that one is either not in the know or missing out on information, events, experiences, or life decisions that could make one’s life better.&lt;&#x2F;p&gt;
413&lt;&#x2F;blockquote&gt;
414&lt;p&gt;Source: &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Fear_of_missing_out&quot;&gt;Wikipedia&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
415&lt;p&gt;The Fear Of Missing Out is what drives modern society; It keeps us hooked to mainstream social media and drives newbie investors towards obvious rugpulls.&lt;&#x2F;p&gt;
416&lt;p&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.sciencedirect.com&#x2F;science&#x2F;article&#x2F;abs&#x2F;pii&#x2F;S0747563213000800&quot;&gt;Studies&lt;&#x2F;a&gt; have correlated it to various negative behaviors, like social media addiction and even distracted driving.&lt;&#x2F;p&gt;
417&lt;h2 id=&quot;am-i-affected-by-this&quot;&gt;Am I affected by this?&lt;&#x2F;h2&gt;
418&lt;p&gt;Probably. As long as you have a friend group and an account on any mainstream social network, yes you are.
419It’s the feeling that drives you to check out your friends’ Stories on Instagram, the dread you feel when somebody else reaches a life goal before you do, the fear that pushes people to buy limited-time merchandise before it runs out of stock.&lt;&#x2F;p&gt;
420&lt;h2 id=&quot;my-experience&quot;&gt;My experience&lt;&#x2F;h2&gt;
421&lt;p&gt;FOMO has been a constant for my entire life and just now I’m trying to write this as a way to think critically about it and try to avoid being pushed by stupid instincts. I’ve come to realize that Discord is the thing that slows down my productivity the most: as soon as I enter a voice chat with my friend, I stop being productive in any capacity and I’m also uncapable of resuming for the whole day.&lt;&#x2F;p&gt;
422&lt;p&gt;Even after I turn off my PC, I still think about what my friends are doing and what I’m missing out on, be it a Gartic Phone round or any stupid discussion I might have had on there. The biggest problem is, it’s entirely subconscious. I often find myself uncapable of concentrating and don’t know what’s the cause of it; I’ve been eliminating elements one by one to find out the cause of this and turns out that distancing myself totally from social media AND Discord actually solves it.&lt;&#x2F;p&gt;
423&lt;p&gt;It’s not immediate either, it took a few days for me but your mileage may vary depending on a lot of factors. Of course, I plan on restoring my online presence after I have graduated but it’s useful to know what exactly was causing me to waste all of my time for months.&lt;&#x2F;p&gt;
424&lt;h2 id=&quot;any-solutions&quot;&gt;Any solutions?&lt;&#x2F;h2&gt;
425&lt;p&gt;I think you should evaluate possible solutions yourself, as FOMO is strictly dependant on your personality and experiences. You could try eliminating or replacing parts of your habits regularly, like I did, to find out if something is more destructive than you might initially think.&lt;&#x2F;p&gt;
426&lt;p&gt;As I was researching this, I found out about JOMO. It stands for “Joy Of Missing Out” and it’s the exact opposite thing.
427Embracing JOMO means you dedicate a few hours of the day to yourself and stop worrying about how your friends are doing at life and which continent gets invaded next.&lt;&#x2F;p&gt;
428&lt;p&gt;Modern society does not wait for anybody, there’s nothing wrong in taking a break and focusing on yourself. You can always catch up later.&lt;&#x2F;p&gt;
429&lt;ul&gt;
430&lt;li&gt;&lt;a href=&quot;gopher:&#x2F;&#x2F;republic.circumlunar.space:70&#x2F;0&#x2F;~katolaz&#x2F;phlog&#x2F;20190219_fomo.txt&quot;&gt;Another interesting article about FOMO&lt;&#x2F;a&gt;, on Gopher;&lt;&#x2F;li&gt;
431&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;gopherproxy.vern.cc&#x2F;gopher&#x2F;republic.circumlunar.space:70&#x2F;0&#x2F;~katolaz&#x2F;phlog&#x2F;20190219_fomo.txt&quot;&gt;Same article&lt;&#x2F;a&gt;, but proxied to be viewed on modern browsers.&lt;&#x2F;li&gt;
432&lt;&#x2F;ul&gt;
433</content>
434        
435    </entry>
436    <entry xml:lang="en">
437        <title>Data volatility</title>
438        <published>2022-01-14T00:00:00+00:00</published>
439        <updated>2022-01-14T00:00:00+00:00</updated>
440        
441        <author>
442          <name>
443            
444              BiRabittoh
445            
446          </name>
447        </author>
448        
449        <link rel="alternate" type="text/html" href="https://birabittoh.github.io/blog/data-volatility/"/>
450        <id>https://birabittoh.github.io/blog/data-volatility/</id>
451        
452        <content type="html" xml:base="https://birabittoh.github.io/blog/data-volatility/">&lt;p&gt;I tried to access my domain at smol.pub yesterday and I noticed the service went down. Fear started rushing through my veins as I noticed I would have to choose another platform and, most importantly, write everything back from scratch since I don’t have a backup. This made me think about the importance of always having a backup stored somewhere.&lt;&#x2F;p&gt;
453&lt;h2 id=&quot;why-though&quot;&gt;Why though&lt;&#x2F;h2&gt;
454&lt;p&gt;Creating a backup of your important data is crucial. On a daily basis, people discover vulnerabilities that allow remote code execution on any host machine. Try to imagine what would happen if someone ran a ransomware program on your PC. Would you be safe?&lt;&#x2F;p&gt;
455&lt;p&gt;This genuinely feels like fearmongery, but it’s something that can seriously happen: you can be attacked by someone that specifically targets you. If you run Windows, you might be part of a botnet (think about all of the unsigned EXE files you’ve run since you installed the OS). What happens when someone doesn’t need your machine anymore? Well, that person might try and squeeze some money from you by holding your files hostage.&lt;&#x2F;p&gt;
456&lt;h2 id=&quot;cloud-backups&quot;&gt;Cloud backups&lt;&#x2F;h2&gt;
457&lt;p&gt;Most people define cloud storage as follows:&lt;&#x2F;p&gt;
458&lt;blockquote&gt;
459&lt;p&gt;Cloud storage is a way for businesses and consumers to save data securely online so that it can be accessed anytime from any location and easily shared with those who are granted permission. Cloud storage also offers a way to back up data to facilitate recovery off-site.&lt;&#x2F;p&gt;
460&lt;&#x2F;blockquote&gt;
461&lt;p&gt;Source: &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.investopedia.com&#x2F;terms&#x2F;c&#x2F;cloud-storage.asp&quot;&gt;Investopedia&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
462&lt;p&gt;In reality, cloud storage is no more than some dude’s computer.&lt;&#x2F;p&gt;
463&lt;p&gt;As soon as you upload your personal data to any service, you’re trusting it to store it in a safe and private way. If that software is not open source, you’re basically asking to get spied on.&lt;&#x2F;p&gt;
464&lt;p&gt;Most people do not care about that, that’s why cloud storage solutions are very popular and basically enabled by default on any device you might buy nowadays.&lt;&#x2F;p&gt;
465&lt;p&gt;I personally use cloud storage but I would never actually upload anything I actually care about on it…
466If you have to choose, I have a few suggestions.&lt;&#x2F;p&gt;
467&lt;h3 id=&quot;don-t-trust-non-encrypted-solutions&quot;&gt;Don’t trust non-encrypted solutions&lt;&#x2F;h3&gt;
468&lt;p&gt;Everybody has a Google account nowadays. If you forget your password, there is a way to recover it and get access to everything inside, including your Google Drive contents. As long as there is a password that can be changed or reset, your files are NOT encrypted and fully visible to anyone who has access to the Drive servers (Google or any other government agency that might want to take a peek).
469Most cloud solutions work like this, and it’s actually frightening how many people trust megacorporations to have all of their private information available unencrypted.&lt;&#x2F;p&gt;
470&lt;p&gt;One encrypted solution I use is mega.nz.
471While I can’t be sure that the mega team isn’t spying on me, at least they’re hiding it well if they do.
472Mega includes an encryption key with your account, which is not tied to your login information.
473This means that if you lose your key, you also lost all of your files, there is absolutely no way to get them back, even if you change your account password.&lt;&#x2F;p&gt;
474&lt;p&gt;Now, Mega is not open source, so you can never be sure that there isn’t any backdoor, or that keys aren’t stored together with your personal information, but at least it’s something.&lt;&#x2F;p&gt;
475&lt;h3 id=&quot;encrypt-your-data-yourself&quot;&gt;Encrypt your data yourself&lt;&#x2F;h3&gt;
476&lt;p&gt;If you really need to trust Google, Apple or Amazon with your files, you can encrypt your files locally with the gpg command. This way, feds and big tech are going to need another password to actually access your private files.&lt;&#x2F;p&gt;
477&lt;p&gt;It’s really easy, just two commands mainly.&lt;&#x2F;p&gt;
478&lt;p&gt;Encrypt:&lt;&#x2F;p&gt;
479&lt;pre&gt;&lt;code&gt;gpg -c --cipher-algo AES256 secret.file
480&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
481&lt;p&gt;Decrypt:&lt;&#x2F;p&gt;
482&lt;pre&gt;&lt;code&gt;gpg segret.file.gpg
483&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
484&lt;p&gt;If you need to encrypt a folder, you can compress it first:&lt;&#x2F;p&gt;
485&lt;pre&gt;&lt;code&gt;tar -cf output.tar.gz secret-folder
486&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
487&lt;p&gt;Then encrypt your output.tar.gz archive as if it was a single file.&lt;&#x2F;p&gt;
488&lt;p&gt;After decrypting it, you can extract your archive through this command:&lt;&#x2F;p&gt;
489&lt;pre&gt;&lt;code&gt;tar -xf output.tar.gz
490&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
491&lt;p&gt;Check out Mental Outlaw’s &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;invidio.us&#x2F;M0O7vhvQW30&quot;&gt;video&lt;&#x2F;a&gt; about this very topic.&lt;&#x2F;p&gt;
492&lt;h2 id=&quot;local-backups&quot;&gt;Local backups&lt;&#x2F;h2&gt;
493&lt;p&gt;This is the best way to backup your data.
494You don’t need to encrypt it if you have full physical access to your data, but you would still be vulnerable if it gets lost or stolen, so it’s always better to keep it encrypted and safe.&lt;&#x2F;p&gt;
495&lt;p&gt;Of course, if you have a backup hard drive always plugged in your PC, it’s not really secure at all, since one could remotely execute a ransomware that encrypts everything in your PC, including all drives both internal and external, so you would get your backup encrypted with the original files voiding everything you’ve done.&lt;&#x2F;p&gt;
496&lt;p&gt;This is why you should keep a GNU&#x2F;Linux device that only serves backup purposes and is turned OFF most of the time. As long as no current runs through your CPU, your files are safe. You should only turn it on once a month and copy everything important over, so you have a safe and offline backup.&lt;&#x2F;p&gt;
497&lt;p&gt;You could also use a USB stick or external hard drive, as long as you only plug them in your PC when necessary.&lt;&#x2F;p&gt;
498</content>
499        
500    </entry>
501    <entry xml:lang="en">
502        <title>You should probably use Linux</title>
503        <published>2021-04-29T00:00:00+00:00</published>
504        <updated>2021-04-29T00:00:00+00:00</updated>
505        
506        <author>
507          <name>
508            
509              BiRabittoh
510            
511          </name>
512        </author>
513        
514        <link rel="alternate" type="text/html" href="https://birabittoh.github.io/blog/you-should-use-linux/"/>
515        <id>https://birabittoh.github.io/blog/you-should-use-linux/</id>
516        
517        <content type="html" xml:base="https://birabittoh.github.io/blog/you-should-use-linux/">&lt;h2 id=&quot;why-are-you-writing-this&quot;&gt;Why are you writing this?&lt;&#x2F;h2&gt;
518&lt;p&gt;As you probably know, I like using free software (free as in &lt;em&gt;freedom&lt;&#x2F;em&gt;, not free of charge). Most people see users with this mentality as a group of paranoid psychopaths who circlejerk about their custom systems. While that’s in part true, there’s much more to it.&lt;&#x2F;p&gt;
519&lt;p&gt;I often get asked by Windows or MacOS users about why they should think about switching to a GNU&#x2F;Linux OS (which I’ll be referring to as Linux); I’m just going to address everything here so I don’t have to repeat it to everyone who asks.&lt;&#x2F;p&gt;
520&lt;p&gt;I’ll try to address every aspect where Linux is objectively better than the competition, then look at some reasons you &lt;em&gt;could&lt;&#x2F;em&gt; have to stick to Windows or, like I did, set up a dual boot.&lt;&#x2F;p&gt;
521&lt;h2 id=&quot;what-is-free-software&quot;&gt;What is free software?&lt;&#x2F;h2&gt;
522&lt;p&gt;First of all, let’s read the official definition for it.&lt;&#x2F;p&gt;
523&lt;blockquote&gt;
524&lt;p&gt;A program is free software if the program’s users have the four essential freedoms:
5250. The freedom to run the program as you wish, for any purpose.&lt;&#x2F;p&gt;
526&lt;ol&gt;
527&lt;li&gt;The freedom to study how the program works, and change it so it does your computing as you wish.&lt;&#x2F;li&gt;
528&lt;li&gt;The freedom to redistribute copies so you can help others.&lt;&#x2F;li&gt;
529&lt;li&gt;The freedom to distribute copies of your modified versions to others. By doing this you can give the whole community a chance to benefit from your changes.
530A program is free software if it gives users adequately all of these freedoms.&lt;&#x2F;li&gt;
531&lt;&#x2F;ol&gt;
532&lt;&#x2F;blockquote&gt;
533&lt;p&gt;Source: &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.gnu.org&#x2F;philosophy&#x2F;free-sw.en.html&quot;&gt;Free Software Foundation&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
534&lt;p&gt;Let’s examine how this freedom is beneficial.&lt;&#x2F;p&gt;
535&lt;h3 id=&quot;linux-is-open&quot;&gt;Linux is open&lt;&#x2F;h3&gt;
536&lt;p&gt;Using free software on an open source OS means you always know what’s going on with your PC; if you get curious or have any suspects you can always read the source code (or trust that somebody already did it in your place).&lt;&#x2F;p&gt;
537&lt;p&gt;The good thing about Linux is that it doesn’t hide anything from you. Whenever there’s a problem, you can read various logfiles (with different levels of detail) to identify and troubleshoot your problem; it’s also easier to fix problems since you actually know what each program and file does, while troubleshooting in closed-source OSes is like trying to fix a car engine without being able to open the hood.&lt;&#x2F;p&gt;
538&lt;p&gt;Some distros, like &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;archlinux.org&#x2F;&quot;&gt;Arch Linux&lt;&#x2F;a&gt;, require you to set everything up from scratch; this means you always know exactly which programs you’re installing and their exact function inside the Linux environment. I would only advise this kind of installation to advanced users, but after you do it the first time you’ll certainly learn a lot about how a Linux OS actually works.&lt;&#x2F;p&gt;
539&lt;h3 id=&quot;linux-is-secure&quot;&gt;Linux is secure&lt;&#x2F;h3&gt;
540&lt;p&gt;Every single FOSS-oriented website makes this point, I’m just going to re-iterate it just to be sure.
541The source code being publicly available doesn’t make software less secure. In fact, it’s way more secure since more people can work on it and fix security flaws.
542&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Security_through_obscurity&quot;&gt;Security through obscurity&lt;&#x2F;a&gt; just doesn’t work. You can see that by looking at the number of security breaches that are found every day on closed-source software.&lt;&#x2F;p&gt;
543&lt;p&gt;If you make your software closed-source you’re basically betting you and your small team are able to create a better and more secure code than every single other person in the planet. Of course, this assumption is stupid and irrealistic, that’s why FOSS software will always be faster and more secure than closed-source alternatives.&lt;&#x2F;p&gt;
544&lt;p&gt;This goes for every kind of software, including the very operating system code. GNU&#x2F;Linux based operating systems are the most secure choice for every kind of user.
545More often than not, you can trust the software programmers without even reading the code yourself: since they’re sharing every single line of code, they probably don’t have anything to hide. If they do include malicious code, someone else will probably have noticed by now, provided you didn’t build and run that software straight from the repo a few minutes after the last commit lol&lt;&#x2F;p&gt;
546&lt;p&gt;You can also be safe against external attackers. Linux’s &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;gs.statcounter.com&#x2F;os-market-share&#x2F;desktop&#x2F;worldwide&#x2F;#monthly-202012-202012-bar&quot;&gt;market share&lt;&#x2F;a&gt; on desktop and laptop PCs was less than 2% as of January 2021, and those people are probably much more tech-savy than the other OSes’ users…
547This means attackers will likely target Windows or OS X users, so you can be safe even without using an antivirus or anything similar (even though there &lt;em&gt;are&lt;&#x2F;em&gt; &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.clamav.net&#x2F;&quot;&gt;choices&lt;&#x2F;a&gt; for that, too).&lt;&#x2F;p&gt;
548&lt;h3 id=&quot;linux-is-smarter&quot;&gt;Linux is smarter&lt;&#x2F;h3&gt;
549&lt;p&gt;Saying that Linux is for &lt;em&gt;everybody&lt;&#x2F;em&gt; would be a risky take. My point is that you &lt;em&gt;probably&lt;&#x2F;em&gt; could benefit from using a Linux system.&lt;&#x2F;p&gt;
550&lt;p&gt;If you’re a programmer, Linux is objectively the best OS you can use. As a programmer, I love using the terminal to do stuff more quickly. I also love the level of integration you can have with the system: a lot of programs are designed with a client&#x2F;server model, which makes them work in complex scenarios as long as you have the time and patience to configure them properly.&lt;&#x2F;p&gt;
551&lt;p&gt;While Windows still has to retain compatibility with legacy systems, Linux is much more free to do its own thing. Linux will always be smarter and more modern. Just think about the filesystem structure.
552Windows is forced to retain a confusing structure, where you have a ton of (not) hidden folders where programmers can store their necessary data… But there are so many choices and they’re not coherent! If I wanted to create a backup of all my settings and save files, I would have to copy all of these folders:&lt;&#x2F;p&gt;
553&lt;pre&gt;&lt;code&gt;C:\ProgramData; C:\Users\username\AppData; C:\Users\username\Documents\my games;
554&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
555&lt;p&gt;And I would still miss all of the informations saved on the awful Windows Registry…&lt;&#x2F;p&gt;
556&lt;p&gt;On Linux, you just copy the .config folder in your home directory.&lt;&#x2F;p&gt;
557&lt;p&gt;Moreover, in Windows 10 you have two ways of editing system settings: the Control Panel and the Windows Settings. But  sometimes editing a setting on one side does NOT reflect on the other!
558Windows is literally the most confusing OS you can start with… And people still recommend it to beginners over Linux. It’s just dumb.&lt;&#x2F;p&gt;
559&lt;h3 id=&quot;linux-is-versatile&quot;&gt;Linux is versatile&lt;&#x2F;h3&gt;
560&lt;p&gt;Now, to the point everybody’s been waiting for. Yes, none of the Adobe programs will run &lt;em&gt;natively&lt;&#x2F;em&gt; on any Linux distro. That means if you’re a creative person and you need those programs on a daily basis, maybe you should consider dual booting…&lt;&#x2F;p&gt;
561&lt;p&gt;BUT, steps are being made in two different directions:&lt;&#x2F;p&gt;
562&lt;ul&gt;
563&lt;li&gt;Valve is working on Proton, which allows the execution of most Windows-only applications and games on any Linux system.&lt;&#x2F;li&gt;
564&lt;li&gt;More and more open-source alternatives to closed-source standards are being developed by the day.&lt;&#x2F;li&gt;
565&lt;&#x2F;ul&gt;
566&lt;p&gt;While Proton is interesting, I always prefer to run open source software, especially if we’re talking about programs that are also free of charge: imagine trusting a closed-source software you didn’t pay for.&lt;&#x2F;p&gt;
567&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;&#x2F;h2&gt;
568&lt;p&gt;Ok, now I’m getting repetitive so I’ll just get to the point.
569Linux is constantly evolving and it has now become the top choice for a lot of people, so let’s try and consider every use case.&lt;&#x2F;p&gt;
570&lt;ul&gt;
571&lt;li&gt;If you’re a professional that’s deep in the industry and you need some &lt;em&gt;specific&lt;&#x2F;em&gt; program to run perfectly on your device… Yeah, you should use Windows.&lt;&#x2F;li&gt;
572&lt;li&gt;If you’re a power user that’s just used to paid software, maybe consider trying out some open source alternative?&lt;&#x2F;li&gt;
573&lt;li&gt;If you’re a gamer, I say you should dual boot. I have a Windows 10 LTSC installation that I use &lt;em&gt;exclusively&lt;&#x2F;em&gt; for gaming. While Proton has made Linux gaming feasable, the experience isn’t always the best, especially if you play games that require millisecond-grade accuracy, like rhythm games or competitive shooters.&lt;&#x2F;li&gt;
574&lt;li&gt;If you’re a student or employee, Linux would be perfect for you. You can quickly take notes and do office work without the annoying Windows 10 updates popping up and rebooting your system seemingly at random. Also, any Linux system will probably be more light on resource usage than Windows, so you could take some old hardware you thought would never be using again and actually make something useful with it.&lt;&#x2F;li&gt;
575&lt;li&gt;If you work in the programming or engineering field, then what are you waiting for? You should try out a Linux OS as soon as possible, and not in a virtual machine. A lot of my friends said they didn’t like Linux because it felt slow… While running on a VM… Duh? Try it out on real hardware so you can feel its superiority.&lt;&#x2F;li&gt;
576&lt;&#x2F;ul&gt;
577&lt;p&gt;Well, I can’t possibly cover &lt;em&gt;every&lt;&#x2F;em&gt; profession and use-case, but I hope I was clear about those I managed to list above.
578I’m going to conclude this article with some interesting links about Linux and FOSS you definitely should check out.&lt;&#x2F;p&gt;
579&lt;ul&gt;
580&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;islinuxabout.xyz&#x2F;&quot;&gt;Is Linux About…?&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
581&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;usermod.net&#x2F;why-use-linux&#x2F;&quot;&gt;usermod.net - Why use Linux?&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
582&lt;&#x2F;ul&gt;
583</content>
584        
585    </entry>
586    <entry xml:lang="en">
587        <title>Modern web bloat</title>
588        <published>2021-04-09T00:00:00+00:00</published>
589        <updated>2021-04-09T00:00:00+00:00</updated>
590        
591        <author>
592          <name>
593            
594              BiRabittoh
595            
596          </name>
597        </author>
598        
599        <link rel="alternate" type="text/html" href="https://birabittoh.github.io/blog/modern-web-bloat/"/>
600        <id>https://birabittoh.github.io/blog/modern-web-bloat/</id>
601        
602        <content type="html" xml:base="https://birabittoh.github.io/blog/modern-web-bloat/">&lt;p&gt;This is it. My first blog post; I suppose this officially makes be a boomer.&lt;&#x2F;p&gt;
603&lt;h2 id=&quot;inspiration&quot;&gt;Inspiration&lt;&#x2F;h2&gt;
604&lt;p&gt;Some time ago I stumbled upon a &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;invidio.us&#x2F;cvDyQUpaFf4&quot;&gt;video&lt;&#x2F;a&gt;, where the popular Linux influencer &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;lukesmith.xyz&quot;&gt;Luke Smith&lt;&#x2F;a&gt; talked about the effort of looking up a Chicken Parmesan recipe in 2021 without having any adblock or privacy extensions enabled.&lt;&#x2F;p&gt;
605&lt;p&gt;That’s because most modern websites take a lot of time to load framework files, ads and trackers. While that’s kinda functional, I think we should change our habits and start making simple websites again.&lt;&#x2F;p&gt;
606&lt;p&gt;Yeah, this looks like a first world problem and it probably is, but it’s not as subtle as you think. I’m actually convinced that the internet could actually benefit from this way of thinking, and that’s what I’m going to talk about.&lt;&#x2F;p&gt;
607&lt;h2 id=&quot;the-problem&quot;&gt;The problem&lt;&#x2F;h2&gt;
608&lt;p&gt;In the early days of the internet, it was common for webpages to be written using only HTML, so we had very ugly but functional websites.&lt;&#x2F;p&gt;
609&lt;p&gt;As technology went on, sites needed to get more modern-looking and interactive; that’s why CSS and JavaScript were introduced into the mix, allowing for dynamic websites that could actually change based on user input.
610As of nowadays, a lot more stuff went into the mix, to the point where the browser is now the most common program we use in our OS: you can, in fact, use it for doing things that 15+ years ago required external programs, like:&lt;&#x2F;p&gt;
611&lt;ul&gt;
612&lt;li&gt;playing music and video,&lt;&#x2F;li&gt;
613&lt;li&gt;reading PDF files,&lt;&#x2F;li&gt;
614&lt;li&gt;doing office work,&lt;&#x2F;li&gt;
615&lt;li&gt;checking e-mail,&lt;&#x2F;li&gt;
616&lt;li&gt;cloud storage,&lt;&#x2F;li&gt;
617&lt;li&gt;etc…&lt;&#x2F;li&gt;
618&lt;&#x2F;ul&gt;
619&lt;p&gt;I guess people just find it more comfortable if they can do everything with a single program, and they’re not to blame for that. This IS the easiest approach for unexperienced people: just have a program that does everything, instead of having to learn how to use a bunch of different software.&lt;&#x2F;p&gt;
620&lt;p&gt;This plethora of uses is possible today because of the existence of various libraries and frameworks that simplify JavaScript and CSS and make them easier to develop complicated websites with.
621This is good for basic web users who just want functional websites, and great for developers since they can easily code advanced functions inside the browser, which makes them work in every OS.&lt;&#x2F;p&gt;
622&lt;p&gt;Sadly, this brings us to the problem: any modern website has become a burden for any browser to load, since our browser needs to download and parse through each library and often fill the page content as you scroll through.
623In his video, Luke Smith found that a simple Chicken Parmesan recipe would take up to 5-10 megabytes, which doesn’t sound like a lot, but it actually is.&lt;&#x2F;p&gt;
624&lt;p&gt;It’s easier to understand it if you think about it with video-games; any game on 16-bit consoles and earlier, including full-fledged 30+ hour adventures like Final Fantasy 6 and Chrono Trigger, weighs less than one single recipe page (as stated &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;blogs.umass.edu&#x2F;Techbytes&#x2F;2014&#x2F;02&#x2F;10&#x2F;history-of-gaming-storage&#x2F;#attachment_2827&quot;&gt;here&lt;&#x2F;a&gt;).&lt;&#x2F;p&gt;
625&lt;h2 id=&quot;the-solution&quot;&gt;The solution&lt;&#x2F;h2&gt;
626&lt;p&gt;Well, I don’t think this “problem” is getting solved soon, as new frameworks for web development are constantly being introduced. Sadly, it’s a one-way train, but if you’re a web-dev you could actually make a difference yourself!&lt;&#x2F;p&gt;
627&lt;p&gt;I mean, this can not apply to all websites. Some of them just NEED to be as responsive and interactive as they are; most of them actually just became bloated at a certain time period (probably mid-2000s) when having a flashy website was cool and different from what everyone else had.
628Nowadays you can make a difference by using plain HTML and CSS for your website: this ensures your pages will load instantly and be compatible even with the oldest of browsers!
629If you like this philosophy, you can check out other projects that aim for a simpler and faster web, like these ones:&lt;&#x2F;p&gt;
630&lt;ul&gt;
631&lt;li&gt;&lt;a href=&quot;&#x2F;&#x2F;gemini.circumlunar.space&#x2F;&quot;&gt;gemini:&#x2F;&#x2F;&lt;&#x2F;a&gt;: a new, purposefully limited, internet protocol;&lt;&#x2F;li&gt;
632&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;based.cooking&#x2F;&quot;&gt;based.cooking&lt;&#x2F;a&gt;: a modern recipe website based on user collaboration via GitHub;&lt;&#x2F;li&gt;
633&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;wiby.me&#x2F;&quot;&gt;wiby.me&lt;&#x2F;a&gt;: a search engine that aims to only index classic style webpages.&lt;&#x2F;li&gt;
634&lt;&#x2F;ul&gt;
635</content>
636        
637    </entry>
638</feed>