<?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: Marcelo Barreto</title>
    <description>The latest articles on DEV Community by Marcelo Barreto (@marcelobarreto).</description>
    <link>https://dev.to/marcelobarreto</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%2F414686%2F3877fb34-04bc-444f-9888-a54c5026913c.jpeg</url>
      <title>DEV Community: Marcelo Barreto</title>
      <link>https://dev.to/marcelobarreto</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/marcelobarreto"/>
    <language>en</language>
    <item>
      <title>Optimistic lock on Ruby on Rails</title>
      <dc:creator>Marcelo Barreto</dc:creator>
      <pubDate>Sun, 04 Apr 2021 14:11:04 +0000</pubDate>
      <link>https://dev.to/marcelobarreto/optimistic-lock-on-ruby-on-rails-3n6b</link>
      <guid>https://dev.to/marcelobarreto/optimistic-lock-on-ruby-on-rails-3n6b</guid>
      <description>&lt;h2&gt;
  
  
  What are locks and why you should be using them?
&lt;/h2&gt;

&lt;p&gt;Locks are required for concurrency in multi-user scenarios (where one or more users could modify one register in the same time), and you need to avoid data to be overriden before the user can save their changes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Locks
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://dev.to/marcelobarreto/optimistic-lock-on-ruby-on-rails-3n6b"&gt;Optimistic lock&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Pessimistic lock (available soon)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The example created for this article is available at &lt;a href="https://github.com/marcelobarreto/rubyonrailslocks/tree/optimistic-lock" rel="noopener noreferrer"&gt;Github&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Optimistic lock
&lt;/h3&gt;

&lt;p&gt;You can use optimistic locks when you can assume that users are allowed to edit a register at the same time. In order to this, we need to add versioning to the table that we'll need to lock.&lt;/p&gt;

&lt;p&gt;For our examples, I've created a model called Article, and the columns are title:string text:text version:integer. By default, if you call our version column as lock_version, Rails will handle the optimistic lock for you automatically, but, for this example let's use a different name so you can see behind the magic.&lt;/p&gt;

&lt;p&gt;Let's update our Article model to be as follows:&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%2Ftce6ui2egngxd75j6tt2.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%2Ftce6ui2egngxd75j6tt2.png" alt="Article Model" width="800" height="396"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now, on our view, let's fix one quick thing. We should send back to the server which version the user is updating, but you should not show this to the user, so let's update the view to hide our version input field. And for now, we should have something more or less like this:&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%2Fnv0gghzgrmjlcc790pvi.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%2Fnv0gghzgrmjlcc790pvi.png" alt="Article form" width="730" height="362"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let's see how the optimistic lock works for real!&lt;/p&gt;

&lt;p&gt;First, let's create a new article and then, let's open two tabs on our browser to update the article at the same time.&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%2Fj72fvlqxwca1ggetzsrj.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%2Fj72fvlqxwca1ggetzsrj.png" alt="Alt Text" width="800" height="441"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;On the first tab, I'll update the title and hit update article, while on the second, after the first tab finishes loading, I'll update the title as well.&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%2Fpdglnhll280ra7prxs1x.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%2Fpdglnhll280ra7prxs1x.png" alt="Stable object error" width="800" height="438"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Wow, an error was raised, that was expected. But first, let me explain one thing: our tabs were holding our version number as 1, and after we updated the first tab, it was increased to 2, and on the second tab, we're still trying to update version 1. In other words, we're trying to update a stale object. Let's fix this and give a better error message to the user:&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%2Fiyaaikwnpha5u1ypnu2m.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%2Fiyaaikwnpha5u1ypnu2m.png" alt="Example" width="800" height="576"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Disclaimer: I know updating Rails default methods is not the best approach, but it fits well for this example&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Let's try to repeat the same scenario again and see how it should work now:&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%2F1vb52nxh7gilq29oyk6i.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%2F1vb52nxh7gilq29oyk6i.png" alt="Alt Text" width="800" height="441"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Fair enough... But let's polish this a little bit more.&lt;/p&gt;

