<?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: Aditya</title>
    <description>The latest articles on DEV Community by Aditya (@adityavinodh).</description>
    <link>https://dev.to/adityavinodh</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%2F604778%2F9464374f-943a-4827-a5e4-117817221866.png</url>
      <title>DEV Community: Aditya</title>
      <link>https://dev.to/adityavinodh</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/adityavinodh"/>
    <language>en</language>
    <item>
      <title>Ultimate Beginner's Guide to Linux</title>
      <dc:creator>Aditya</dc:creator>
      <pubDate>Mon, 19 Jul 2021 03:54:02 +0000</pubDate>
      <link>https://dev.to/adityavinodh/ultimate-beginner-s-guide-to-linux-45li</link>
      <guid>https://dev.to/adityavinodh/ultimate-beginner-s-guide-to-linux-45li</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ZRkeIWiU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.adityaone.com/linux_penguin.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ZRkeIWiU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.adityaone.com/linux_penguin.jpg" alt="Linux Penguin Logo"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  What is Linux?
&lt;/h1&gt;

&lt;p&gt;Linux is another operating system comparable to macOS and Windows.&lt;br&gt;
Although it is technically not referred to as a wholesome OS like its&lt;br&gt;
popular counterparts, there are distributions of Linux&lt;br&gt;
(flavours/variations) of it which can be directly compared.&lt;/p&gt;

&lt;p&gt;Linux is based on UNIX, similar to macOS, but that is pretty much where&lt;br&gt;
the similarities end. It was created by Linus Torvalds with a free, open&lt;br&gt;
source license, which is the main reason it grew so much in popularity.&lt;br&gt;
But, the software that Linus created, is only what is called the Linux&lt;br&gt;
Kernel, which is not an entire operating system.&lt;/p&gt;
&lt;h2&gt;
  
  
  Distributions (or distros)
&lt;/h2&gt;

&lt;p&gt;Other developers and companies over the years, have created their own&lt;br&gt;
versions of an operating system called distributions (or distro for&lt;br&gt;
short) building up on Linux. Few examples of these distributions are&lt;br&gt;
&lt;a href="https://www.debian.org/"&gt;Debian&lt;/a&gt;, &lt;a href="https://archlinux.org/"&gt;Arch Linux&lt;/a&gt;, &lt;a href="https://www.redhat.com/en/technologies/linux-platforms/enterprise-linux"&gt;Red Hat Enterprise&lt;/a&gt;, etc. Some of these distributions&lt;br&gt;
can only be used with a command-line interface (no graphical interface),&lt;br&gt;
but it is possible for users to install desktop environments or window&lt;br&gt;
managers for them to actually use it as a modern desktop operating&lt;br&gt;
system. &lt;/p&gt;

&lt;p&gt;Linux has grown in popularity over the years, and due to its free and&lt;br&gt;
open source nature, there are so many forks and branches of different&lt;br&gt;
distributions which are based on each other. An example is &lt;a href="https://ubuntu.com/"&gt;Ubuntu&lt;/a&gt;&lt;br&gt;
created by Canonical, one of the most popular distros in existence right now, which is based on&lt;br&gt;
one of the oldest distributions called Debian. Another popular&lt;br&gt;
distribution created by the company System76, is &lt;a href="https://pop.system76.com/"&gt;Pop!_OS&lt;/a&gt;, which is based&lt;br&gt;
on Ubuntu, which is based on Debian.&lt;/p&gt;

&lt;p&gt;&lt;a href="/1280px-RedHatFamilyTree1210.svg.png" class="article-body-image-wrapper"&gt;&lt;img src="/1280px-RedHatFamilyTree1210.svg.png" alt="Red Hat Family Tree"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The image above shows the numerous branches or forks of one particular&lt;br&gt;
distribution called Red Hat which is meant for enterprise businesses.&lt;/p&gt;
&lt;h1&gt;
  
  
  Advantages of using Linux
&lt;/h1&gt;
&lt;h2&gt;
  
  
  Performance and Efficiency
&lt;/h2&gt;

&lt;p&gt;Linux operating systems or distributions are extremely light-weight and&lt;br&gt;
efficient compared to their proprietary counterparts. The user is in&lt;br&gt;
full control of what runs on their system at all times, and any&lt;br&gt;
component can be removed and installed at any point of time. This causes&lt;br&gt;
computers to run tasks and perform much better on Linux rather on&lt;br&gt;
something like Windows. &lt;/p&gt;

&lt;p&gt;I can personally vouch for this as I have a new Dell XPS 13 with an&lt;br&gt;
Intel i7, which initially had Windows 10 Home pre-installed. Although&lt;br&gt;
there is not much of a performance difference between the Home and Pro&lt;br&gt;
versions, I should have been receiving excellent performance for the&lt;br&gt;
hardware I had. But, I often experienced sluggishness, animations losing&lt;br&gt;
frames, and the laptop often overheating. Once I jumped on to a linux&lt;br&gt;
distro (Ubuntu), I immediately experienced extremely snappy responses,&lt;br&gt;
and the overheating issues vanished. All of this was during regular&lt;br&gt;
browsing, video conferencing, etc.&lt;/p&gt;
&lt;h2&gt;
  
  
  File system
&lt;/h2&gt;

&lt;p&gt;This point ties in with performance. Linux uses a much more superior file system especially in contrast to Windows' FAT or NTFS. There are different variations, such as EXT4, which allow for more reliability, and much more faster and robust experience when copying, and moving around files and directories.&lt;/p&gt;
&lt;h2&gt;
  
  
  Security
&lt;/h2&gt;

&lt;p&gt;Linux is vastly more secure for two main reasons. Firstly, it is not&lt;br&gt;
nearly as popular as Windows or MacOS, so viruses are usually not made&lt;br&gt;
with Linux in mind. There are very few viruses made for Linux distros&lt;br&gt;
and you will not be needing to install any anti-virus software. Another&lt;br&gt;
reason is also probably because people using Linux are usually a little&lt;br&gt;
more tech-savvy and are careful when installing files from the internet.&lt;br&gt;
As long as you are aware of the file types and permissions on your&lt;br&gt;
system, you shouldn't have to worry.&lt;/p&gt;

&lt;p&gt;Secondly, because Linux is open source, vulnerabilities are quickly&lt;br&gt;
identified and patched by any knowledgeable person in the community,&lt;br&gt;
without having to wait for months from some company to provide a&lt;br&gt;
security patch. One could make the argument that if the code is open&lt;br&gt;
source, hackers or malicious individuals could easily exploit&lt;br&gt;
vulnerabilities. But, there are far more people looking to usually fix&lt;br&gt;
bugs and improve the system because they are the ones who are going to&lt;br&gt;
use it at the end of the day.&lt;/p&gt;
&lt;h2&gt;
  
  
  Reliability and Stability
