<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Montegasppα Cacilhας</title>
    <description>The latest articles on DEV Community by Montegasppα Cacilhας (@cacilhas).</description>
    <link>https://dev.to/cacilhas</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F423224%2F24661fdf-6ea5-479a-a287-05068ed2f5b7.png</url>
      <title>DEV Community: Montegasppα Cacilhας</title>
      <link>https://dev.to/cacilhas</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/cacilhas"/>
    <language>en</language>
    <item>
      <title>Please Install It for Me</title>
      <dc:creator>Montegasppα Cacilhας</dc:creator>
      <pubDate>Wed, 11 Sep 2024 21:55:29 +0000</pubDate>
      <link>https://dev.to/cacilhas/please-install-it-for-me-3ea9</link>
      <guid>https://dev.to/cacilhas/please-install-it-for-me-3ea9</guid>
      <description>&lt;p&gt;Original post from &lt;a href="////kodumaro.cacilhas.info/2024/09/please.html"&gt;Kodumaro&lt;/a&gt;.&lt;/p&gt;




&lt;p&gt;&lt;a href="//cacilhas.info/img/package.png" class="article-body-image-wrapper"&gt;&lt;img src="//cacilhas.info/img/package.png" alt="Package Management"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Something I consider really amazing is the package management idea, used by open source projects and cannibalised by big techs.&lt;/p&gt;

&lt;p&gt;I’m not talking about programming languages and frameworks, I’m talking about operating system package management. It’s an incredibly good idea.&lt;/p&gt;

&lt;p&gt;You can take any &lt;a href="https://www.gnu.org/" rel="noopener noreferrer"&gt;GNU&lt;/a&gt;/&lt;a href="https://linux.org/" rel="noopener noreferrer"&gt;Linux&lt;/a&gt;, &lt;a href="https://www.wikiwand.com/en/articles/Berkeley_Software_Distribution" rel="noopener noreferrer"&gt;BSD&lt;/a&gt;, or other open source operating system, and there you’ll find a package manager.&lt;/p&gt;

&lt;p&gt;The idea is so good that proprietary systems started to imitate, by will or not: &lt;a href="https://scoop.sh/" rel="noopener noreferrer"&gt;Scoop&lt;/a&gt;, &lt;a href="https://brew.sh/" rel="noopener noreferrer"&gt;Homebrew&lt;/a&gt;, and so on.&lt;/p&gt;

&lt;p&gt;It has only a &lt;em&gt;tiny-tiny&lt;/em&gt; issue: every package manager has its own user interface.&lt;/p&gt;

&lt;p&gt;It’s actually quite annoying to remember which are the command line parameters for each system. Even through the most similar operating systems, such as GNU/Linux distros, the differences between managers are big.&lt;/p&gt;

&lt;p&gt;Take &lt;a href="https://wiki.archlinux.org/title/Pacman" rel="noopener noreferrer"&gt;Pacman&lt;/a&gt; and &lt;a href="https://www.wikiwand.com/en/articles/APT_(Package_Manager)" rel="noopener noreferrer"&gt;APT&lt;/a&gt;, by instance.&lt;/p&gt;

&lt;p&gt;How to install a package in an Arch Linux based system?&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pacman &lt;span class="nt"&gt;-S&lt;/span&gt; &lt;span class="nv"&gt;$package_name&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And in a Debian GNU/Linux based system?&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;apt &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nv"&gt;$package_name&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I took the two most different tools, but the slightly different ones are even worse, ’cause you have to keep remember tiny variations to avoid big mistakes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Enter the universal package managers
&lt;/h2&gt;

&lt;p&gt;Some people had the idea of creating universal package managers, in order to put some order to that chaos.&lt;/p&gt;

&lt;p&gt;So you may trip over &lt;a href="https://www.flatpak.org/" rel="noopener noreferrer"&gt;Flatpak&lt;/a&gt;, &lt;a href="https://appimage.org/" rel="noopener noreferrer"&gt;AppImage&lt;/a&gt;, or, my favourite, &lt;a href="https://crates.io/crates/upt" rel="noopener noreferrer"&gt;UPT&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;UPT is a real platform-agnostic package manager. I started using it some time ago, and never stopped (till now).&lt;/p&gt;

&lt;p&gt;It’s enough reliable and stable. If you’re using virtually any Linux distro, a BSD distro, macOS with Homebrew, or Windows with a package manager, I highly recommend it.&lt;/p&gt;

&lt;p&gt;UPT &lt;strong&gt;doesn’t replace&lt;/strong&gt; the system package manager, it works on top of it.&lt;/p&gt;

&lt;h2&gt;
  
  
  It works until it doesn’t
&lt;/h2&gt;

&lt;p&gt;Just like anything else, UPT is no bed of roses.&lt;/p&gt;

&lt;p&gt;I was using UPT in association to &lt;a href="https://crates.io/crates/rua" rel="noopener noreferrer"&gt;Rua&lt;/a&gt;, then &lt;a href="https://github.com/Jguer/yay" rel="noopener noreferrer"&gt;Yay&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;When I was still using Rua, I’d never requested UPT to supported it, after the Math, Rua isn’t that popular tool.&lt;/p&gt;

&lt;p&gt;However, when I migrated to Yay, I started reckoning it makes no sense to use two different package manages since Yay is a well known and popular tool.&lt;/p&gt;

&lt;p&gt;I took a look at UPT’s code, and I find it easy to extend it to support Yay, so I did it, and I uploaded a pull request.&lt;/p&gt;

&lt;p&gt;After a copple of weeks, my pull request kept being ignored. That upset me.&lt;/p&gt;

&lt;p&gt;Thereat I took a decision of creating my own demi-universal package manager.&lt;/p&gt;

&lt;h2&gt;
  
  
  UPT Please had born (to die premature)
&lt;/h2&gt;

&lt;p&gt;I started using the UPT fork I’ve created for my pull request, and performed some changes in order to differentiate it from UPT, but I didn’t like it.&lt;/p&gt;

&lt;p&gt;UPT code is quite good, but it uses some approaches which I don’t like (they aren’t wrong, it’s a personal taste), and if I kept it that way, I would be in trouble supporting it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Please Installer at last
&lt;/h2&gt;

&lt;p&gt;So I &lt;a href="https://github.com/cacilhas/please" rel="noopener noreferrer"&gt;rewrote it from scratch&lt;/a&gt;. My first goal was to reproduce as much as possible UPT features I had used, so I did it.&lt;/p&gt;

&lt;p&gt;Now I have a beta version working, and I’m using it in my systems.&lt;/p&gt;

&lt;p&gt;I need more people using though. The more people uses it, the more stable and reliable I’ll be able to make it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Installation
&lt;/h2&gt;

&lt;p&gt;Please Installer requires the nightly version of Rust – and it won’t probable change. While I’m writing this, the 2024-09-01 version works fine.&lt;/p&gt;

&lt;p&gt;Therefore use the package manager of your system to install &lt;code&gt;rustup&lt;/code&gt;, then run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;rustup toolchain &lt;span class="nb"&gt;install &lt;/span&gt;nightly-2024-09-01
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Install Please Install:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;cargo +nightly-2024-09-01 &lt;span class="nb"&gt;install &lt;/span&gt;please-install
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you dare, you may wanna install the development version:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;cargo +nightly-2024-09-01 &lt;span class="nb"&gt;install &lt;/span&gt;please-install &lt;span class="nt"&gt;--git&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;https://github.com/cacilhas/please.git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Please installer supports a &lt;a href="https://github.com/cacilhas/please?tab=readme-ov-file#settings" rel="noopener noreferrer"&gt;configuration file&lt;/a&gt;, &lt;code&gt;$HOME/.config/please.toml&lt;/code&gt;. It’s not required, but recommended. I suggest the following initial content:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight toml"&gt;&lt;code&gt;&lt;span class="py"&gt;su&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;