&lt;p&gt;On our controller, let's return the latest article version by doing the following:&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%2F73tfs22gzikim6quwf5w.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%2F73tfs22gzikim6quwf5w.png" alt="Alt Text" width="800" height="301"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;On our form, let's update the view to show the fresh version, so the user would be able to compare the new article to the previous version, and let's increase the version to the new version + 1, otherwise, the user will be locked (bad joke?). &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%2F4k9p4xnjdp2bsdndzjr8.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%2F4k9p4xnjdp2bsdndzjr8.png" alt="OMG" width="800" height="511"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now, the user should be seeing this:&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%2F62kf4jh5993zwi3cvw0o.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%2F62kf4jh5993zwi3cvw0o.png" alt="New version available" width="655" height="1004"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And when the user hits the update again, he'll be able to update the registry, finally 🙌😌&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%2F0va73qndl3w9zmzbsp27.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%2F0va73qndl3w9zmzbsp27.png" alt="Finally update registry" width="656" height="1003"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Final thoughts
&lt;/h2&gt;

&lt;p&gt;Final thoughts&lt;br&gt;
Rails is fantastic, and how it handles a lot of the problems for you is incredible. Sometimes we don't know some of these awesome features that Rails delivers to us. This is one thing that should now be available on your toolbelt if you didn't know about it before. I hope that you enjoyed this article and I'm eager to hear from you. What are your thoughts? Have you ever used this feature? And why? I'd love to hear your opinions. Please comment bellow and share with your friends. Thank you!&lt;/p&gt;

&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://api.rubyonrails.org/classes/ActiveRecord/Locking/Optimistic.html" rel="noopener noreferrer"&gt;https://api.rubyonrails.org/classes/ActiveRecord/Locking/Optimistic.html&lt;/a&gt;&lt;/p&gt;

</description>
      <category>rails</category>
      <category>sql</category>
      <category>ruby</category>
    </item>
    <item>
      <title>An Introduction to Linux</title>
      <dc:creator>Marcelo Barreto</dc:creator>
      <pubDate>Mon, 20 Jul 2020 23:51:46 +0000</pubDate>
      <link>https://dev.to/marcelobarreto/an-introduction-to-the-linux-world-4jkf</link>
      <guid>https://dev.to/marcelobarreto/an-introduction-to-the-linux-world-4jkf</guid>
      <description>&lt;p&gt;&lt;em&gt;From smartphones to cars, supercomputers and home appliances, home desktops to enterprise servers, the Linux operating system is everywhere.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This phrase can be intimidating or challenging, but don't let it make you afraid of learning more about this amazing operating system.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Linux
&lt;/h2&gt;

&lt;p&gt;Linux is an &lt;em&gt;Operating System&lt;/em&gt; like Windows, Mac OS, even Android which is powered by a Linux based image OS.&lt;br&gt;
The OS is responsible to manage the hardware and software on a computer. It is composed by many pieces of software which I'll try to explain here.&lt;/p&gt;

&lt;p&gt;It all starts at the Bootloader...&lt;/p&gt;

&lt;h3&gt;
  
  
  Bootloader
&lt;/h3&gt;

&lt;p&gt;The Bootloader layer is responsible to manage the boot process of your computer, the process of turning your computer on, load the peripheral drivers. For us, it appears only to be a simple splash screen blinking with an image at the corner.&lt;/p&gt;

&lt;p&gt;It starts to work after the computer's startup or boot process began with the BIOS (Basic Input / Output System) software on the motherboard. After the hardware initialization and checks were once done, the BIOS starts up the bootloader.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Just to make you familiar with some new names, the most famous bootloader is called &lt;a href="https://www.gnu.org/software/grub" rel="noopener noreferrer"&gt;GRUB&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Then it goes through the OS Kernel, but first, let me make some comparisons here:&lt;/p&gt;

&lt;p&gt;Think on an OS like an engine, it is the part of a machine that makes the things running properly. If the engine is not working, the machine does not work well or even work.&lt;/p&gt;

&lt;p&gt;The OS can be also compared to our brain, the device hardware is our members, but what makes our hands move is our brain. Ok, not exactly our brain but our nervous system. We can make another comparison here and our nervous system can be compared with the OS Kernel.&lt;/p&gt;

&lt;h3&gt;
  
  
  Kernel
&lt;/h3&gt;

&lt;p&gt;The Kernel is the part responsible to deal with every hardware component and make the communication between hardware and software.&lt;/p&gt;

&lt;p&gt;The Kernel is responsible for memory, process, and file management.&lt;/p&gt;

&lt;p&gt;Dealing with I/O (input/output) devices, the Kernel needs to understand if you are using a wired or wireless network connection, or if you are using a USB mouse or a touchpad device.&lt;/p&gt;