&lt;/h2&gt;

&lt;p&gt;Linux is extremely stable and reliable. This is a well-known fact as it&lt;br&gt;
is employed in thousands of servers around the world which are running&lt;br&gt;
Linux continuously without any crashes or errors. Even Microsoft, which&lt;br&gt;
has their own Windows for Servers OS, uses Linux for their servers. They&lt;br&gt;
usually have high uptime and very rarely crash or provide issues. &lt;/p&gt;

&lt;p&gt;And, my most favourite feature of Linux, is that when something goes&lt;br&gt;
wrong, you get very descriptive error messages telling you what and&lt;br&gt;
where the issue has occurred. Using this information, you can most likely&lt;br&gt;
understand the problem and rectify it, or a quick Google search (or&lt;br&gt;
Brave, DuckDuckGo, etc.) will always find you the answer from countless&lt;br&gt;
blog posts and forums where the same question and error has probably&lt;br&gt;
been answered multiple times. In other OSs, it is almost impossible to&lt;br&gt;
get help, because when something goes wrong, it just says 'Oops,&lt;br&gt;
something has gone wrong', and you are pretty much helpless. Even if you&lt;br&gt;
try to ask someone online, there are probably a 100 possible errors&lt;br&gt;
which provide the same message.&lt;/p&gt;
&lt;h2&gt;
  
  
  Customizability
&lt;/h2&gt;

&lt;p&gt;Being open source, and further employing the concept of 'everything is a file', makes it possible to customize every aspect of the system. If you don't like the way something looks or behaves, you can just go ahead and change it without asking anyone. Everything in Linux is just a text file, even things like the network configuration or how your display is set up. So you can just open the file with a simple text editor, and make the change.&lt;/p&gt;

&lt;p&gt;If you are using a user-friendly distro, you can do this using a friendly GUI with intuitive menus so it can be done easily (just like on Windows or macOS). Other distributions which tend to be more lightweight will required users to actually dig into the files and change what they want.&lt;/p&gt;

&lt;p&gt;You will be amazed to see the desktops people have created using Linux. I can argue that it is 100 times better than the ones made by Microsoft and Apple.&lt;/p&gt;
&lt;h2&gt;
  
  
  Privacy
&lt;/h2&gt;

&lt;p&gt;Whether you are developer writing some important code for a piece of software, or you are just a regular daily user, privacy is something you never have to worry about in Linux. Due to the same reasons I mentioned above (being open source), you will never have to worry about key loggers, or any other kind of program that will track you on your device.&lt;/p&gt;
&lt;h2&gt;
  
  
  Software Updates
&lt;/h2&gt;

&lt;p&gt;Software update models depend on the distribution you are going to choose. Some have a rolling release cycle (like Arch Linux) where small incremental updates are released almost every month or week which always keeps you up-to-date with the latest bleeding-edge features. Others push updates around once or twice a year (like Ubuntu). This is generally considered a little more stable as it is more comprehensively been tested. But regardless of what release cycle is used, if you don't want to update your computer, you do not have to. You can say good bye to the annoying windows updates that you are forced to install. &lt;/p&gt;

&lt;p&gt;When the time comes for you to update your system (only if that is what you want), then one simple click or update command, will update every single package and software on your system, including the actual OS. Updating indivual packages separately is also an option.&lt;/p&gt;

&lt;p&gt;Another feature about Linux that is really convenient is that for most updates, you do not have to restart or reboot your computer. This is such a time-saver, especially if you are coming from Windows. Every time you update something, or are forced to update something, you might suddenly be asked to reboot your computer. Sometimes, my drivers have suddenly stopped being able to recognize the hardware completely. But on Linux, all of this happens without requiring an update most of the time.&lt;/p&gt;
&lt;h2&gt;
  
  
  User management
&lt;/h2&gt;

&lt;p&gt;This might not be too important to you, but the way Linux handles users is vastly superior. Since it was initially not meant to be used as a traditional desktop, rather on servers, Linux has the capability of multiple users logging into the same computer at the same time and working on something. This could be very useful if you are using it for a server, or just a main computer in your home where you want multiple family members to be able to use it and enjoy their content remotely at the same time.&lt;/p&gt;

&lt;p&gt;In addition to multiple simultaneous users, permissions are extremely strict and granular. By default, new users do not have most file access permissions (read, write, executable, etc.). You can specificly add permissions to each user, or add users to groups, and then add permissions for users of the group. Furthermore, the permissions that you add can be incredibly granular, such as for a specific file or directory. This also prevents the risk of some malicious file, script, or virus that somehow has made its way to your computer, to actually do any damage.&lt;/p&gt;
&lt;h2&gt;
  
  
  Software management
&lt;/h2&gt;

&lt;p&gt;Finally, linux fully embraces the open source idealogy. Most software that is used is open source, but also includes propreitary software. But, the main difference from Windows and macOS is how Linux decides to manage software. All distributions ship with a package manager. This is the defualt on the system, but you also have the option to install aditional ones. A package manager is a tool to help you install any software you want. It maintains a repository of sotware developed by many developers. As long as the software you want is available in the repository, a simple click or command with the program name is enough to install the entire software with all its dependencies. No annoying installation wizards. It takes care of the entire setup for you.&lt;/p&gt;

&lt;p&gt;If the software is not available in the repository, maybe because it is propreitary, you have a few options. Some popular distributions include repositories where all the software is contributed by individual users and developers. The information and instructions to install the software will be provided by the company or developer (usually on their website). So, you can download it from there. The last option is to compile it from source. This is something that will not make sense for the average user, but is still an option. It is very benefical even though it is difficult, as it allows for you to use a piece of software that would otherwise not be available. Basically it means, you download the source code (the actual code that the developers wrote), download and install any necessary dependencies, and then compile the app yourself for it to be run on your system. Usually this compilation step is done by the developers, and all you need to do is install the actuall binary file (.exe, .dmg, .pkg, .deb, .rpm, etc.) and do a quick install.&lt;/p&gt;
&lt;h1&gt;
  
  
  Getting Started
&lt;/h1&gt;
&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;p&gt;There are pretty much no prerequisites or minimum system requirements. All you need is a basic understanding of what Linux is, so you know what you are actually doing and getting yourself into. And most importantly, you need a working computer for you to install Linux. Any computer will do, even if it is around 10-15 years old, just make sure you have backed up all your files and are ready to format it.&lt;/p&gt;
&lt;h2&gt;
  
  
  Choosing a distro