&lt;span class="nn"&gt;[list]&lt;/span&gt;
&lt;span class="py"&gt;pager&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"bat --file-name='installed packages'"&lt;/span&gt;

&lt;span class="nn"&gt;[search]&lt;/span&gt;
&lt;span class="py"&gt;pager&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"bat --file-name='search $args'"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Note that it requires &lt;code&gt;bat&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Since I use &lt;a href="https://archlinux.org/" rel="noopener noreferrer"&gt;Arch Linux&lt;/a&gt;, &lt;em&gt;btw&lt;/em&gt;, with &lt;a href="https://github.com/Jguer/yay" rel="noopener noreferrer"&gt;Yay&lt;/a&gt;, my personal settings are:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight toml"&gt;&lt;code&gt;&lt;span class="py"&gt;assume-yes&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;span class="py"&gt;vendor&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"yay"&lt;/span&gt;

&lt;span class="nn"&gt;[remove]&lt;/span&gt;
&lt;span class="py"&gt;su&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;

&lt;span class="nn"&gt;[list]&lt;/span&gt;
&lt;span class="py"&gt;pager&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"bat --file-name='installed packages'"&lt;/span&gt;

&lt;span class="nn"&gt;[search]&lt;/span&gt;
&lt;span class="py"&gt;pager&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"bat --file-name='search $args'"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;My son uses Flatpak, and the his settings are:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight toml"&gt;&lt;code&gt;&lt;span class="py"&gt;vendor&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"flatpak"&lt;/span&gt;

&lt;span class="nn"&gt;[list]&lt;/span&gt;
&lt;span class="py"&gt;pager&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"bat --file-name='installed packages'"&lt;/span&gt;

&lt;span class="nn"&gt;[search]&lt;/span&gt;
&lt;span class="py"&gt;pager&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"bat --file-name='search $args'"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So you can update your system:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;please update
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Using Please Installer
&lt;/h2&gt;

&lt;p&gt;Let’s find and install Brave Browser:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;please search brave-browser
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Using Yay, for me it returned the package &lt;code&gt;chaotic-aur/brave-bin&lt;/code&gt; – dependenting on your system, the package name may be completely different.&lt;/p&gt;

&lt;p&gt;So install it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;please &lt;span class="nb"&gt;install &lt;/span&gt;chaotic-aur/brave-bin
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And that’s it.&lt;/p&gt;

&lt;p&gt;In order to upgrade it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;please upgrade brave-bin
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And to remove it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;please remove brave-bin
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;List of subcommands:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;please &lt;span class="nb"&gt;help&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Next goals
&lt;/h2&gt;

&lt;p&gt;I still brought the overall approach from UPT code to Please Installer , and now I realised it won’t stand. I need to rewrite the code again 🙁 to make it mantainable.&lt;/p&gt;

&lt;p&gt;I have plans to use more traits and put system-bought features into dedicated modules that can be easily disabled in compiling time.&lt;/p&gt;

&lt;p&gt;I wanna create a subcommand to help users to set their installation as well, and also implement an built-in pager.&lt;/p&gt;

&lt;p&gt;There’s a lot to do, it’s gonna take some time to get to the point I want, but I expect to count on community to help testing and using it.&lt;/p&gt;

&lt;p&gt;Let’s see what comes next…&lt;/p&gt;

</description>
      <category>system</category>
      <category>packagemanager</category>
      <category>installer</category>
    </item>
    <item>
      <title>Career Tips</title>
      <dc:creator>Montegasppα Cacilhας</dc:creator>
      <pubDate>Tue, 18 Jun 2024 13:50:52 +0000</pubDate>
      <link>https://dev.to/cacilhas/career-tips-242a</link>
      <guid>https://dev.to/cacilhas/career-tips-242a</guid>
      <description>&lt;p&gt;Originally published on &lt;a href="https://montegasppa.cacilhas.info/2024/06/career-tips.html" rel="noopener noreferrer"&gt;ℳontegasppα And Giulia C.’S Thoughts&lt;/a&gt;.&lt;/p&gt;




&lt;p&gt;Excuse my lack of modesty, but I’m pretty good at what I do. I’m not even close to the best though, but I’m way above average. It’s due to what I’ve learned over more than 20 years of work experience, and I’d like to share some of the simpler and more efficient tips I got.&lt;/p&gt;

&lt;h2&gt;
  
  
  Affection
&lt;/h2&gt;

&lt;p&gt;Don’t fall in love with technology and, even more important, don’t get attached to your code.&lt;/p&gt;

&lt;p&gt;The code you wrote is &lt;strong&gt;NOT&lt;/strong&gt; your son – neither your boyfriend, nor your girlfriend, nor your mother, nor whatelse. Your code is a by-product of turning coffee into shit, a “stuff.” And just like many stuff, it’s meant to be used, not loved.&lt;/p&gt;

&lt;p&gt;Look at your code as a necessary evil to be discarded as soon as it’s no longer needed.&lt;/p&gt;

&lt;p&gt;Do the same facing technologies: programming languages, frameworks, engines, and even methodologies are tools, not rules. Use them wisely, discard each one when you can.&lt;/p&gt;

&lt;h2&gt;
  
  
  Design
&lt;/h2&gt;

&lt;p&gt;Avoid writing code. Design it first.&lt;/p&gt;

&lt;p&gt;Of course you can prospect by coding, however discard it when you head the final code, keep only the cleanest one.&lt;/p&gt;

&lt;p&gt;My current job is to find value by just deleting code, and I have virtually implemented features by deleting code!&lt;/p&gt;

&lt;p&gt;How is it possible?&lt;/p&gt;

&lt;p&gt;Imagine a TV that isn’t working. It’s plugged to an adapter… which is plugged to another adapter… which is plugged to a third one! The last one is plugged to an extension. Than you look at that, remove the adapters, and plug the TV electrical connector directly to the extension, and &lt;em&gt;voilà&lt;/em&gt;! The TV magically turns on!&lt;/p&gt;

&lt;p&gt;That’s pretty much what I’ve been doing, but why?&lt;/p&gt;

&lt;p&gt;Because people don’t design. They simply write random code like typing monkeys, hoping something will eventually work.&lt;/p&gt;

&lt;p&gt;It leads us to the next topic.&lt;/p&gt;

&lt;h2&gt;
  
  
  Rely but don’t trust
&lt;/h2&gt;

&lt;p&gt;Use methodologies, but don’t let methodologies use you.&lt;/p&gt;

&lt;p&gt;Rely on &lt;a href="https://www.wikiwand.com/en/Test-driven_development" rel="noopener noreferrer"&gt;TDD&lt;/a&gt;, &lt;a href="https://www.manning.com/books/type-driven-development-with-idris" rel="noopener noreferrer"&gt;TDD&lt;/a&gt;, &lt;a href="https://www.wikiwand.com/en/SOLID" rel="noopener noreferrer"&gt;SOLID&lt;/a&gt;, &lt;a href="https://www.wikiwand.com/en/Domain-driven_design" rel="noopener noreferrer"&gt;DDD&lt;/a&gt;, &lt;a href="https://youtu.be/Kdpfhj3VM04" rel="noopener noreferrer"&gt;CDD&lt;/a&gt;, &lt;a href="https://www.wikiwand.com/en/Aspect-oriented_programming" rel="noopener noreferrer"&gt;AOP&lt;/a&gt;, &lt;a href="https://www.wikiwand.com/en/Algebraic_data_type" rel="noopener noreferrer"&gt;ADT&lt;/a&gt;, but always revisit the concepts and adapt them to your real-world needs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conformism
&lt;/h2&gt;