&lt;p&gt;And how Kernel deals with RAM (Random-Access Memory)?&lt;br&gt;
The RAM is used to store program instructions and data, like variables for example. Often multiple programs will try to access the memory, most of the time always demanding more memory than the device has available. The Kernel is responsible for deciding which piece of this memory those processes can use, and choosing what to do when no memory was left.&lt;/p&gt;

&lt;h3&gt;
  
  
  Init System
&lt;/h3&gt;

&lt;p&gt;The Init System layer assumes the job of finishing the start of the computer after the hands-over with the Bootloader occurs.&lt;/p&gt;

&lt;p&gt;It is the init system that manages the boot process, once the initial booting is handed over from the bootloader. A curious fact for those with are familiar with Linux, is that if you run a command at your terminal to see all processes running with &lt;code&gt;ps aux&lt;/code&gt;, you'll notice that the first process running is the &lt;code&gt;init system&lt;/code&gt; with a PID (process id) of 1.&lt;/p&gt;

&lt;h3&gt;
  
  
  Daemons
&lt;/h3&gt;

&lt;p&gt;The Daemons are background services, they can start right after the boot process, or even when you log your user in at your laptop. It's on this layer that you can choose what applications you want to be loaded with your computer or not. You can simply run a command to enable/unable a daemon to be started.&lt;br&gt;
They manage many parts of the system on things like when you insert or remove a device, managing user login, or managing your internet connection with a system window where you can connect to a real wi-fi router filling the password for example.&lt;/p&gt;

&lt;h3&gt;
  
  
  Graphical Server
&lt;/h3&gt;

&lt;p&gt;But this example of open a window pop-up asking for connects with my home's wifi network wouldn't be possible without the &lt;em&gt;Graphical Server&lt;/em&gt; Layer.&lt;/p&gt;

&lt;p&gt;The Graphical Server is known as &lt;em&gt;X Server&lt;/em&gt; or simply &lt;em&gt;X&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;This layer is responsible for drawing and moving windows on our device and interact with our mouse and keyboard. &lt;/p&gt;

&lt;h3&gt;
  
  
  Desktop Environment
&lt;/h3&gt;

&lt;p&gt;Very attached to the Graphical Server Layer comes the Desktop Environment Layer which you will be interacting with. Is here where you choose the system UI on options like XFCE, KDE, Gnome, Cinnamon, and others. Every Desktop Environment has its owns built-in applications like a default browser, file manager, tools, and UI.&lt;/p&gt;

&lt;h3&gt;
  
  
  Applications
&lt;/h3&gt;

&lt;p&gt;Finally the last layer, the Applications Layer!&lt;br&gt;
This layer is easy to understand, is where our applications are! Yes, it is but has more than just some apps like Google Chrome or your favorite code editor. All of our development libs are here too, things like &lt;code&gt;git&lt;/code&gt;, &lt;code&gt;curl&lt;/code&gt;, &lt;code&gt;bash&lt;/code&gt;, any of your programming languages interpreters or compilers.&lt;/p&gt;

&lt;p&gt;Nowadays many Linux Distros already count with a Software Center where you can simply open the application, search for some term you want, and install an application with a single click on the download button. Linux is being easier and more friendly to new users through time. &lt;/p&gt;

&lt;h2&gt;
  
  
  Why use Linux
&lt;/h2&gt;

&lt;p&gt;Why bother me on learning to use a new OS from scratch when we have some most friendly OS to use like Windows and macOS? I'll try to convince you talking about some experiences that I had in my career.&lt;/p&gt;

&lt;p&gt;To start, Linux is free, you don't have to pay for it. You don't have to put your privacy and security on the side trying to use an unlocked Windows version. Now imagine that you have a company and each of your employees needs to be a paid version of Windows? How much this will be leaving from the company account?&lt;/p&gt;

&lt;p&gt;The thing that always me like Linux most...&lt;/p&gt;

&lt;p&gt;Linux is like &lt;em&gt;ice cream&lt;/em&gt;! You can choose whatever flavor you like most. There is a flavor for every taste.&lt;/p&gt;