&lt;/h2&gt;

&lt;p&gt;This is your starting point. But the most important thing you should know, and you will hear this advice everywhere, is to not distro hop. Choose one, use it as your daily driver atleast for 6 months, get a good feel for it, start customizing it to your taste, and then you can change distributions if you want. This most common misconception is to change distros because you think another distro looks better.&lt;/p&gt;
&lt;h3&gt;
  
  
  Desktop Environments
&lt;/h3&gt;

&lt;p&gt;If you choose Ubuntu for example, it uses a desktop environment called GNOME. This is the default desktop environment that it ships with. This is what gives it the familiar look and feel. If you don't like it, you can install a different one, and it will look completely different. So, if you find a picture of a distro that looks very nice, instead of changing distros, find out what desktop environments and configuration they are using, and just modify your existing setup. It is extremely simple, just a single one-line command will get the job done.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--I4ni7qIj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.adityaone.com/gnome.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--I4ni7qIj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.adityaone.com/gnome.png" alt="Gnome Desktop"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--bOLAeoBi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.adityaone.com/plasma-launcher.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--bOLAeoBi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.adityaone.com/plasma-launcher.jpg" alt="KDE Plasma"&gt;&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;For absolute beginners (and anyone with a brief understand - less than 6 months of hands-on experience), I recommend &lt;a href="https://ubuntu.com/"&gt;Ubuntu&lt;/a&gt;, &lt;a href="https://pop.system76.com/"&gt;Pop!_OS&lt;/a&gt;, or &lt;a href="https://linuxmint.com/"&gt;Linux Mint&lt;/a&gt;. These distros are very beginner friendly, have an easy trouble-free installation, and has the tools that you need to work right out of the box.&lt;/p&gt;

&lt;p&gt;If you want a polished desktop with a slight resemblance to macOS, then Ubuntu or popOS might be better, as they use the GNOME desktop environment. Linux Mint uses Cinnnamon, a desktop environment from the creators of Linux Mint itself. This will be much easier for a transitioning Windows user. Even though it is customizable, it might not look as modern or polished as Ubuntu or popOS right out of the box.&lt;/p&gt;
&lt;h2&gt;
  
  
  Preparing for Installation
&lt;/h2&gt;

&lt;p&gt;Once you have chosen the distribution, head over to the website which I have referenced above. Click on the name of the distribution to navigate to the respective website.&lt;/p&gt;

&lt;p&gt;Navigate to the download section and download the disk image. Usually there is just one download button, which will do the job, sometimes it might have different versions like stable, unstable, developer, insiders, VM images, etc. Just choose the main stable one. It is also possible that you might have to choose the correct download depending on the CPU architecture (Intel - X86-64, ARM, etc.).&lt;/p&gt;

&lt;p&gt;Once you download the file make sure it ends with '.iso'. That is the disk image for the OS.&lt;/p&gt;
&lt;h3&gt;
  
  
  Preparing the installation medium
&lt;/h3&gt;

&lt;p&gt;Now, we need to create a bootable USB drive to install the OS. Traditionally CDs or DVDs were used, but know using a USB Flash Drive is the norm. There are programs that will help us easily format our flash drive in the right way with our disk image on it such that the computer will be able to recognise it and boot from it. I recomment balenaEthcer as it is cross-compatible with Windows, macOS and Linux, so that the steps won't change. In addition to that, it is dead simple to use.&lt;/p&gt;

&lt;p&gt;Go to the &lt;a href="https://www.balena.io/etcher/"&gt;balenaEtcher&lt;/a&gt; site and download their tool. Once you have downloaded and installed it, plug in your flash drive. Make sure the contents of the flash drive are safely backed up somewhere else, as we are going to completely format it and write it over. Once you are sure that the flash drive is safe to be formatted, open up balenaEthcer. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--DFq29kng--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.adityaone.com/etcher_file_select.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--DFq29kng--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.adityaone.com/etcher_file_select.png" alt="Balena Etcher"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click on select file, and select the ISO file you just downloaded. Then select the flash drive, which should automatically be selected if it is the only one plugged in. Make sure that the right drive selected. Then proceed, and in a few minutes your flash drive will be ready to install the distribution.&lt;/p&gt;
&lt;h2&gt;
  
  
  Installing on Physical Hardware
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;Warning: This is a beginner's guide and will go over the setup to install the Linux distro on your entire system, formatting your drive in the process. It will not go over dual-booting, creating a separate partition, etc. That will be posted soon in a future post. PLEASE BACKUP your entire data in advance as all of your files and the OS will get deleted.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Please read the above warning before continuing. An option to explore if you don't want to immediately install on actual hardware is a virtual machine. Software like virtualbox from Oracle allow you to quickly and easily create virtual machines (isolated boxes) running any distro or OS you want without affecting your computer. However, it has a minimum hardware requirement of atleast 8GB of RAM/memory, atleast 100GB of disk space, etc. to run smoothly.&lt;/p&gt;



&lt;p&gt;Plug in your flash drive and boot up your computer. Enter the BIOS setup in your laptop or comupter and make the following changes. You have to do this while your computer starts/boots up. This can be done usually by pressing F2, but it might differ depending on the computer you have. A quick search for the brand or hardware that you are using will get you the right key.&lt;/p&gt;

&lt;p&gt;Then, make sure to set the flash drive to be at the top of the boot order. This will ensure that we boot from the flash drive instead of from the Hard Drive or SSD the normal way. &lt;/p&gt;

&lt;p&gt;Once you are done, exit the setup, and the distro of your choice should boot up. If it doesn't, then enter the BIOS setup and try toggling the option for Secure Boot.&lt;/p&gt;



&lt;p&gt;When you see the desktop UI, you should be able to see some dialog, button or modal to install the Distro. Click it and follow the instructions. The setup is very simple and self-explanatory. I am just going to give you the choices that are important, and the gotchas.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Using SSDs&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you are using a SSD instead of a Hard Drive, it might not be detected. When you get to the section where it asks you to select the disk you want to use, make sure you check the size. It will not be exact, but make sure it is approximately similar to the maximum capacity of the SSD. If it is not, then you have to go into the boot setup again, and navigate to the section for SSDs. The name will depend on the computer you are using. Change Intel RST to AHCI. Then boot from the USB again, and you should be able to see your SSD correctly identified.&lt;/p&gt;