&lt;p&gt;Never ever be fully satisfied by yourself. I never know enough, I’m always looking for the next subject or getting deeper in something I’ve learned, so you should too.&lt;/p&gt;




&lt;p&gt;Those are the tips I have for you today.&lt;/p&gt;

</description>
      <category>career</category>
      <category>tips</category>
    </item>
    <item>
      <title>Knowing Mathematics</title>
      <dc:creator>Montegasppα Cacilhας</dc:creator>
      <pubDate>Mon, 01 Apr 2024 16:30:03 +0000</pubDate>
      <link>https://dev.to/cacilhas/knowing-mathematics-53ol</link>
      <guid>https://dev.to/cacilhas/knowing-mathematics-53ol</guid>
      <description>&lt;p&gt;Consider the following expression:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcacilhas.info%2Fimg%2Fmath%2Fw2e2%2Beipi.svg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcacilhas.info%2Fimg%2Fmath%2Fw2e2%2Beipi.svg" alt="W(2e²) + e^iπ" width="190" height="38"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you’re not a Mathematician, Physicist, Astronomer, or anything in hard sciences, you are not obliged to know how to solve it – no one has taught you it at school.&lt;/p&gt;

&lt;p&gt;However, if I give you the required tools in this very post, and you still can’t solve it by using school algebra, it means you have no fitness for Exact Sciences – which is okay, that’s nothing wrong; it doesn’t make you worse or better than anyone else, maybe you got aptitude for something else.&lt;/p&gt;

&lt;p&gt;But we can call &lt;strong&gt;WRONG&lt;/strong&gt; people deeply debating about Physics, Astrophysics, Astronomy, Chemistry, and even Math sometimes, like they were misunderstood geniuses. (Yeah… I’m writing this post ’cause I’m fed up with those people.) 😖&lt;/p&gt;

&lt;p&gt;No, kid! You aren’t a new “Einstein,” able to understand things that no expert can. It’s just the &lt;a href="https://www.abebooks.com/9786130693619/DunningKruger-Effect-6130693613/plp" rel="noopener noreferrer"&gt;Dunning-Kruger effect&lt;/a&gt; preventing you from realising you haven’t gotten even the basics.&lt;/p&gt;

&lt;p&gt;By the way, here are all the tools you need to solve the expression above:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcacilhas.info%2Fimg%2Fmath%2Flamberts-W-function.svg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcacilhas.info%2Fimg%2Fmath%2Flamberts-W-function.svg" alt="W(zeᶻ) = z" width="185" height="33"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcacilhas.info%2Fimg%2Fmath%2Feuler.svg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcacilhas.info%2Fimg%2Fmath%2Feuler.svg" alt="eᶿⁱ = cosθ + i sinθ" width="272" height="33"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcacilhas.info%2Fimg%2Fmath%2Fsinpi.svg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcacilhas.info%2Fimg%2Fmath%2Fsinpi.svg" alt="sinπ = 0" width="128" height="25"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcacilhas.info%2Fimg%2Fmath%2Fcospi.svg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcacilhas.info%2Fimg%2Fmath%2Fcospi.svg" alt="cosπ = -1" width="159" height="25"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Only school algebra and these definitions are enough to reach the result; if you still need to google it or to refer to &lt;a href="https://www.wolframalpha.com/" rel="noopener noreferrer"&gt;Wolfram Alpha&lt;/a&gt;, Exact Sciences aren’t for you.&lt;/p&gt;

&lt;p&gt;I must reiterate: that doesn’t mean you are less than anyone! Maybe you fit into Social Sciences! Just in the same way some Exact Sciences people are fully witless when it comes to politics and other social subjects. Just don’t try to refute &lt;code&gt;E² = (mc²)² + (pc)²&lt;/code&gt; if you didn’t get it.&lt;/p&gt;




&lt;p&gt;Original post at &lt;a href="https://montegasppa.cacilhas.info/2024/04/knowing-math.html" rel="noopener noreferrer"&gt;ℳontegasppα And Giulia C.’S Thoughts&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>math</category>
      <category>exactsciences</category>
      <category>education</category>
    </item>
    <item>
      <title>Universal Package-management Tool</title>
      <dc:creator>Montegasppα Cacilhας</dc:creator>
      <pubDate>Tue, 26 Mar 2024 17:50:15 +0000</pubDate>
      <link>https://dev.to/cacilhas/universal-package-management-tool-1dh3</link>
      <guid>https://dev.to/cacilhas/universal-package-management-tool-1dh3</guid>
      <description>&lt;p&gt;As I told in &lt;a href="https://dev.to/cacilhas/yet-another-way-to-install-aur-packages-4j24"&gt;another article&lt;/a&gt;, I decided not to keep writing for It’s FOSS, due to a bunch of unpleasant events I’m not discussing here (out of scope).&lt;/p&gt;

&lt;p&gt;Therefore I decided to re-release those articles here in DEV.to. 🥰&lt;/p&gt;

&lt;p&gt;This article was originally published as &lt;a href="https://itsfoss.com/upt/" rel="noopener noreferrer"&gt;UPT: Universal Package Management Tool for Linux&lt;/a&gt;, but with a lotta changes I hadn’t authorised. Here’s the original version, with only ONE change I had agreed to.&lt;/p&gt;




&lt;h2&gt;
  
  
  Universal Package-management Tool
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Introduction
&lt;/h3&gt;

&lt;p&gt;The world of software packages on Linux and other Unix-based systems is quite a savannah: each system has its own singular package management approach, making life a hell for those who have to deal with multiple platforms.&lt;/p&gt;

&lt;p&gt;There are &lt;a href="https://wiki.archlinux.org/title/Pacman" rel="noopener noreferrer"&gt;Pacman&lt;/a&gt; for Arch Linux and derivatives, &lt;a href="https://docs.alpinelinux.org/user-handbook/0.1a/Working/apk.html" rel="noopener noreferrer"&gt;Alpine Package Keeper&lt;/a&gt; (a.k.a. APK), &lt;a href="https://wiki.debian.org/Apt" rel="noopener noreferrer"&gt;Advanced Package Tool&lt;/a&gt; (a.k.a. Apt) for Debian GNU/Linux and derivatives, &lt;a href="https://tracker.debian.org/pkg/aptitude" rel="noopener noreferrer"&gt;Aptitude&lt;/a&gt;, a front-end for APT, &lt;a href="https://snapcraft.io/" rel="noopener noreferrer"&gt;Snapcraft&lt;/a&gt; for Ubuntu and derivatives, &lt;a href="http://yum.baseurl.org/" rel="noopener noreferrer"&gt;Yellowdog Updater Modified&lt;/a&gt; (a.k.a. Yum) for RPM-based systems, &lt;a href="https://slackpkg.org/" rel="noopener noreferrer"&gt;Slackpkg&lt;/a&gt; for Slackware, &lt;a href="https://wiki.gentoo.org/wiki/Emerge" rel="noopener noreferrer"&gt;Emerge&lt;/a&gt; for Gentoo, the &lt;code&gt;guix&lt;/code&gt; command on &lt;a href="https://guix.gnu.org/" rel="noopener noreferrer"&gt;Guix&lt;/a&gt;, and &lt;code&gt;nix-env&lt;/code&gt; on &lt;a href="https://nixos.org/" rel="noopener noreferrer"&gt;NixOS&lt;/a&gt;, among others, notta mention &lt;a href="https://man.freebsd.org/cgi/man.cgi?query=pkg" rel="noopener noreferrer"&gt;&lt;code&gt;pkg&lt;/code&gt;&lt;/a&gt; on FreeBSD, &lt;a href="https://brew.sh/" rel="noopener noreferrer"&gt;Homebrew&lt;/a&gt; for macOS, and &lt;a href="https://scoop.sh/" rel="noopener noreferrer"&gt;Scoop&lt;/a&gt; for Windows. Every one of those has its own way of management, forcing you to learn different ways to do the same thing.&lt;/p&gt;