&lt;p&gt;You can choose to use the most famous Linux distro in the world, you better choose &lt;a href="https://ubuntu.com" rel="noopener noreferrer"&gt;Ubuntu&lt;/a&gt;. But if you like a more friendly and beautiful UI's yet, you can choose distros like &lt;a href="https://www.deepin.org/en/zh" rel="noopener noreferrer"&gt;Deepin&lt;/a&gt; or &lt;a href="https://elementary.io" rel="noopener noreferrer"&gt;ElementaryOS&lt;/a&gt;. Or if you just want a stable system you probably will choose &lt;a href="https://www.debian.org" rel="noopener noreferrer"&gt;Debian&lt;/a&gt;. You can want to feel like a hacker using &lt;a href="https://www.kali.org" rel="noopener noreferrer"&gt;Kali Linux&lt;/a&gt;, &lt;strong&gt;but don't fool yourself, a distro does not make you a hacker&lt;/strong&gt;. You maybe want to try something new and give it a chance to &lt;a href="https://mxlinux.org" rel="noopener noreferrer"&gt;MX Linux&lt;/a&gt; which is on the most downloaded Linux distros lately. You can check the list here on &lt;a href="https://distrowatch.com/dwres.php?resource=popularity" rel="noopener noreferrer"&gt;DistroWatch&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;My favorite &lt;em&gt;flavor&lt;/em&gt; always was Mint, in that case, &lt;a href="https://linuxmint.com" rel="noopener noreferrer"&gt;Linux Mint&lt;/a&gt; called my attention and became my favorite Linux distribution.&lt;/p&gt;

&lt;p&gt;The second point: Are you really satisfied with your operating system? Can you trust on it without any &lt;em&gt;anti-virus&lt;/em&gt; paid software? Is it starting to be slowing down with the time you use? Is your OS crashing without any reason?&lt;/p&gt;

&lt;p&gt;Since I've started to use Linux as my preferred OS, I'd never had a headache with this kind of problem anymore. Linux was evolved to be the most secure OS on the planet and you don't have to pay for using that.&lt;/p&gt;

&lt;p&gt;And when you want to become a programmer, it makes your life easier. All the extensions and libs you need already been compiled into an &lt;em&gt;apt package&lt;/em&gt; and you just need to run a simple command to run your application without having to create some workaround.&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%2Fimages.unsplash.com%2Fphoto-1549605659-32d82da3a059%3Fixlib%3Drb-1.2.1%26auto%3Dformat%26fit%3Dcrop%26w%3D1050%26q%3D80" 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%2Fimages.unsplash.com%2Fphoto-1549605659-32d82da3a059%3Fixlib%3Drb-1.2.1%26auto%3Dformat%26fit%3Dcrop%26w%3D1050%26q%3D80" alt="Thanks to Kevin Horvat for sharing their work on Unsplash." width="1050" height="700"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Advice for beginners
&lt;/h2&gt;

&lt;p&gt;I see many of my friends fearing Linux and I don't know if they are afraid of putting fire on their computer or if like Linux will destroy their entire network. Calm down, &lt;strong&gt;Linux is not your enemy&lt;/strong&gt;. If you are not confident with adopting any of the thousands of Linux distributions as your primary operating system, you can try it as &lt;em&gt;Virtual Machine&lt;/em&gt;. Any change on this &lt;em&gt;VM&lt;/em&gt; will be scoped to its hard drive, which is a single file on your computer. It means you don't have to be afraid to do whatever you want with it. Try to have fun, customize the panels, run some commands directly from the Terminal, even like &lt;code&gt;mkdir&lt;/code&gt;, &lt;code&gt;ls&lt;/code&gt;, &lt;code&gt;cd&lt;/code&gt;. Just try to &lt;em&gt;enjoy the ride&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Last thoughts
&lt;/h2&gt;

&lt;p&gt;Linux always will be a good OS choice thinking of security, productivity, and learning more about programming.&lt;/p&gt;

&lt;p&gt;My idea here was to share some personal insights and had to admit that was trying to learn more about Linux in the detail, and start to write this down made all the things present here to stay more clear at my head. I hope that all things here were clear to you too.&lt;/p&gt;

&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.linux.com/what-is-linux/" rel="noopener noreferrer"&gt;https://www.linux.com/what-is-linux/&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.redhat.com/en/topics/linux/what-is-linux" rel="noopener noreferrer"&gt;https://www.redhat.com/en/topics/linux/what-is-linux&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://fedoramagazine.org/what-is-an-init-system/" rel="noopener noreferrer"&gt;https://fedoramagazine.org/what-is-an-init-system&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Credits
&lt;/h2&gt;

&lt;p&gt;Thanks to Kevin Horvat for sharing his work on Unsplash and Wolfgang Kaehler/LightRocket on Getty Images.&lt;/p&gt;

</description>
      <category>linux</category>
      <category>unix</category>
      <category>beginners</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