&lt;p&gt;If it asks if you want a minimal or Normal installation, it depends on your preference. It is again self-explanatory, but anyways, it just means that they will pre-install helpful software such as an Office Suite, a video player, etc. to help you start using the computer right away.&lt;/p&gt;

&lt;p&gt;Make sure you select the option to &lt;strong&gt;Download Updates while Installing&lt;/strong&gt; so that it gives you a fully updated system. Most importantly, select the option to install &lt;strong&gt;propreitary drivers&lt;/strong&gt; to make sure you can make use of your hardware to its fullest potential.&lt;/p&gt;

&lt;p&gt;Then, choose the option to erase disk and install. This is the simplest option which will delete all your previous data and OS. Make sure that you have backed up your data. There are other options also to install it alongside the existing OS (dual-boot), but that is slightly complicated as you have to manually partition your hard drive or SSD. You can optionally encrypt the hard drive or SSD with a password. This is similar to BitLocker on Windows. It allows you to protect your data even if someone removes your hard drive.&lt;/p&gt;

&lt;p&gt;Lastly, you will need to create an account on your computer with your name, username, password, and the name for your computer.&lt;/p&gt;

&lt;p&gt;The installation will take a few minutes, maybe an hour, as it has to download all the software and format your disk.&lt;/p&gt;

&lt;p&gt;Once it is finished, you will be asked to reboot your computer. While rebooting, it will ask you to remove the installation media (flash drive). Then you will be welcomed into your new OS/distro.&lt;/p&gt;
&lt;h1&gt;
  
  
  Linux Fundamentals
&lt;/h1&gt;
&lt;h2&gt;
  
  
  User privilege
&lt;/h2&gt;