&lt;p&gt;In brief, it’s really a mess… or is it?&lt;/p&gt;

&lt;h3&gt;
  
  
  Enter UPT
&lt;/h3&gt;

&lt;p&gt;A developer called &lt;a href="https://github.com/sigoden" rel="noopener noreferrer"&gt;&lt;code&gt;sigoden&lt;/code&gt;&lt;/a&gt; has created a universal tool called &lt;a href="https://crates.io/crates/upt" rel="noopener noreferrer"&gt;Universal Package-management Tool&lt;/a&gt;, or &lt;strong&gt;UPT&lt;/strong&gt; for short, able to put things together in this jungle. Once you have it installed, you won’t need to learn another package management’s &lt;em&gt;lifestyle&lt;/em&gt; again.&lt;/p&gt;

&lt;p&gt;In order to install UPT, I recommend to install the &lt;a href="https://rustup.rs/" rel="noopener noreferrer"&gt;&lt;code&gt;rustup&lt;/code&gt;&lt;/a&gt; package for your system – GNU/Linux systems usually have a &lt;code&gt;rustup&lt;/code&gt; package available from their default package manager:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# On Debian GNU/Linux and derivatives:&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;gcc make rustup

&lt;span class="c"&gt;# On Arch Linux and derivatives:&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;packman &lt;span class="nt"&gt;-S&lt;/span&gt; gcc make rustup

&lt;span class="c"&gt;# On Alpine:&lt;/span&gt;
apk add gcc make rustup
rustup-init
&lt;span class="nb"&gt;source&lt;/span&gt; ~/.cargo/env

&lt;span class="c"&gt;# On RPM-based systems:&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;yum &lt;span class="nb"&gt;install &lt;/span&gt;gcc make rustup

&lt;span class="c"&gt;# On macOS with Homebrew (not Linux, obviously)&lt;/span&gt;
brew &lt;span class="nb"&gt;install &lt;/span&gt;clang make rustup
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;Note: I use &lt;code&gt;clang&lt;/code&gt; instead of &lt;code&gt;gcc&lt;/code&gt;, and it works as well for me, you’re just gonna need to set your &lt;code&gt;CC&lt;/code&gt; and &lt;code&gt;CPP&lt;/code&gt; environment variables, if you wish, to &lt;code&gt;clang&lt;/code&gt; and &lt;code&gt;clang++ -E&lt;/code&gt; respectively.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;After installing &lt;code&gt;rustup&lt;/code&gt;, don’t forget to add &lt;code&gt;$HOME/.cargo/bin&lt;/code&gt; to your &lt;code&gt;PATH&lt;/code&gt;. If you’re using Bash as shell (usually the default shell), you have to add the following line to &lt;code&gt;~/.bash_profile&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;export &lt;/span&gt;PATH &lt;span class="nv"&gt;$HOME&lt;/span&gt;/.cargo/bin:&lt;span class="nv"&gt;$PATH&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If your shell is Zsh, you can add the very same line above to &lt;code&gt;~/.zshrc&lt;/code&gt; instead. Another famous shell is FishShell, if you’re using it, create a file called &lt;code&gt;~/.config/fish/conf.d/rust.fish&lt;/code&gt; with the following contents:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#!fish

begin
    set -l cargo_home $HOME/.cargo
    path is $cargo_home/bin
    and set -p PATH $cargo_home/bin
end
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Don’t forget to reload the shell.&lt;/p&gt;

&lt;p&gt;Now you can install the &lt;code&gt;upt&lt;/code&gt; command tool:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;rustup default stable
cargo &lt;span class="nb"&gt;install &lt;/span&gt;upt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;All set! Now you have a single package management interface you can use across your systems.&lt;/p&gt;

&lt;h3&gt;
  
  
  Using UPT
&lt;/h3&gt;

&lt;p&gt;Updating the package manager:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;upt update
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Installing &lt;code&gt;clang&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;upt &lt;span class="nb"&gt;install &lt;/span&gt;clang
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Upgrading GCC:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;upt upgrade gcc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Upgrading all installed packages:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;upt upgrade
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Removing a package (e.g. &lt;code&gt;emacs&lt;/code&gt;):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;upt remove emacs
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Searching for a package (e.g. &lt;code&gt;vtk&lt;/code&gt;):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;upt search vtk
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Caveats
&lt;/h3&gt;

&lt;p&gt;Unfortunately, although the package manager is the same across different systems, it’s still just a front-end for each system default package manager, which means package names are still the same used by each distro, you can’t use a single package name for different systems.&lt;/p&gt;

&lt;p&gt;For instance, if you want to install the Python development package, you’ll need different packages for different systems:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# On Alpine, Debian GNU/Linux, and derivatives&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;upt &lt;span class="nb"&gt;install &lt;/span&gt;python3-dev

&lt;span class="c"&gt;# On RPM-based systems:&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;upt &lt;span class="nb"&gt;install &lt;/span&gt;python3-devel

&lt;span class="c"&gt;# On Arch Linux&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;upt &lt;span class="nb"&gt;install &lt;/span&gt;python
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You’ll have to figure out the name of the package you want for each system – &lt;code&gt;upt search&lt;/code&gt; is your friend. 😉&lt;/p&gt;

</description>
      <category>linux</category>
      <category>packagemanager</category>
    </item>
    <item>
      <title>Yet Another Way to Install AUR packages</title>
      <dc:creator>Montegasppα Cacilhας</dc:creator>
      <pubDate>Tue, 26 Mar 2024 13:38:29 +0000</pubDate>
      <link>https://dev.to/cacilhas/yet-another-way-to-install-aur-packages-4j24</link>
      <guid>https://dev.to/cacilhas/yet-another-way-to-install-aur-packages-4j24</guid>
      <description>&lt;p&gt;I’ve been writing some articles for &lt;a href="https://itsfoss.com/" rel="noopener noreferrer"&gt;It’s FOSS&lt;/a&gt; online magazine. The reviewer usually performs some changes before publishing the article, which I haven’t cared though, ’cause they are mostly just aesthetic.&lt;/p&gt;

&lt;p&gt;However, in my &lt;a href="https://itsfoss.com/rua-aur-tool/" rel="noopener noreferrer"&gt;last article&lt;/a&gt;, with the best intention (I believe), the reviewer decided to &lt;strong&gt;include some paragraphs I didn’t write&lt;/strong&gt;, in order to “explain” things. The issue is that the reviewer doesn’t master the subject, which I do, and wrote some &lt;strong&gt;wrong&lt;/strong&gt; information in my name without consulting me.&lt;/p&gt;

&lt;p&gt;I think the only way to clean my name from that misinformation is publishing the original article by  myself.&lt;/p&gt;

&lt;p&gt;So here is it.&lt;/p&gt;




&lt;h2&gt;
  
  
  Yet Another Way to Install AUR packages
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Introduction
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://archlinux.org/" rel="noopener noreferrer"&gt;Arch Linux&lt;/a&gt; is the spiritual heir of &lt;a href="http://www.slackware.com/" rel="noopener noreferrer"&gt;Slackware&lt;/a&gt;, the oldest distro still in the race.&lt;/p&gt;

&lt;p&gt;Arch Linux is not only A rolling release distro, but &lt;strong&gt;THE Rolling Release Distro&lt;/strong&gt; by right. However, its &lt;a href="https://archlinux.org/packages/" rel="noopener noreferrer"&gt;list of official packages&lt;/a&gt; can be considered a bit restrictive.&lt;/p&gt;

&lt;p&gt;Even keeping the most recent working versions of each package, there are only very well-known and fully reliable applications – which, on the one hand, it’s very secure, but on the other, it can be annoyingly limited.&lt;/p&gt;

&lt;p&gt;Herefore &lt;a href="https://aur.archlinux.org/" rel="noopener noreferrer"&gt;AUR&lt;/a&gt; comes to the stage.&lt;/p&gt;

&lt;h3&gt;
  
  
  AUR
&lt;/h3&gt;

&lt;p&gt;AUR, &lt;strong&gt;Arch User Repository&lt;/strong&gt;, is a community-oriented repository where Arch Linux users can share their own packages.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Note: Never trust AUR packages, unless you already know them. Any sort of software can make it into the repo, so you should never blindly trust AUR packages. Do your research before installing anything.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You’re probably gonna find that obscure app you’ve been looking for in weeks there in AUR.&lt;/p&gt;

&lt;p&gt;But, how to install a package from AUR?&lt;/p&gt;

&lt;h3&gt;
  
  
  Hands on
&lt;/h3&gt;

&lt;p&gt;The &lt;em&gt;way&lt;/em&gt; to install a package from AUR is downloading the package, changing the working directory to the package root, and running:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;makepkg &lt;span class="nt"&gt;-si&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Dreadfully, innit?&lt;/p&gt;

&lt;p&gt;Hold your horses though! There’s no need for panic, ’cause there are a bunch of tools that make your AUR life easier.&lt;/p&gt;

&lt;p&gt;The most used AUR installer is &lt;a href="https://github.com/Jguer/yay" rel="noopener noreferrer"&gt;&lt;code&gt;yay&lt;/code&gt;&lt;/a&gt;, Yet Another Yogurt. &lt;code&gt;yay&lt;/code&gt; follows the very same API as &lt;a href="https://archlinux.org/pacman/" rel="noopener noreferrer"&gt;Pacman&lt;/a&gt;, which is very convenient for Arch Linux users: you don’t need to learn a new API for managing AUR packages.&lt;/p&gt;

&lt;p&gt;Other alternatives are &lt;a href="https://github.com/morganamilo/paru" rel="noopener noreferrer"&gt;Paru&lt;/a&gt;, Yaourt (currently removed from AUR), and &lt;a href="https://github.com/actionless/pikaur" rel="noopener noreferrer"&gt;&lt;code&gt;pikaur&lt;/code&gt;&lt;/a&gt;, but none of these presents any notable advantage over &lt;code&gt;yay&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Yet yet another tool
&lt;/h3&gt;

&lt;p&gt;Okay, since &lt;code&gt;yay&lt;/code&gt; is enough a tool, we don’t need another one, okey dokey, end of story, right?&lt;/p&gt;

&lt;p&gt;Nope… 😁&lt;/p&gt;

&lt;p&gt;I wouldn’t be writing this article if I didn’t have an exciting alternative to show you!&lt;/p&gt;

&lt;p&gt;Do you remember our &lt;a href="https://dev.to/cacilhas/universal-package-management-tool-1dh3"&gt;UPT article&lt;/a&gt;? If so, I’m considering you are that kind of person that rather stick to a common interface than using a different one for each system, and you’re probably using &lt;a href="https://crates.io/crates/upt" rel="noopener noreferrer"&gt;UPT&lt;/a&gt; already, which interface is way more similar to &lt;a href="https://wiki.debian.org/Apt" rel="noopener noreferrer"&gt;Apt&lt;/a&gt; or &lt;a href="https://brew.sh/" rel="noopener noreferrer"&gt;Homebrew&lt;/a&gt; than to Pacman.&lt;/p&gt;

&lt;p&gt;With it in mind, I guess you’d also prefer an AUR installer with a similar UPT interface, am I right?&lt;/p&gt;

&lt;p&gt;It exists and it’s called &lt;strong&gt;&lt;a href="https://crates.io/crates/rua" rel="noopener noreferrer"&gt;RUA&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;RUA is a build tool for AUR, just like &lt;code&gt;yay&lt;/code&gt;, but with an interface similar to UPT. So you use mnemonic sub-commands like &lt;code&gt;install&lt;/code&gt;, &lt;code&gt;upgrade&lt;/code&gt;, and &lt;code&gt;search&lt;/code&gt; instead of &lt;code&gt;-S&lt;/code&gt;, &lt;code&gt;-U&lt;/code&gt;, &lt;code&gt;-Syu&lt;/code&gt;, &lt;code&gt;-R&lt;/code&gt;, &lt;code&gt;-Q&lt;/code&gt;, and so on.&lt;/p&gt;

&lt;h3&gt;
  
  
  Installing RUA
&lt;/h3&gt;

&lt;p&gt;It’s necessary to install some dependencies so one can install RUA:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;pacman &lt;span class="nt"&gt;-S&lt;/span&gt; &lt;span class="nt"&gt;--needed&lt;/span&gt; &lt;span class="nt"&gt;--asdeps&lt;/span&gt; git base-devel bubblewrap-suid libseccomp xz shellcheck rustup
&lt;span class="nb"&gt;sudo &lt;/span&gt;rustup &lt;span class="nb"&gt;install &lt;/span&gt;stable
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;Note: in the example above, I used Pacman, but you could use UPT as well.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Like UPT, RUA is a tool made in &lt;a href="https://www.rust-lang.org/" rel="noopener noreferrer"&gt;Rust&lt;/a&gt;, and it can be easily installed by &lt;code&gt;cargo&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;rustup default stable
cargo &lt;span class="nb"&gt;install &lt;/span&gt;rua
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;Note: &lt;strong&gt;DO NOT&lt;/strong&gt; install RUA as root, it’s intended to be performed ONLY as a sudoer, not directly by root.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Using RUA
&lt;/h3&gt;