&lt;p&gt;Most operations can be done by clicking using your mouse. Sometimes, if required (like when installing software, you might need to install it using the terminal, you might get a 'Permission Denied' error. This means that you don't have permissions. What you can do is run the command as an administrator or a the 'root' user by prefixing the command using 'sudo'. Then it will ask for your password and check if you also have the admin privilege. If you do, it will successfully run. By default when you install a popular distro like Ubuntu, Linux Mint, or Pop!_OS, the new user created already has admin privilege, so you will not have any issues&lt;/p&gt;
&lt;h2&gt;
  
  
  Installing Apps
&lt;/h2&gt;

&lt;p&gt;This is the first thing you need to do when setting up your computer. Most Linux distros come with a package manager. This is a very unique concept that is unheard of in macOS and Windows. A package manager takes care of the entire installation process; there is no need to search for the right download link in a website, and go through a complicated installation wizard. All of the beginner-friendly distros that I mentioned above are based on Debian and some are also based on Ubuntu. For these distros, the default package manager is &lt;code&gt;apt&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;On most user-friendly distros, there will be a GUI application similar to the Windows Store or the Apple App Store to help you install software.&lt;/p&gt;

&lt;p&gt;If it is not there, open the terminal app (usually accessible via the keybind ctrl + alt + t) and run the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;apt search &lt;span class="o"&gt;{&lt;/span&gt;program name&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Replace {program name} with the actual name of the app you want to install. If you want to install spotify for example, just search for it, and see if it is available. This command will help you find the correct app name as it might be different from what you might expect. The description of the app given can also help you identify it.&lt;/p&gt;

&lt;p&gt;Once you find the right program, install it using:&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;apt &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;program name&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This will install the program. We add 'sudo' in the beginning to run the command with admin/root user privilege. It will list the names of the programs and the dependencies that it is going to install, and you need to confirm by typing 'y' when asked.&lt;/p&gt;




&lt;p&gt;If the app is not available on the main &lt;code&gt;apt&lt;/code&gt; repository, then you can try the snaps or flatpaks. I am not going through it in detail in this guide, but you can know that it is a way for an app to be easily distributed across all linux distributions easily. Usually, the snapstore is automatically installed on Ubuntu.&lt;/p&gt;




&lt;p&gt;If it is not available in any of the repositories that I have mentioned (which is highly unlikely), all you need to do is go to their website, and they will give you instructions to install it from their. This may include downloading the binary from their site and then installing it. If you are using a Debian based distro, the binary file will end with '.deb' (similar to .exe in windows). Download it and try to open it. Mostly, your system will have a program installed it which is capable of recognizing the file and installing it for you.&lt;/p&gt;

&lt;p&gt;Open the file manager (like windows explorer on windows) and go to the Downloads folder where the binary installer is located. Then right click in that folder to open in terminal. If your file is called for example 'skype_v2.deb', 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;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install&lt;/span&gt; ./skype_v2.deb
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;Another option is might include an AppImage. This is a way to distribute software in an isolated manner across all distributions. Download the file which ends in '.appimage' from the website, and try to open it. If you are not able to open it, then right click on the file and open the permissions. Change it to 'executable' and then it should work fine.&lt;/p&gt;




&lt;p&gt;If none of these options are given, you don't have to worry. Detailed steps or commands will be provided to you, and all you need to do is to paste them into the terminal and run them one by one in order. This is very rare, but you still might come across it. And since, you use a Debian based system which is one of the most popular distros, you don't need to worry about some software not being available.&lt;/p&gt;

&lt;h1&gt;
  
  
  Recommended Software
&lt;/h1&gt;

&lt;p&gt;Some new users might not be aware of the software that is available, or the good open source alternatives. So I have compiled a list of software that can be good to have.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Video Conferencing&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;- [Skype](https://www.skype.com/en/get-skype/) (Native App) (from Microsoft - Propreitary)
- [Jitsi](https://meet.jit.si/) (Web App) (Open Source)
- [Discord](https://discord.com/) (Web and Native App) (Proprietary)
- [Zoom](https://zoom.us/download#client_4meeting) (Native App) (Proprietary)
- [Teams](https://www.microsoft.com/en-us/microsoft-teams/download-app#desktopAppDownloadregion) (Native App) (from Microsoft - Proprietary)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;ol&gt;
&lt;li&gt;Office Suite&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;- [Libre Office](https://www.libreoffice.org/download/download/) (Native App) (Open Source)
- [Microsoft Office](https://www.office.com/) (Web App) (Proprietary)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;ol&gt;
&lt;li&gt;Multimedia player&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;- VLC media player
- Celluloid
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;ol&gt;
&lt;li&gt;Browser&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;- Brave (chromium based)
- Chrome (chromium based)
- Chromium (open source)
- Firefox
- LibreWolf (privacy oriented fork of Firefox)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;ol&gt;
&lt;li&gt;Music Streaming&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;- [Spotify](https://www.spotify.com/in-en/download/linux/) (Web and Native App) (proprietary)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;ol&gt;
&lt;li&gt;Note-taking (My top favorites)&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;- [Obsidian](https://obsidian.md/) (Native App) (open source)
    - It uses Markdown syntax
    - Has a knowledge graph and other advance features for note-taking
- [Notion](https://www.notion.so/) (Web app)
    - Simple, friendly user interface
    - Does not need markdown knowledge
    - Has a lot of templates to choose from
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;ol&gt;
&lt;li&gt;Mail clients&lt;/li&gt;
&lt;/ol&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;- Just use the browser version (Gmail, Outlook, Yahoo, etc.)

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://getmailspring.com/"&gt;Mailspring&lt;/a&gt; (open source)

&lt;ul&gt;
&lt;li&gt;Inlcudes fancy features such as link tracking, checking number of opens, etc.
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h1&gt;


Getting Help
&lt;/h1&gt;



&lt;p&gt;One of the wonderful thing about Linux is the online community. If you exclude the hate in the internet, it is very easy to find help, articles, tutorials/guides, and forums to get help in Linux. This is partly because of the very specific and helpful error messages that Linux gives rather than the blunt ones that you get on Windows or macOS. Just google the question, and you are 99.9% of the time going to get a helpful response. Checkout the Ubuntu forums, sub reddits, blogs created by others, and some discord communities.&lt;/p&gt;

&lt;p&gt;Lastly, I am always there to help too if you have any questions. Let me know in the comments if you have any questions, and I will try my best to get it sorted out. You can also reach me via email, twitter, or other platforms. Checkout the main homepage for more details.&lt;/p&gt;

</description>
      <category>linux</category>
      <category>beginners</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Sign commits on GitHub</title>
      <dc:creator>Aditya</dc:creator>
      <pubDate>Sat, 19 Jun 2021 06:18:48 +0000</pubDate>
      <link>https://dev.to/adityavinodh/sign-commits-on-github-k5o</link>
      <guid>https://dev.to/adityavinodh/sign-commits-on-github-k5o</guid>
      <description>&lt;h2&gt;
  
  
  What is Signing?
&lt;/h2&gt;

&lt;p&gt;Digital signing of any kind of document, email, message, or even your commits on your Git or GitHub repository are very similar to physically signing something using a pen. It is a way to verify the authenticity of the item. In simple terms, it helps us make sure that the item actually originates or comes from the person or author that we think it comes from. Digital signing makes use of cryptographical techniques to generate a public/private key pair. The document or data is signed using the private key which is never shared, and the authenticity can be verified using the public key which can be shared with everyone.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why should you sign code on GitHub
&lt;/h2&gt;

&lt;p&gt;When contributing code on large open source projects, sometimes it is important to make sure the repository is secure, and prevent any unauthorized changes. When you make changes, stage them, add the commit, and push the code to the remote repository on GitHub, there is a lot of metadata that is attached along with the actual code. Every commit contains the author's name and email which can be changed. Even though you authenticate using your GitHub username and password or personal access token, it is possible to change your name and email that you use for Git to make commits.&lt;/p&gt;

&lt;h3&gt;
  
  
  Proof
&lt;/h3&gt;

&lt;p&gt;I have added the same email to my Git config and my verified email on GitHub. But I have chosen to keep my email address private in the GitHub settings to hide my actual email address and display a no-reply email address provided by GitHub instead.&lt;/p&gt;

&lt;p&gt;This is how the commit looks like if I do it from my local computer which uses the email address in the git config.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fp7kroetc0x114y8q6cpo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fp7kroetc0x114y8q6cpo.png" alt="Git log for commit done from local respository"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If I make a commit or change from the GitHub.com website, it hides my personal email and uses the no-reply one.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fiflgtnm8wh2bsz6f05m3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fiflgtnm8wh2bsz6f05m3.png" alt="Git log for commit done from github.com"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So we have pretty much established that it is possible to impersonate anyone using git.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to sign your commits
&lt;/h2&gt;

&lt;p&gt;Git and GitHub allows you to sign your code using GPG. The first step is to generate a GPG key or use an existing one. The process to install and check if it is present varies depending on the operating system, so you can check the official &lt;a href="https://docs.github.com/en/github/authenticating-to-github/managing-commit-signature-verification/signing-commits" rel="noopener noreferrer"&gt;GitHub documentation&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;You have to let Git know about the key that you have generated. The steps to configure this for each operating system is mentioned on &lt;a href="https://docs.github.com/en/github/authenticating-to-github/managing-commit-signature-verification/telling-git-about-your-signing-key" rel="noopener noreferrer"&gt;this page&lt;/a&gt; in the GitHub Docs.&lt;/p&gt;

&lt;p&gt;Once Git is configured and knows about the GPG key, you can sign a commit using the &lt;code&gt;-S&lt;/code&gt; flag.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git commit -S -m "init commit"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then, all you have to do is push it to the remote GitHub repo.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git push
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.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%2Fhhtmcw1r8zuilcuigm65.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fhhtmcw1r8zuilcuigm65.png" alt="Verified Commit on GitHub"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now, your co-workers and anyone else who can view your repository can be sure that you are actually signing the commits yourself. And, you have a shiny 'verified' badge on all your commits!&lt;/p&gt;

&lt;p&gt;Please feel free to discuss in the comments, or edit this post. Thanks.&lt;/p&gt;

</description>
      <category>github</category>
      <category>devjournal</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Create your own Text Editor, but should you?</title>
      <dc:creator>Aditya</dc:creator>
      <pubDate>Wed, 02 Jun 2021 08:34:33 +0000</pubDate>
      <link>https://dev.to/adityavinodh/create-your-own-text-editor-but-should-you-2ole</link>
      <guid>https://dev.to/adityavinodh/create-your-own-text-editor-but-should-you-2ole</guid>
      <description>&lt;h1&gt;
  
  
  When do you need an editor?
&lt;/h1&gt;

&lt;p&gt;Nowadays, the trend seems to be leaning towards web development and web apps rather than native alternatives. Along with this trend, even simple applications require more complex feature sets and are built with a mobile-first design in mind, as well as a dynamic/responsive site. Any application that requires user input as text, images, or other multimedia content, will require some sort of an editor to implement. Even a simple website where you display articles or blogs, might require users to submit comments. But users are rarely satisfied with simple text and emojis. They might prefer to add an image, make the text bold or italic, embed a YouTube video, etc. These features require developers to implement an editor of some sort into their web apps.&lt;/p&gt;

&lt;h1&gt;
  
  
  How to get Started
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Drop-in solution
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fyo.adityaone.com%2Fquill-screenshot.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fyo.adityaone.com%2Fquill-screenshot.png" alt="Quill Screenshot"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There are quite a few options available to consider when implementing a text editor in your website. The first and most straight forward option is to use something like &lt;a href="https://quilljs.com/" rel="noopener noreferrer"&gt;Quill&lt;/a&gt;. This allows you to drop in the editor into your existing website with minor configuration and modification. You can pick a design or layout from one of the few existing options, and apply it to the website. This works for most web apps, with minor additional work arounds for frameworks like React. The video below shows an implementation to create a Google Docs clone.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=iRaelG7v0OU" rel="noopener noreferrer"&gt;Video by Web Dev Simplified - Google Docs Clone&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Create your own
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fyo.adityaone.com%2Fsidetracked-editor-screenshot.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fyo.adityaone.com%2Fsidetracked-editor-screenshot.png" alt="SideTracked Editor Screenshot"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is something that I do not recommend, unless you think you want to completely customize the behaviour. In my case, I wanted to explore and try it out, so I decided to make it as portable as possible, and prioritize features that are important to my app.&lt;/p&gt;

&lt;p&gt;Decide the features that are most important. In the case of a blogging or article publishing site, there are not going to be too much of formatting required. Blocks of text or media that follow a consistent style or format has been the trend, and is also visually more pleasing. So, you can set the style before hand, and then allow users to add sections of text or media from a list of options that you provide. You can allow a title, a subtitle, a smaller heading, a standard paragraph, a quote, an image, a video (maybe a YouTube embed), etc. You can style and theme the page appropriately for these formats. Make sure you can export the content with the actual data (links in the case of images, or actual links) and the meta data to style it. JSON is a good idea. The issue that you might run into is to make certain parts of a section, like certain words, italics, bold, or underlined. This is not too important, but might be something to consider.&lt;/p&gt;

&lt;p&gt;This data can now be converted and stored in any database.&lt;/p&gt;

&lt;h1&gt;
  
  
  Bonus (Community Comments)
&lt;/h1&gt;

&lt;p&gt;If you just want to implement a comment section for your website, you can use a service like &lt;a href="https://disqus.com/" rel="noopener noreferrer"&gt;Disqus&lt;/a&gt;. This is used on my blog that you are reading right now. You can check it out at the bottom of the blog. (No affiliation with Disqus)&lt;/p&gt;

&lt;p&gt;These features can get quite advanced and distracts you from the main focus of your app. Disqus makes it dead-simple to drop it in to your app, with their simple editor for users to submit comments, reply to other comments, and react to your posts. It even includes moderation.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>html</category>
    </item>
    <item>
      <title>Jumping on the Crypto Train</title>
      <dc:creator>Aditya</dc:creator>
      <pubDate>Wed, 12 May 2021 10:51:05 +0000</pubDate>
      <link>https://dev.to/adityavinodh/jumping-on-the-crypto-train-51kp</link>
      <guid>https://dev.to/adityavinodh/jumping-on-the-crypto-train-51kp</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--LdVuPkRm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/i3q1q2ejukyejk8oioa5.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--LdVuPkRm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/i3q1q2ejukyejk8oioa5.jpg" alt="Banner Image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  What is a cryptocurrency?
&lt;/h1&gt;

&lt;p&gt;Cryptocurrencies are a form of a completely digital currency. You might think it is similar to online banking, or credit or debit cards, but all of these methods still involve a middle man - your bank or card providers. Cryptocurrencies use a technology called the blockchain to completely get rid of any third person. You can directly make transactions with whoever you want, in a secure manner, without involving any other person. There are a few popular examples of these digital currencies, like Bitcoin, Ethereum, and the recently trending Dogecoin. Bitcoin was the first major, successful attempt at a cryptocurrency, and the following currencies that were created using similar technology (but with minor differences), are called altcoins.&lt;/p&gt;

&lt;h1&gt;
  
  
  What is the blockchain?
&lt;/h1&gt;

&lt;p&gt;It's not too important to know the specifics, but most cryptocurrencies rely on this technology to function. In simple terms, the blockchain is a chronological ledger or chain of data that is updated and synchronised across multiple computers across the internet. Every transaction is public, including the unique identification for both parties involved in the transaction, and the amount transfered. There is a complex cryptographic task that the computers must solve and agree on. This is why every transaction takes around a few minutes or sometimes hours to get approved and verified. Due to this design, the data or transactions can never be "hacked" or changed. It is nearly impossible.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--O8BqpKBZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://external-content.duckduckgo.com/iu/%3Fu%3Dhttps%253A%252F%252Fwww.slalom.com%252Fsites%252Fdefault%252Ffiles%252Finline-images%252Fblockchain-diagram-2-100.jpg%26f%3D1%26nofb%3D1" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--O8BqpKBZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://external-content.duckduckgo.com/iu/%3Fu%3Dhttps%253A%252F%252Fwww.slalom.com%252Fsites%252Fdefault%252Ffiles%252Finline-images%252Fblockchain-diagram-2-100.jpg%26f%3D1%26nofb%3D1" alt="Blockchain Diagram"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  How to use it?
&lt;/h1&gt;

&lt;p&gt;It is meant to be a replacement for traditional currencies, but it is far from becoming widely adopted. To actually use these cryptocurrencies, you first need a wallet. This can be a physical hardware wallet that you can buy, or a digital wallet that you can download, like a mobile app. Using an app as a wallet is the easiest, and is what I recomment. You can use an app like &lt;a href="https://wallet.coinbase.com/"&gt;Coinbase Wallet&lt;/a&gt; or &lt;a href="https://metamask.io/"&gt;Metamask&lt;/a&gt;. You need to buy and trade cryptocurrencies from an exchange. Make sure to do your research and use a reliable one. You can use your bank account or credit/debit card to purchase the cryptocurrency of your choice. For beginners, I recommend something like &lt;a href="https://uphold.com/"&gt;Uphold&lt;/a&gt; or &lt;a href="https://www.coinbase.com/"&gt;Coinbase&lt;/a&gt; (Different from Coinbase Wallet). Once you are done with the purchase, these exchanges usually provide a hosted wallet which is where your crypto will be stored. It is okay to leave it there, but it is usually recommended to transfer it to a separate wallet for security reasons. So, from the hosted wallet on one of these exchanges, you can transfer the cryptocurrency to your own wallet (something like Metamask), or even withdraw it to your bank account.&lt;/p&gt;

&lt;h2&gt;
  
  
  Fees and costs
&lt;/h2&gt;

&lt;p&gt;The exact fees and cost of the transactions will vary depending on which exchange you use, but most exchanges, especially new ones, have a 0% commission and fees policy for transfering from one crypto to another, and sometimes for also buying. But you often have to pay a network fee when withdrawing to a bank account or transfering to your or someone else's wallet. This fees depends on the network, and is often called network fees.&lt;/p&gt;

&lt;h1&gt;
  
  
  Things to consider
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Purpose of the cryptocurrency
&lt;/h2&gt;

&lt;p&gt;Every currency is created with a specific purpose in mind. Consider this while making a decision to purchase or invest in cryptocurrency. Bitcoin and Ethereum for example, are very popular currencies, but are also quite slow compared to other altcoins. It takes longer for transactions to complete, and have high network fees. It is okay if you are planning to make a long term investment, but it is usually not recommended for small, frequent transactions. Bitcoin Cash (BCH) (Not Bitcoin (BTC)) is an example of an altcoin which is a fork from Bitcoin. It was made in order to be fast and scalable, and has a much lower network fee than other alternatives.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cryptocurrency networks
&lt;/h2&gt;

&lt;p&gt;Multiple cryptocurrencies or tokens can use the same network to operate and function. Bitcoin uses the bitcoin network, ehtereum uses the ethereum network, Basic Attention Token (BAT - Used by the Brave browser) also uses the ethereum network, and Bitcoin Cash uses its own Bitcoin Cash network. The network used by the currency or token is important to consider, because it determines if you can convert it to another token, and how much network fees you will need to pay. Certain wallets like the Coinbase Wallet, only allow you to convert tokens to others if they use the Ethereum Network, other tokens can be stored and used, but not be converted to other forms.&lt;/p&gt;

&lt;h1&gt;
  
  
  Should you use it?
&lt;/h1&gt;

&lt;p&gt;Cryptocurrencies are extremely volatile, and therefore have a high risk. The value of your tokens can drastically change everyday, and thus pose a problem to be used as a daily currency. But, if you want to explore and try it out, its definitely something to dig deeper into. I would recommend to start with $10 - $15 as it is mostly the minimum amount required for the purchase.&lt;/p&gt;

&lt;h1&gt;
  
  
  Bonus
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Get started for free
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--6P8cKomP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://external-content.duckduckgo.com/iu/%3Fu%3Dhttps%253A%252F%252Fcoindrift.io%252Fwp-content%252Fuploads%252F2019%252F04%252FScreenshot-2019-04-25-at-15.36.18.png%26f%3D1%26nofb%3D1" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--6P8cKomP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://external-content.duckduckgo.com/iu/%3Fu%3Dhttps%253A%252F%252Fcoindrift.io%252Fwp-content%252Fuploads%252F2019%252F04%252FScreenshot-2019-04-25-at-15.36.18.png%26f%3D1%26nofb%3D1" alt="Brave Rewards"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you use the Brave browser, which I highly recommend, you get paid for watching optional advertisements that are completely privacy focused. You get paid in BAT (Basic Attention Token) which is based on the Ethereum Network. You can link it with an Uphold account. Once you reach a sufficient balance, you can transfer it to your own wallet. No credit/debit cards are required.&lt;/p&gt;

&lt;h2&gt;
  
  
  NFTs
&lt;/h2&gt;

&lt;p&gt;NFTs stands for Non Fungible Tokens. These are getting a lot of hype recently, and are in simple terms, a digital collectible. Its like collecting stamps or coins, but a digital version of that. They are also based on the blockchain, and help people purchase unique, non-replacable digital items, like a Tweet, an image, etc.&lt;/p&gt;

&lt;p&gt;Check out this link to learn more: &lt;a href="https://www.forbes.com/advisor/investing/nft-non-fungible-token/"&gt;Forbes Advisor article&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Other resources
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://cryptocurrency.org/beginners-guide"&gt;https://cryptocurrency.org/beginners-guide&lt;/a&gt;&lt;/p&gt;

</description>
      <category>cryptocurrency</category>
      <category>bitcoin</category>
      <category>dogecoin</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Create a Blog using Hugo</title>
      <dc:creator>Aditya</dc:creator>
      <pubDate>Thu, 06 May 2021 15:29:04 +0000</pubDate>
      <link>https://dev.to/adityavinodh/create-a-blog-using-hugo-447l</link>
      <guid>https://dev.to/adityavinodh/create-a-blog-using-hugo-447l</guid>
      <description>&lt;h1&gt;
  
  
  What is Hugo?
&lt;/h1&gt;

&lt;p&gt;Hugo is a static-site generator that helps you generate and build static files like HTML, CSS, and JavaScript ahead of time. It is an opensource project built with Go and boasts impressive build times that seems incomparable.&lt;/p&gt;

&lt;h1&gt;
  
  
  What does it do?
&lt;/h1&gt;

&lt;p&gt;It helps you convert markdown files (the files you will be writing your articles or blog posts in) to the static files that will be served later. &lt;/p&gt;

&lt;h1&gt;
  
  
  How is it different?
&lt;/h1&gt;

&lt;p&gt;This is different to traditional methods like a wordpress site, that has a dedicated database and a web server that needs to respond to requests, communicate with the Databse, and serve the files on every request. It is much more slower than using a static-site generator like Hugo as nothing is dynamic; we know that the content is not going to change. HTTP web servers are extremely good and fast at just serving static content. Users ask for a file, and the server just has to give it. There is no other processing involved.&lt;/p&gt;

&lt;h1&gt;
  
  
  The Benefits
&lt;/h1&gt;

&lt;p&gt;Your website can be deployed and hosted anywhere (On GCP cloud storage, AWS S3, Netlfify, Firebase, etc.), and can be deployed to a CDN (Content Delivery Network) so that it can be cached on a global edge network and significantly improve the performance and speed of page loads. This is especially important with poor internet connections, and for SEO (Search Engine Optimization).&lt;/p&gt;

&lt;h1&gt;
  
  
  Caveats
&lt;/h1&gt;

&lt;p&gt;However, that does not mean Hugo can not be used for anything dynamic. If your use case if very complex such as involving user input, you might not be able to use Hugo. Using a regular website, or single-page-application with React, Angular, Vue, or Svelte might be a better option. But if all you need is a simple blog, with a few extra features, like an option for users to provide comments, Hugo has everything you need.&lt;/p&gt;

&lt;h1&gt;
  
  
  Get Started
&lt;/h1&gt;

&lt;p&gt;The &lt;a href="https://gohugo.io/documentation/"&gt;Hugo Documentation&lt;/a&gt; is very helpful and elaborate. It is the first place to check in case of references or issues.&lt;/p&gt;

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

&lt;p&gt;Hugo is available in all platforms (Windows, MacOS, and Linux), as a binary that you can install, or via a package manager. If you have a compatible package manager, that is the recommended way as it is the easiest and has the least amount of work to maintain&lt;/p&gt;

&lt;h3&gt;
  
  
  Install using the Binaries
&lt;/h3&gt;

&lt;p&gt;Availabe from their GitHub &lt;a href="https://github.com/gohugoio/hugo/releases"&gt;Releases&lt;/a&gt; page. (Choose the appropriate platform and type of file). Make sure to install it in a location that is somewhere in your &lt;code&gt;PATH&lt;/code&gt;. &lt;code&gt;usr/local/bin&lt;/code&gt; is the best place for Linux. Otherwise, append the location to your &lt;code&gt;PATH&lt;/code&gt; variable.&lt;/p&gt;

&lt;h3&gt;
  
  
  Install using a Package Manager
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;On Windows&lt;/strong&gt;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;choco install hugo -confirm
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;or&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;scoop install hugo
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;




&lt;p&gt;&lt;strong&gt;On Linux and MacOS&lt;/strong&gt; (Using Homebrew)&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;brew install hugo
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;




&lt;p&gt;To verify that the installation occurred successfully, run the following command.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;hugo version
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;There should not be any errors.&lt;/p&gt;

&lt;h2&gt;
  
  
  Creating the Site
&lt;/h2&gt;

&lt;p&gt;Change directories into the location you want to create your project. Then run the following command with your project's name. This will create folder that contains all the files that you need to get started.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Creates a new site and project called 'firstblog'
hugo new site firstblog
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Change directories into the project directory that was created.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cd firstblog
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;You will notice a similar folder structure. The &lt;code&gt;config.toml&lt;/code&gt; file is where all the variables and settings for your projects live. You will be able to setup and configure most of your website from that one file.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.
├── archetypes
├── config.toml
├── content
├── data
├── layouts
├── static
└── themes
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;If you want to change the file type for your configurations, you can change it to YAML or JSON depending on your preference. You can copy and paste the contents of the file using a tool like &lt;a href="https://www.convertsimple.com/convert-toml-to-yaml/"&gt;ConvertSimple&lt;/a&gt; to convert the format and syntax.&lt;/p&gt;

&lt;p&gt;All of the actual content that you write as markdown files lives inside the &lt;code&gt;content&lt;/code&gt; directory. You can organize the content in folders, and subfolders, and Hugo will automatically take care of organizing the posts as categories or subcategories.&lt;/p&gt;

&lt;p&gt;Use the following command to create a blank markdown file. You can specify where you want to store this file. If the file name alone is provided, then it is directly placed in the &lt;code&gt;content&lt;/code&gt; directory.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;hugo create first-post.md
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;or try the following to place it in &lt;code&gt;content/posts&lt;/code&gt;:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;hugo create posts/first-post.md
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;




&lt;h3&gt;
  
  
  Front Matter
&lt;/h3&gt;

&lt;p&gt;Every markdown file that is created and used for your website has a section on the top that is unique to Hugo. It starts and ends with &lt;code&gt;---&lt;/code&gt;. The syntax used in this is &lt;code&gt;TOML&lt;/code&gt; by default. You can change this default setting with the following command:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# To convert to YML
hugo convert toYAML
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;In the front matter, you can set options for the specific page, meta data, and other configuration that is specific to this particular page. Check out the documentation of &lt;a href="https://gohugo.io/content-management/front-matter/"&gt;Front Matter&lt;/a&gt; to learn the different options available.&lt;/p&gt;

&lt;h3&gt;
  
  
  Install a Theme
&lt;/h3&gt;

&lt;p&gt;One of the powers of Hugo is to utilize one of the many themes created by the community. Check out the &lt;a href="https://themes.gohugo.io/"&gt;Complete List&lt;/a&gt; and choose one of the themes. Read the documentation and install the theme. This process is very straightforward. Mostly, you will have to download the code, either manually, or using Git, and place it in the &lt;code&gt;themes&lt;/code&gt; folder, then inside another folder with the name of the theme you chose.&lt;/p&gt;

&lt;p&gt;Then make sure to go to the &lt;code&gt;config&lt;/code&gt; file and update the theme variable with the name of the theme you have chosen.&lt;/p&gt;

&lt;h3&gt;
  
  
  Running the Site
&lt;/h3&gt;

&lt;p&gt;Hugo has an in-built web server that helps you view the site locally, and automatically watches your files for changes, and re-runs when the changes occur.&lt;/p&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;hugo server -D&lt;br&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h2&gt;
&lt;br&gt;
  &lt;br&gt;
  &lt;br&gt;
  Deployment&lt;br&gt;
&lt;/h2&gt;

&lt;p&gt;With the following command, Hugo builds your site and outputs the final static content to the &lt;code&gt;public&lt;/code&gt; directory by default. That can be modified in the &lt;code&gt;config&lt;/code&gt; file if needed. The contents of this file needs to be deployed with whatever hosting provider you chose to use.&lt;/p&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;hugo -D&lt;br&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h1&gt;
&lt;br&gt;
  &lt;br&gt;
  &lt;br&gt;
  Bonus content&lt;br&gt;
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Hosting
&lt;/h2&gt;

&lt;p&gt;Hugo is very feature-rich, and is an amazing product if used wisely. You could set up a CI/CD Pipeline to run every time you make changes and deploy to your hosting provider of choice.&lt;/p&gt;

&lt;p&gt;I have setup this blog using GitHub Actions and Firebase. Every time code is merged, a commit is made to the main branch, or a Pull Request is merged, a Firebase workflow runs on GitHub in the cloud that deploys the content of the &lt;code&gt;public&lt;/code&gt; directory to Firebase Hosting.&lt;/p&gt;

&lt;h2&gt;
  
  
  Comments
&lt;/h2&gt;

&lt;p&gt;You can add a comments or discussion section to all of your pages (or select ones) easily using &lt;a href="https://disqus.com/"&gt;Disqus&lt;/a&gt;. Instructions and setup is very straightforward and simple.&lt;/p&gt;




&lt;p&gt;That's all for this post and tutorial. I hoped this has helped you and given you an idea of how things work.&lt;/p&gt;

</description>
      <category>hugo</category>
      <category>beginners</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