&lt;p&gt;Let’s search for Brave Browser and install it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;rua search brave
rua &lt;span class="nb"&gt;install &lt;/span&gt;brave-bin
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Considering the happy flow, you can answer most of the questions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;m&lt;/code&gt; (&lt;code&gt;[M]=accept/merge&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;o&lt;/code&gt; (&lt;code&gt;[O]=ok, use package&lt;/code&gt; and &lt;code&gt;[O]=ok, proceed&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;s&lt;/code&gt; (&lt;code&gt;Enter S to ‘sudo’ install it&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;y&lt;/code&gt; (any question that ask for a “yes”)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now I decided not to keep it, so let’s uninstall it using UPT:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;upt remove brave-bin
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Upgrading packages
&lt;/h3&gt;

&lt;p&gt;Pacman and UPT have no information about AUR packages’ source for upgrade! Nevertheless you can use RUA itself to upgrade them:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# The following command updates all packages installed by rua&lt;/span&gt;
rua upgrade
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Safety
&lt;/h3&gt;

&lt;p&gt;When building packages, RUA uses the following filesystem isolation:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Build directory is mounted read-write.&lt;/li&gt;
&lt;li&gt;Files &lt;code&gt;"$GNUPGHOME"/pubring.kbx&lt;/code&gt; and &lt;code&gt;"$GNUPGHOME"/pubring.gpg&lt;/code&gt; are mounted read-only (if exists). This allows signature verification to work.&lt;/li&gt;
&lt;li&gt;The rest of &lt;code&gt;~&lt;/code&gt; is not visible to the build process, mounted under &lt;code&gt;tmpfs&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/tmp&lt;/code&gt; and &lt;code&gt;/dev&lt;/code&gt; and &lt;code&gt;/proc&lt;/code&gt; are re-mounted with empty &lt;code&gt;tmpfs&lt;/code&gt;, &lt;code&gt;devtmpfs&lt;/code&gt; and &lt;code&gt;procfs&lt;/code&gt; accordingly.&lt;/li&gt;
&lt;li&gt;The rest of &lt;code&gt;/&lt;/code&gt; is mounted read-only.&lt;/li&gt;
&lt;li&gt;You can whitelist/add your mount points by configuring &lt;code&gt;wrap_args&lt;/code&gt;. See example in &lt;code&gt;~/.config/rua/.system/wrap_args.sh.example&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All builds are run in a namespace jail, with &lt;code&gt;seccomp&lt;/code&gt; enabled and &lt;code&gt;user&lt;/code&gt;, &lt;code&gt;ipc&lt;/code&gt;, &lt;code&gt;pid&lt;/code&gt;, &lt;code&gt;uts&lt;/code&gt;, and &lt;code&gt;cgroup&lt;/code&gt; being unshared by default.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;If you feel comfortable with UPT, you can use the pair UPT+RUA to manage all your packages, both official and AUR.&lt;/p&gt;

&lt;p&gt;A list of the RUA’s full capabilities can be obtained from the command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;rua &lt;span class="nt"&gt;--help&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>archlinux</category>
      <category>aur</category>
    </item>
    <item>
      <title>It’s FOSS</title>
      <dc:creator>Montegasppα Cacilhας</dc:creator>
      <pubDate>Tue, 19 Mar 2024 17:47:56 +0000</pubDate>
      <link>https://dev.to/cacilhas/its-foss-4l46</link>
      <guid>https://dev.to/cacilhas/its-foss-4l46</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcijhm3b98nxkzhd52rjp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcijhm3b98nxkzhd52rjp.png" alt="Image description" width="300" height="108"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I started writing as external stackholder for &lt;a href="https://itsfoss.com/" rel="noopener noreferrer"&gt;It’s FOSS&lt;/a&gt;, &lt;a href="https://itsfoss.com/upt/" rel="noopener noreferrer"&gt;my first article&lt;/a&gt; is already released, there are more to come.&lt;/p&gt;

&lt;p&gt;Unfortunately that means I won’t be able to keep writing for &lt;a href="https://dev.to/"&gt;DEV.to&lt;/a&gt; so frequently, ’cause I couldn’t simply replicate the articles here, as I’ve been doing for &lt;a href="https://kodumaro.cacilhas.info/" rel="noopener noreferrer"&gt;Kodumaro&lt;/a&gt; and &lt;a href="https://functional.works-hub.com/" rel="noopener noreferrer"&gt;Functional Works&lt;/a&gt; (I haven’t asked permission for that).&lt;/p&gt;

&lt;p&gt;Nonetheless the articles for It’s FOSS have some little restrictions, which limits what and how I might write or not. Therefore I’m intending to keep writing for DEV.to those subjects that aren’t of interest to It’s FOSS.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>newsletter</category>
      <category>freelance</category>
    </item>
    <item>
      <title>Vídeo de apresentação</title>
      <dc:creator>Montegasppα Cacilhας</dc:creator>
      <pubDate>Thu, 13 Jul 2023 18:29:00 +0000</pubDate>
      <link>https://dev.to/cacilhas-sertec/video-de-apresentacao-2d0c</link>
      <guid>https://dev.to/cacilhas-sertec/video-de-apresentacao-2d0c</guid>
      <description>&lt;p&gt;&lt;a href="https://youtu.be/6nATPW46kDI" rel="noopener noreferrer"&gt;Nosso primeiro vídeo já está no ar!&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Writing Games</title>
      <dc:creator>Montegasppα Cacilhας</dc:creator>
      <pubDate>Sat, 10 Jun 2023 18:14:54 +0000</pubDate>
      <link>https://dev.to/cacilhas/writing-games-5clg</link>
      <guid>https://dev.to/cacilhas/writing-games-5clg</guid>
      <description>&lt;p&gt;I’m simply fascinated by indie game development. It’s free from a bunch of programming concerns, and allows us to explore new horizons.&lt;/p&gt;

&lt;p&gt;I’m tired of development risks due to &lt;strong&gt;money&lt;/strong&gt; – always money! Nothing is more important in our Capitalist system than money, not culture, not even human lives; money is in the society’s kernel, and it leads to a lotta stress. I’m really tired of it.&lt;/p&gt;

&lt;p&gt;I’d really take a way out if I find it, and indie game development seems to be a promising one. Anyway it had never been for me.&lt;/p&gt;

&lt;p&gt;Nevertheless, I’ve been using game development for study and to keep my mind sharp since ever.&lt;/p&gt;

&lt;p&gt;Said that, let’s get into some side projects I’ve been playing around with. I’m not getting into many details, otherwise I couldn’t quote them all. If you’re looking for more detail about any game or code here, leave a comment. 😉&lt;/p&gt;

&lt;h3&gt;
  
  
  Itch.io
&lt;/h3&gt;

&lt;p&gt;IMHO, &lt;a href="https://itch.io/" rel="noopener noreferrer"&gt;Itch.io&lt;/a&gt; is the best game release platform, and I’ve been using it as &lt;a href="https://cacilhas.itch.io/" rel="noopener noreferrer"&gt;my personal showcase&lt;/a&gt;. Every game we’re talking about in this post you can find there.&lt;/p&gt;

&lt;h3&gt;
  
  
  Scratch games
&lt;/h3&gt;

&lt;p&gt;&lt;a href="//cacilhas.info/img/scratch-cat.png" class="article-body-image-wrapper"&gt;&lt;img src="//cacilhas.info/img/scratch-cat.png" alt="Scratch cat"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I’m talking about &lt;a href="https://scratch.mit.edu/" rel="noopener noreferrer"&gt;Scratch&lt;/a&gt; first to sweep it away, ’cause Scratch earns its own whole post.&lt;/p&gt;

&lt;p&gt;I think Scratch is a great sandbox to test concepts and the place for sharing ideas.&lt;/p&gt;

&lt;p&gt;I have a Scratch project called &lt;a href="https://scratch.mit.edu/studios/30951170" rel="noopener noreferrer"&gt;Casual Funny Games&lt;/a&gt;, and we can get into it in another post. Even on Itch.io I have a &lt;a href="https://cacilhas.itch.io/casual-funny-games" rel="noopener noreferrer"&gt;page for it&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  TIC-80 games
&lt;/h3&gt;

&lt;p&gt;&lt;a href="//cacilhas.info/img/tic80.png" class="article-body-image-wrapper"&gt;&lt;img src="//cacilhas.info/img/tic80.png" alt="TIC-80"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I love &lt;a href="https://en.wikipedia.org/wiki/Fantasy_video_game_console" rel="noopener noreferrer"&gt;fantasy consoles&lt;/a&gt;, and my favourite is &lt;a href="http://tic80.com/" rel="noopener noreferrer"&gt;TIC-80&lt;/a&gt;: it has an old home computer feeling which no other console manages to emulate. Therefore I recommend purchasing its &lt;a href="https://nesbox.itch.io/tic80" rel="noopener noreferrer"&gt;payed version&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I’ve published some TIC-80 games of my own, all of them developed using &lt;a href="https://moonscript.org/" rel="noopener noreferrer"&gt;Moonscript&lt;/a&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;a href="https://cacilhas.itch.io/sokoban" rel="noopener noreferrer"&gt;Sokoban&lt;/a&gt; is a classic among classics! I literally copied every detail from the &lt;a href="https://msxgamesworld.com/software.php?id=1518" rel="noopener noreferrer"&gt;MSX implementation&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://cacilhas.itch.io/arkanoid-ng" rel="noopener noreferrer"&gt;Arkanoid NG&lt;/a&gt; is my TIC-80 implementation of the classic &lt;a href="https://spectrumcomputing.co.uk/entry/0000255" rel="noopener noreferrer"&gt;Arkanoid&lt;/a&gt;, one of the first breakout games.&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://cacilhas.itch.io/missile" rel="noopener noreferrer"&gt;Missile Command&lt;/a&gt; is a clone of the &lt;a href="https://www.arcade-history.com/?page=detail&amp;amp;id=1644" rel="noopener noreferrer"&gt;Atari’s same-title shoot’em up game&lt;/a&gt;. Don’t let missiles destroy your builds!&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://cacilhas.itch.io/tetris" rel="noopener noreferrer"&gt;Kodumaro Tetris&lt;/a&gt;: who doesn’t known the Russian &lt;a href="https://tetris.com/" rel="noopener noreferrer"&gt;Tetris&lt;/a&gt;!? In here I took care of the presentation.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I don’t wanna talk about &lt;a href="https://cacilhas.itch.io/snake" rel="noopener noreferrer"&gt;this one&lt;/a&gt;… 😒&lt;/p&gt;

&lt;h3&gt;
  
  
  Godot Engine games
&lt;/h3&gt;

&lt;p&gt;&lt;a href="//cacilhas.info/img/godot.png" class="article-body-image-wrapper"&gt;&lt;img src="//cacilhas.info/img/godot.png" alt="Godot Engine"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I reckon &lt;a href="https://godotengine.org/" rel="noopener noreferrer"&gt;Godot Engine&lt;/a&gt; is the best balanced game engine available:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Unity 3D is easy and widely used, but lacks security; I wouldn’t recommend.&lt;/li&gt;
&lt;li&gt;  Unreal Engine is the most powerful, but requires too many hardware resources both to develop and to play games.&lt;/li&gt;
&lt;li&gt;  UPBGE is an eternal doubt.&lt;/li&gt;
&lt;li&gt;  In GDevelop, simple things become a challenge to be achieved.&lt;/li&gt;
&lt;li&gt;  Construct3 and Game Maker are more expensive than they actually deliver, as well as some many others.&lt;/li&gt;
&lt;li&gt;  Scratch aims for Education, not commercial purposes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I got some Godot games I’ve been working on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;a href="https://cacilhas.itch.io/standstill" rel="noopener noreferrer"&gt;Standstill&lt;/a&gt;: a tower-defence game. I created it to test &lt;a href="https://kenney.nl/assets" rel="noopener noreferrer"&gt;Kenney’s assets&lt;/a&gt;, which are amazing. This is one of my games I’m proud of.&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://cacilhas.itch.io/catcheese" rel="noopener noreferrer"&gt;Catcheese&lt;/a&gt; is a simple maze game based on &lt;a href="https://gottcode.org/cutemaze/" rel="noopener noreferrer"&gt;CuteMaze&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://cacilhas.itch.io/fairy-tale" rel="noopener noreferrer"&gt;Fairy Tale&lt;/a&gt; intends to be an immersive adventure game, but I’ve miserably failed. It’s still funny though. 😬&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://cacilhas.itch.io/catch-game" rel="noopener noreferrer"&gt;Kodumaro Catch Game&lt;/a&gt; is what it says: a catch game. More precisely a 1D catch game (only moves side to side). I made the game in about one hour and then I spent my free time during two days trying to catch smoke. It is unnecessarily heavyweight, but have some cool details.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Raylib games
&lt;/h3&gt;

&lt;p&gt;&lt;a href="//cacilhas.info/img/ferris-the-crab.png" class="article-body-image-wrapper"&gt;&lt;img src="//cacilhas.info/img/ferris-the-crab.png" alt="Ferris the Crab"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you need performance, I recommend &lt;a href="https://www.raylib.com/" rel="noopener noreferrer"&gt;Raylib&lt;/a&gt; with &lt;a href="https://www.rust-lang.org/" rel="noopener noreferrer"&gt;Rust&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Raylib is exceptional for 2D games. Not that good for 3D, but still gets the job done.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;a href="https://cacilhas.itch.io/nanpure" rel="noopener noreferrer"&gt;Nanpurë&lt;/a&gt; is a colourful &lt;a href="https://sudoku.com/" rel="noopener noreferrer"&gt;sudoku&lt;/a&gt; – instead of numbers, you got colours.&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://cacilhas.itch.io/nonogram" rel="noopener noreferrer"&gt;Nonogram&lt;/a&gt; is a random implementation for &lt;a href="https://en.wikipedia.org/wiki/Nonogram" rel="noopener noreferrer"&gt;nonogram&lt;/a&gt;. It doesn’t form meaningful pictures, but has the advantage to be able to be played forever.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I have a lot of other &lt;a href="https://crates.io/users/cacilhas" rel="noopener noreferrer"&gt;Rust applications&lt;/a&gt;, but only these two games.&lt;/p&gt;

&lt;h3&gt;
  
  
  GDevelop games
&lt;/h3&gt;

&lt;p&gt;&lt;a href="//cacilhas.info/img/gdevelop.png" class="article-body-image-wrapper"&gt;&lt;img src="//cacilhas.info/img/gdevelop.png" alt="GDevelop5"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I couldn’t leave &lt;a href="https://gdevelop.io/" rel="noopener noreferrer"&gt;GDevelop&lt;/a&gt; out. It is nothing its authors claim it is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  It’s &lt;strong&gt;not easy&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;  It’s &lt;strong&gt;not no-code&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;  It’s &lt;strong&gt;not RAD&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Even so it’s really amusing, I usually have a lotta good time developing in GDevelop.&lt;/p&gt;

&lt;p&gt;I used to have a GDevelop game in Itch.io, &lt;a href="https://cacilhas.itch.io/get-out" rel="noopener noreferrer"&gt;Get Out!&lt;/a&gt;, however it has a very sad story: its code wasn’t published to any remote repository, and my hard disk got fried, so I &lt;strong&gt;lost the whole code&lt;/strong&gt;. 😭&lt;/p&gt;

&lt;p&gt;It’s still &lt;a href="https://cacilhas.itch.io/get-out" rel="noopener noreferrer"&gt;published&lt;/a&gt;, but I cannot do any changes anymore.&lt;/p&gt;




&lt;p&gt;Do you like any of those games? Want any more details? Code? Development process? Leave a comment!&lt;/p&gt;

&lt;p&gt;Original post: &lt;a href="https://kodumaro.cacilhas.info/2023/06/writing-games.html" rel="noopener noreferrer"&gt;Kodumaro&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>gamedev</category>
      <category>itch</category>
      <category>culture</category>
    </item>
    <item>
      <title>People are haters</title>
      <dc:creator>Montegasppα Cacilhας</dc:creator>
      <pubDate>Wed, 22 Feb 2023 03:36:54 +0000</pubDate>
      <link>https://dev.to/cacilhas/people-are-haters-3lcd</link>
      <guid>https://dev.to/cacilhas/people-are-haters-3lcd</guid>
      <description>&lt;p&gt;My most liked posts:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fprqhihwgdqudn013hpg1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fprqhihwgdqudn013hpg1.png" alt="Why we hate…" width="800" height="283"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>vibecoding</category>
    </item>
    <item>
      <title>A Lovecraftian Game</title>
      <dc:creator>Montegasppα Cacilhας</dc:creator>
      <pubDate>Tue, 21 Feb 2023 13:55:48 +0000</pubDate>
      <link>https://dev.to/cacilhas/a-lovecraftian-game-4524</link>
      <guid>https://dev.to/cacilhas/a-lovecraftian-game-4524</guid>
      <description>&lt;p&gt;From the original at &lt;a href="https://kodumaro.cacilhas.info/2023/02/lovecraft.html" rel="noopener noreferrer"&gt;Kodumaro&lt;/a&gt;.&lt;/p&gt;




&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvyxjwel1vlya8dvwrul8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvyxjwel1vlya8dvwrul8.png" alt="Oni face" width="401" height="567"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A platform I simply love is &lt;a href="https://scratch.mit.edu/" rel="noopener noreferrer"&gt;Scratch&lt;/a&gt;. You can build different kinds of application using a visual programming based on drag’n’drop blocks.&lt;/p&gt;

&lt;p&gt;Recently I’ve been working on a Lovecraftian game quite simple, where you just need to find a key using a sensor, while running away from an &lt;em&gt;oni&lt;/em&gt;-style demon. I call it “Must Find the Key to Escape” (not the most creative name, I know).&lt;/p&gt;

&lt;p&gt;I based the code on a &lt;a href="https://scratch.mit.edu/users/griffpatch/" rel="noopener noreferrer"&gt;&lt;code&gt;@griffpatch&lt;/code&gt;&lt;/a&gt;’s &lt;a href="https://www.youtube.com/watch?v=M1c5TcdITVs" rel="noopener noreferrer"&gt;ray-casting series&lt;/a&gt;, and a &lt;a href="https://www.youtube.com/watch?v=v99RKhePxw8" rel="noopener noreferrer"&gt;simple sound tutorial&lt;/a&gt; from &lt;a href="https://scratch.mit.edu/users/ThePhantomAnimator/" rel="noopener noreferrer"&gt;The STEAMist&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;You can play the game at &lt;a href="https://cacilhas.itch.io/find-key" rel="noopener noreferrer"&gt;Itch.io&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>game</category>
      <category>scratch</category>
    </item>
    <item>
      <title>A MiniTron In 47 Lines</title>
      <dc:creator>Montegasppα Cacilhας</dc:creator>
      <pubDate>Thu, 12 Jan 2023 01:58:06 +0000</pubDate>
      <link>https://dev.to/cacilhas/a-minitron-in-47-lines-10d6</link>
      <guid>https://dev.to/cacilhas/a-minitron-in-47-lines-10d6</guid>
      <description>&lt;p&gt;Original from &lt;a href="https://kodumaro.cacilhas.info/2023/01/minitron.html" rel="noopener noreferrer"&gt;Kodumaro&lt;/a&gt;.&lt;/p&gt;




&lt;p&gt;This is a sample code for learning, written in &lt;a href="https://moonscript.org/" rel="noopener noreferrer"&gt;Moonscript&lt;/a&gt; for &lt;a href="https://tic80.com/" rel="noopener noreferrer"&gt;TIC-80&lt;/a&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight moonscript"&gt;&lt;code&gt;&lt;span class="c1"&gt;-- title:   MiniTron&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="c1"&gt;-- author:  Montegasppa &amp;lt;batalema@cacilhas.info&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="c1"&gt;-- desc:    A very spartan Tron implementation&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="c1"&gt;-- license: 3-Clause BSD&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="c1"&gt;-- version: 0.1&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="c1"&gt;-- script:  moon&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="kd"&gt;export&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;^&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="kd"&gt;local&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="kd"&gt;local&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cycle&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;dir&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;tic&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;score&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="n"&gt;size&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="n"&gt;move&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="k"&gt;with&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cycle&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nb"&gt;next&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;switch&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;dir&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="k"&gt;when&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="ss"&gt;x:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;y:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;size&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="k"&gt;when&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="ss"&gt;x:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;y:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="n"&gt;size&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="k"&gt;when&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="ss"&gt;x:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;size&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;y:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="k"&gt;when&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="ss"&gt;x:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="n"&gt;size&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;y:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="n"&gt;reset&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;pix&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;next&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;next&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;!=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="n"&gt;rect&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;size&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;size&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;9&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="n"&gt;cycle&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;next&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="n"&gt;score&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;+=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="nc"&gt;BOOT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="n"&gt;cycle&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;x:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;120&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;y:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;68&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="n"&gt;dir&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;tic&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;score&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="n"&gt;cls&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="n"&gt;rectb&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;240&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;136&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="n"&gt;rectb&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;238&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;134&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="nc"&gt;TIC&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="n"&gt;poke&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mh"&gt;0x3ffb&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="n"&gt;rect&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cycle&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cycle&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;size&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;size&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;do&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;dir&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;btn&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="n"&gt;tic&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;+=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;tic&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="n"&gt;move&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="n"&gt;tic&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="nc"&gt;OVR&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Score: &lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="n"&gt;score&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;128&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Download the &lt;a href="https://cacilhas.info/misc/minitron.tic" rel="noopener noreferrer"&gt;card&lt;/a&gt;!&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Kodumaro is going Mastodon!</title>
      <dc:creator>Montegasppα Cacilhας</dc:creator>
      <pubDate>Thu, 22 Dec 2022 21:00:09 +0000</pubDate>
      <link>https://dev.to/cacilhas/kodumaro-is-going-mastodon-cbl</link>
      <guid>https://dev.to/cacilhas/kodumaro-is-going-mastodon-cbl</guid>
      <description>&lt;p&gt;Read the origin at &lt;a href="https://kodumaro.cacilhas.info/2022/12/mastodon.html" rel="noopener noreferrer"&gt;Kodumaro&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffejsidt40tsezpt6f3oh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffejsidt40tsezpt6f3oh.png" alt="Mastodon" width="45" height="48"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Kodumaro &lt;a href="https://twitter.com/kodumaro" rel="noopener noreferrer"&gt;Twitter account&lt;/a&gt; has been deactivated, and we’re going &lt;a href="https://social.sndevs.com/@kodumaro" rel="noopener noreferrer"&gt;Mastodon&lt;/a&gt; now!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://joinmastodon.org/" rel="noopener noreferrer"&gt;Mastodon&lt;/a&gt; is a microblog kinda like &lt;a href="https://twitter.com/" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;. Its head difference from Twitter though is that Mastodon is &lt;strong&gt;federated&lt;/strong&gt;, it means, there’s no central service. There are lots of servers talking to each other, each one following its own rules, so nobody can own the network.&lt;/p&gt;

&lt;p&gt;We’d like to invite you to get in. You can do it by signing up one of the servers listed &lt;a href="https://joinmastodon.org/servers" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I created my personal account at &lt;a href="https://mas.to/" rel="noopener noreferrer"&gt;Mas.to&lt;/a&gt;, but I believe &lt;a href="https://fosstodon.org/" rel="noopener noreferrer"&gt;FOSStodon&lt;/a&gt; could be a good choise as well.&lt;/p&gt;

&lt;p&gt;You can find us searching for &lt;a href="https://social.sndevs.com/@kodumaro" rel="noopener noreferrer"&gt;&lt;code&gt;@kodumaro@social.sndevs.com&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>socialmedia</category>
      <category>mastodon</category>
    </item>
  </channel>
</rss>
