<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:media="http://search.yahoo.com/mrss/"><channel><title>Vineel Sai Blog</title><link>https://vineelsai.com/</link><description>Recent content on Vineel Sai Blog</description><generator>Hugo -- gohugo.io</generator><language>en</language><managingEditor>mail@vineelsai.com (Vineel Sai)</managingEditor><webMaster>mail@vineelsai.com (Vineel Sai)</webMaster><copyright>©2023, All Rights Reserved |<a href="https://privacy.vineelsai.com/Websites/blog">Privacy Policy</a></copyright><lastBuildDate>Wed, 04 Jan 2023 12:00:00 +0000</lastBuildDate><sy:updatePeriod>daily</sy:updatePeriod><atom:link href="https://vineelsai.com/index.xml" rel="self" type="application/rss+xml"/><item><title>Install Portainer in docker Linux</title><link>https://vineelsai.com/posts/install-portainer/</link><pubDate>Wed, 04 Jan 2023 12:00:00 +0000</pubDate><author>mail@vineelsai.com (Vineel Sai)</author><atom:modified>Wed, 04 Jan 2023 12:00:00 +0000</atom:modified><guid>https://vineelsai.com/posts/install-portainer/</guid><description>Portainer
hides the complexity of managing containers behind an easy-to-use UI. By removing the need to use the CLI, write YAML
or understand manifests, Portainer
makes deploying apps and troubleshooting problems so easy that anyone can do it.</description><content:encoded>&lt;p>&lt;img src="https://vineelsai.com/images/2023/posts/install-portainer/portainer-logo.png" alt="docker ubuntu" />&lt;/p>
&lt;p>&lt;a href="https://www.portainer.io" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
Portainer
&lt;/a>
hides the complexity of managing containers behind an easy-to-use UI. By removing the need to use the CLI, write &lt;a href="https://yaml.org/" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
YAML
&lt;/a>
or understand manifests, &lt;a href="https://www.portainer.io" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
Portainer
&lt;/a>
makes deploying apps and troubleshooting problems so easy that anyone can do it.&lt;/p>
&lt;h2 id="prerequisites">Prerequisites&lt;/h2>
&lt;h3 id="docker">Docker&lt;/h3>
&lt;ul>
&lt;li>If you haven&amp;rsquo;t installed docker follow this &lt;a href="https://vineelsai.com/posts/docker-install-ubuntu" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
article
&lt;/a>
and install docker&lt;/li>
&lt;/ul>
&lt;h2 id="install-portainer">Install Portainer&lt;/h2>
&lt;ul>
&lt;li>Create docker volume for portainer&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-sh" data-lang="sh">&lt;span class="line">&lt;span class="cl">docker volume create portainer_data
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;img src="https://vineelsai.com/images/2023/posts/install-portainer/create-docker-volume.png" alt="Create docker volume" />&lt;/p>
&lt;ul>
&lt;li>Run the following command to download and run the portainer docker container.&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-sh" data-lang="sh">&lt;span class="line">&lt;span class="cl">docker run -d -p 8000:8000 -p 9443:9443 --name portainer --restart&lt;span class="o">=&lt;/span>always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:latest
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;img src="https://vineelsai.com/images/2023/posts/install-portainer/portainer-run.png" alt="Portainer Docker" />&lt;/p>
&lt;ul>
&lt;li>Now go to https:meachine-ip:9443 and click advanced procied to unsafe and you get to auth page and create a password and click on create user.&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="https://vineelsai.com/images/2023/posts/install-portainer/portainer-unsecure.png" alt="Portainer Docker" />&lt;/p>
&lt;p>&lt;img src="https://vineelsai.com/images/2023/posts/install-portainer/portainer-auth.png" alt="Portainer Docker" />&lt;/p>
&lt;ul>
&lt;li>Now you will be in the getting started page click on get started to reach portainer home page and select your environment.&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="https://vineelsai.com/images/2023/posts/install-portainer/portainer-getstarted.png" alt="Portainer Docker" />&lt;/p>
&lt;p>&lt;img src="https://vineelsai.com/images/2023/posts/install-portainer/portainer-home.png" alt="Portainer Docker" />&lt;/p>
&lt;p>&lt;img src="https://vineelsai.com/images/2023/posts/install-portainer/portainer-dashboard.png" alt="Portainer Docker" />&lt;/p>
&lt;ul>
&lt;li>Click on containers tab and click on add container to get started with portainer.&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="https://vineelsai.com/images/2023/posts/install-portainer/portainer-containers.png" alt="Portainer Docker" />&lt;/p></content:encoded><dc:creator>Vineel Sai</dc:creator><media:content url="https://vineelsai.com//images/2023/thumbnails/install-portainer.webp" medium="image"><media:title type="html">featured image</media:title></media:content><category>Linux</category><category>Ubuntu</category><category>Docker</category><category>Portainer</category><category>Linux</category></item><item><title>Install Docker in Debian Linux</title><link>https://vineelsai.com/posts/docker-install-debian/</link><pubDate>Mon, 26 Dec 2022 12:00:00 +0000</pubDate><author>mail@vineelsai.com (Vineel Sai)</author><atom:modified>Mon, 26 Dec 2022 12:00:00 +0000</atom:modified><guid>https://vineelsai.com/posts/docker-install-debian/</guid><description>Docker
is an open platform for developing, shipping, and running applications. Docker
enables you to separate your applications from your infrastructure so you can deliver software quickly.</description><content:encoded>&lt;p>&lt;img src="https://vineelsai.com/images/2022/thumbnails/docker-debian.png" alt="docker debain" />&lt;/p>
&lt;p>&lt;a href="https://www.docker.com/" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
Docker
&lt;/a>
is an open platform for developing, shipping, and running applications. &lt;a href="https://www.docker.com/" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
Docker
&lt;/a>
enables you to separate your applications from your infrastructure so you can deliver software quickly. With &lt;a href="https://www.docker.com/" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
Docker
&lt;/a>
, you can manage your infrastructure in the same ways you manage your applications. In the following article, you will know how to install docker in &lt;a href="https://www.debian.org/" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
Debian
&lt;/a>
&lt;/p>
&lt;h2 id="prerequisites">Prerequisites&lt;/h2>
&lt;h3 id="dependencies">Dependencies&lt;/h3>
&lt;ul>
&lt;li>Update the system.&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo apt update
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;ul>
&lt;li>Install required dependencies&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo apt install ca-certificates curl gnupg lsb-release
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h3 id="setup-gpg-key">Setup GPG Key&lt;/h3>
&lt;ul>
&lt;li>Add official &lt;a href="https://www.docker.com/" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
docker
&lt;/a>
&lt;a href="https://gnupg.org/documentation/manuals/gnupg/" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
GPG
&lt;/a>
keys to your system&lt;/li>
&lt;li>Make keyrings folder&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo mkdir -p /etc/apt/keyrings
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;ul>
&lt;li>Add GPG keys to keyrings folder&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">curl -fsSL https://download.docker.com/linux/debian/gpg &lt;span class="p">|&lt;/span> sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h3 id="setup-docker-repository">Setup Docker Repository&lt;/h3>
&lt;ul>
&lt;li>Add &lt;a href="https://www.docker.com/" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
docker
&lt;/a>
download repository to your system&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="nb">echo&lt;/span> &lt;span class="s2">&amp;#34;deb [arch=&lt;/span>&lt;span class="k">$(&lt;/span>dpkg --print-architecture&lt;span class="k">)&lt;/span>&lt;span class="s2"> signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian &lt;/span>&lt;span class="k">$(&lt;/span>lsb_release -cs&lt;span class="k">)&lt;/span>&lt;span class="s2"> stable&amp;#34;&lt;/span> &lt;span class="p">|&lt;/span> sudo tee /etc/apt/sources.list.d/docker.list &amp;gt; /dev/null
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="install-docker">Install Docker&lt;/h2>
&lt;ul>
&lt;li>Update the system.&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo apt update
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;ul>
&lt;li>Install &lt;a href="https://www.docker.com/" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
docker
&lt;/a>
&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="post-install">Post Install&lt;/h2>
&lt;ul>
&lt;li>Add a &lt;a href="https://www.docker.com/" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
docker
&lt;/a>
to the user group to use the &lt;a href="https://www.docker.com/" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
docker
&lt;/a>
command without sudo&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo usermod -aG docker &lt;span class="nv">$USER&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="other-operating-systems">Other Operating Systems&lt;/h2>
&lt;ul>
&lt;li>
&lt;p>If you want to install Docker in other linux distributions check out the following links&lt;/p>
&lt;/li>
&lt;li>
&lt;p>For &lt;a href="https://www.debian.org/" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
Debian
&lt;/a>
- &lt;a href="https://vineelsai.com/posts/docker-install-debian" style="text-decoration: none; color: darkgreen; font-weight: bold;" >
Install Docker in Debian Linux
&lt;/a>
&lt;/p>
&lt;/li>
&lt;li>
&lt;p>For &lt;a href="https://ubuntu.com/" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
Ubuntu
&lt;/a>
- &lt;a href="https://vineelsai.com/posts/docker-install-ubuntu" style="text-decoration: none; color: darkgreen; font-weight: bold;" >
Install Docker in Ubuntu Linux
&lt;/a>
&lt;/p>
&lt;/li>
&lt;li>
&lt;p>For &lt;a href="https://getfedora.org/" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
Fedora
&lt;/a>
- &lt;a href="https://vineelsai.com/posts/docker-install-fedora" style="text-decoration: none; color: darkgreen; font-weight: bold;" >
Install Docker in Fedora Linux
&lt;/a>
&lt;/p>
&lt;/li>
&lt;/ul></content:encoded><dc:creator>Vineel Sai</dc:creator><media:content url="https://vineelsai.com//images/2022/thumbnails/docker-debian.png" medium="image"><media:title type="html">featured image</media:title></media:content><category>Linux</category><category>Debian</category><category>Docker</category><category>Linux</category></item><item><title>Install Docker in Fedora Linux</title><link>https://vineelsai.com/posts/docker-install-fedora/</link><pubDate>Mon, 26 Dec 2022 12:00:00 +0000</pubDate><author>mail@vineelsai.com (Vineel Sai)</author><atom:modified>Mon, 26 Dec 2022 12:00:00 +0000</atom:modified><guid>https://vineelsai.com/posts/docker-install-fedora/</guid><description>Docker
is an open platform for developing, shipping, and running applications. Docker
enables you to separate your applications from your infrastructure so you can deliver software quickly.</description><content:encoded>&lt;p>&lt;img src="https://vineelsai.com/images/2022/thumbnails/docker-fedora.png" alt="docker fedora" />&lt;/p>
&lt;p>&lt;a href="https://www.docker.com/" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
Docker
&lt;/a>
is an open platform for developing, shipping, and running applications. &lt;a href="https://www.docker.com/" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
Docker
&lt;/a>
enables you to separate your applications from your infrastructure so you can deliver software quickly. With &lt;a href="https://www.docker.com/" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
Docker
&lt;/a>
, you can manage your infrastructure in the same ways you manage your applications. In the following article, you will know how to install docker in &lt;a href="https://getfedora.org/" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
Fedora
&lt;/a>
&lt;/p>
&lt;h2 id="prerequisites">Prerequisites&lt;/h2>
&lt;h3 id="dependencies">Dependencies&lt;/h3>
&lt;ul>
&lt;li>Update the system.&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo dnf update
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;ul>
&lt;li>Install required dependencies&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo dnf -y install dnf-plugins-core
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h3 id="setup-docker-repository">Setup Docker Repository&lt;/h3>
&lt;ul>
&lt;li>Add &lt;a href="https://www.docker.com/" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
docker
&lt;/a>
download repository to your system&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo dnf config-manager --add-repo https://download.docker.com/linux/fedora/docker-ce.repo
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="install-docker">Install Docker&lt;/h2>
&lt;ul>
&lt;li>Install &lt;a href="https://www.docker.com/" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
docker
&lt;/a>
&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo dnf install docker-ce docker-ce-cli containerd.io docker-compose-plugin
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="post-install">Post Install&lt;/h2>
&lt;ul>
&lt;li>Add a &lt;a href="https://www.docker.com/" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
docker
&lt;/a>
to the user group to use the docker command without sudo&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo usermod -aG docker &lt;span class="nv">$USER&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="other-operating-systems">Other Operating Systems&lt;/h2>
&lt;ul>
&lt;li>
&lt;p>If you want to install Docker in other linux distributions check out the following links&lt;/p>
&lt;/li>
&lt;li>
&lt;p>For &lt;a href="https://www.debian.org/" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
Debian
&lt;/a>
- &lt;a href="https://vineelsai.com/posts/docker-install-debian" style="text-decoration: none; color: darkgreen; font-weight: bold;" >
Install Docker in Debian Linux
&lt;/a>
&lt;/p>
&lt;/li>
&lt;li>
&lt;p>For &lt;a href="https://ubuntu.com/" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
Ubuntu
&lt;/a>
- &lt;a href="https://vineelsai.com/posts/docker-install-ubuntu" style="text-decoration: none; color: darkgreen; font-weight: bold;" >
Install Docker in Ubuntu Linux
&lt;/a>
&lt;/p>
&lt;/li>
&lt;li>
&lt;p>For &lt;a href="https://getfedora.org/" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
Fedora
&lt;/a>
- &lt;a href="https://vineelsai.com/posts/docker-install-fedora" style="text-decoration: none; color: darkgreen; font-weight: bold;" >
Install Docker in Fedora Linux
&lt;/a>
&lt;/p>
&lt;/li>
&lt;/ul></content:encoded><dc:creator>Vineel Sai</dc:creator><media:content url="https://vineelsai.com//images/2022/thumbnails/docker-fedora.png" medium="image"><media:title type="html">featured image</media:title></media:content><category>Linux</category><category>Fedora</category><category>Docker</category><category>Linux</category></item><item><title>Install Docker in Ubuntu Linux</title><link>https://vineelsai.com/posts/docker-install-ubuntu/</link><pubDate>Mon, 26 Dec 2022 12:00:00 +0000</pubDate><author>mail@vineelsai.com (Vineel Sai)</author><atom:modified>Mon, 26 Dec 2022 12:00:00 +0000</atom:modified><guid>https://vineelsai.com/posts/docker-install-ubuntu/</guid><description>Docker
is an open platform for developing, shipping, and running applications. Docker
enables you to separate your applications from your infrastructure so you can deliver software quickly.</description><content:encoded>&lt;p>&lt;img src="https://vineelsai.com/images/2022/thumbnails/docker-ubuntu.png" alt="docker ubuntu" />&lt;/p>
&lt;p>&lt;a href="https://www.docker.com/" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
Docker
&lt;/a>
is an open platform for developing, shipping, and running applications. &lt;a href="https://www.docker.com/" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
Docker
&lt;/a>
enables you to separate your applications from your infrastructure so you can deliver software quickly. With &lt;a href="https://www.docker.com/" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
Docker
&lt;/a>
, you can manage your infrastructure in the same ways you manage your applications. In the following article, you will know how to install docker in &lt;a href="https://ubuntu.com/" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
Ubuntu
&lt;/a>
&lt;/p>
&lt;h2 id="prerequisites">Prerequisites&lt;/h2>
&lt;h3 id="dependencies">Dependencies&lt;/h3>
&lt;ul>
&lt;li>Update the system.&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo apt update
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;ul>
&lt;li>Install required dependencies&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo apt install ca-certificates curl gnupg lsb-release
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h3 id="setup-gpg-key">Setup GPG Key&lt;/h3>
&lt;ul>
&lt;li>Add official &lt;a href="https://www.docker.com/" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
docker
&lt;/a>
&lt;a href="https://gnupg.org/documentation/manuals/gnupg/" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
GPG
&lt;/a>
keys to your system&lt;/li>
&lt;li>Make keyrings folder&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo mkdir -p /etc/apt/keyrings
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;ul>
&lt;li>Add GPG keys to keyrings folder&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">curl -fsSL https://download.docker.com/linux/ubuntu/gpg &lt;span class="p">|&lt;/span> sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h3 id="setup-docker-repository">Setup Docker Repository&lt;/h3>
&lt;ul>
&lt;li>Add &lt;a href="https://www.docker.com/" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
docker
&lt;/a>
download repository to your system&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="nb">echo&lt;/span> &lt;span class="s2">&amp;#34;deb [arch=&lt;/span>&lt;span class="k">$(&lt;/span>dpkg --print-architecture&lt;span class="k">)&lt;/span>&lt;span class="s2"> signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu &lt;/span>&lt;span class="k">$(&lt;/span>lsb_release -cs&lt;span class="k">)&lt;/span>&lt;span class="s2"> stable&amp;#34;&lt;/span> &lt;span class="p">|&lt;/span> sudo tee /etc/apt/sources.list.d/docker.list &amp;gt; /dev/null
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="install-docker">Install Docker&lt;/h2>
&lt;ul>
&lt;li>Update the system.&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo apt update
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;ul>
&lt;li>Install &lt;a href="https://www.docker.com/" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
docker
&lt;/a>
&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="post-install">Post Install&lt;/h2>
&lt;ul>
&lt;li>Add a &lt;a href="https://www.docker.com/" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
docker
&lt;/a>
to the user group to use the &lt;a href="https://www.docker.com/" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
docker
&lt;/a>
command without sudo&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo usermod -aG docker &lt;span class="nv">$USER&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="other-operating-systems">Other Operating Systems&lt;/h2>
&lt;ul>
&lt;li>
&lt;p>If you want to install Docker in other linux distributions check out the following links&lt;/p>
&lt;/li>
&lt;li>
&lt;p>For &lt;a href="https://www.debian.org/" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
Debian
&lt;/a>
- &lt;a href="https://vineelsai.com/posts/docker-install-debian" style="text-decoration: none; color: darkgreen; font-weight: bold;" >
Install Docker in Debian Linux
&lt;/a>
&lt;/p>
&lt;/li>
&lt;li>
&lt;p>For &lt;a href="https://ubuntu.com/" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
Ubuntu
&lt;/a>
- &lt;a href="https://vineelsai.com/posts/docker-install-ubuntu" style="text-decoration: none; color: darkgreen; font-weight: bold;" >
Install Docker in Ubuntu Linux
&lt;/a>
&lt;/p>
&lt;/li>
&lt;li>
&lt;p>For &lt;a href="https://getfedora.org/" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
Fedora
&lt;/a>
- &lt;a href="https://vineelsai.com/posts/docker-install-fedora" style="text-decoration: none; color: darkgreen; font-weight: bold;" >
Install Docker in Fedora Linux
&lt;/a>
&lt;/p>
&lt;/li>
&lt;/ul></content:encoded><dc:creator>Vineel Sai</dc:creator><media:content url="https://vineelsai.com//images/2022/thumbnails/docker-ubuntu.png" medium="image"><media:title type="html">featured image</media:title></media:content><category>Linux</category><category>Ubuntu</category><category>Docker</category><category>Linux</category></item><item><title>Create AWS EC2 instance</title><link>https://vineelsai.com/posts/create-aws-ec2-instance/</link><pubDate>Wed, 08 Dec 2021 12:00:00 +0000</pubDate><author>mail@vineelsai.com (Vineel Sai)</author><atom:modified>Wed, 08 Dec 2021 12:00:00 +0000</atom:modified><guid>https://vineelsai.com/posts/create-aws-ec2-instance/</guid><description>EC2 is a part of AWS, that allows users to rent virtual computers on which to run your own applications. EC2 encourages scalable deployment of applications by providing a web service through which a user can boot a virtual machine, which Amazon calls an instance, containing any software desired.</description><content:encoded>&lt;p>EC2 is a part of AWS, that allows users to rent virtual computers on which to run your own applications. EC2 encourages scalable deployment of applications by providing a web service through which a user can boot a virtual machine, which Amazon calls an instance, containing any software desired. A user can create, launch, and terminate server-instances as needed, paying by the second for active servers&lt;/p>
&lt;h3 id="aws-ec2">AWS EC2&lt;/h3>
&lt;ul>
&lt;li>Go to AWS console &lt;a href="https://console.aws.amazon.com/ec2/" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
https://console.aws.amazon.com/ec2/
&lt;/a>
&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="https://vineelsai.com/images/2021/posts/create-aws-ec2-instance/aws-console.png" alt="AWS Console" />&lt;/p>
&lt;h3 id="create-a-new-ec2-instance">Create a new EC2 instance&lt;/h3>
&lt;ul>
&lt;li>
&lt;p>Click on Create a new instance.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Select the operating system for your EC2 instance.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="https://vineelsai.com/images/2021/posts/create-aws-ec2-instance/choose-image.png" alt="Choose Image" />&lt;/p>
&lt;ul>
&lt;li>Select instance type, and click on Next. Be sure to select the right instance type; it costs more money to run a bigger instance, use the &lt;a href="https://calculator.aws/#/createCalculator/EC2" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
AWS Calculator Page
&lt;/a>
to find the right instance type for your project.&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="https://vineelsai.com/images/2021/posts/create-aws-ec2-instance/choose-instance-type.png" alt="Choose Instance Type" />&lt;/p>
&lt;ul>
&lt;li>On the Configure Instance Details page, make any configuration changes you want to make and click Next. If you don&amp;rsquo;t see what you want to change, just click Next.&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="https://vineelsai.com/images/2021/posts/create-aws-ec2-instance/choose-instance-details.png" alt="Configure Instance Details" />&lt;/p>
&lt;ul>
&lt;li>On Add Storage page, type the amount of storage you want to add to your instance in the size column.&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="https://vineelsai.com/images/2021/posts/create-aws-ec2-instance/choose-storage.png" alt="Add Storage" />&lt;/p>
&lt;ul>
&lt;li>On Add Tags page, add tags for your instance, you can leave it empty and click Next.&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="https://vineelsai.com/images/2021/posts/create-aws-ec2-instance/choose-tags.png" alt="Add Tags" />&lt;/p>
&lt;ul>
&lt;li>On Configure Security Groups page, if you have a security group, select it. If you don&amp;rsquo;t have a security group, click on Create a new security group and add rules to it to allow traffic to your instance. For example, you can allow traffic to port 80 and 443 for HTTP and HTTPS respectively, from any IP address if you are hosting a web server, or you can allow traffic to port 22 for SSH from any IP address if you want to be able to SSH into your instance. And click on Next.&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="https://vineelsai.com/images/2021/posts/create-aws-ec2-instance/choose-network-type.png" alt="Configure Security Groups" />&lt;/p>
&lt;ul>
&lt;li>
&lt;p>On the Review page, you&amp;rsquo;ll be asked to create a key pair. If you don&amp;rsquo;t have a key pair, create one and click on Create Key Pair and give it a name and click on the Download button and save it carefully this is how you will be able to access your instance later, if you lose it you won&amp;rsquo;t be able to access your instance.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>After the key pair is created, click on Launch Instance.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="https://vineelsai.com/images/2021/posts/create-aws-ec2-instance/choose-keypair.png" alt="Launch Instance" />&lt;/p>
&lt;ul>
&lt;li>Then you&amp;rsquo;ll be redirected to the Instances page and you&amp;rsquo;ll see your new instance.&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="https://vineelsai.com/images/2021/posts/create-aws-ec2-instance/instances.png" alt="Instances" />&lt;/p>
&lt;h3 id="access-your-instance-details">Access your instance details&lt;/h3>
&lt;ul>
&lt;li>You can see more details about the instance by clicking on the instance ID, this will redirect you to the Instance summary page where you can find the Public IP of the instance.&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="https://vineelsai.com/images/2021/posts/create-aws-ec2-instance/instance-details.png" alt="Instance Details" />&lt;/p>
&lt;h3 id="connect-to-your-instance">Connect to your instance&lt;/h3>
&lt;ul>
&lt;li>Now open a Terminal or Command Prompt and type the following command to access your instance.&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-sh" data-lang="sh">&lt;span class="line">&lt;span class="cl">ssh -i &lt;span class="o">[&lt;/span>YOUR KEY PAIR NAME&lt;span class="o">]&lt;/span>.pem ec2-user@&lt;span class="o">[&lt;/span>YOUR PUBLIC IP&lt;span class="o">]&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;ul>
&lt;li>In my case, I used the following command to access my instance. For the first time, you&amp;rsquo;ll be asked to type &amp;ldquo;yes&amp;rdquo; to continue.&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-sh" data-lang="sh">&lt;span class="line">&lt;span class="cl">ssh -i ubuntu.pem ubuntu@3.110.103.9
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;img src="https://vineelsai.com/images/2021/posts/create-aws-ec2-instance/ssh.png" alt="SSH" />&lt;/p>
&lt;ul>
&lt;li>You can find exact commands to access your instance by clicking on the connect button on the top right side of the instance details page.&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="https://vineelsai.com/images/2021/posts/create-aws-ec2-instance/connect-to-instance.png" alt="Connect" />&lt;/p>
&lt;p>Now you have a new EC2 instance running on AWS ready to use. But keep in mind that EC2 instances can get pretty expensive to run, depending on the traffic you get, so you should be careful when you use them, and set proper budget notifications and limits in the billing console. If you&amp;rsquo;re not that comfortable with using EC2 and managing all these things, then you can always use the &lt;a href="https://vineelsai.com/posts/digitalocean-droplet" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
DigitalOcean Droplet
&lt;/a>
to host your VM, where your instance will be charged according to the plan you choose.&lt;/p></content:encoded><dc:creator>Vineel Sai</dc:creator><media:content url="https://vineelsai.com//images/2021/thumbnails/ec2.jpg" medium="image"><media:title type="html">featured image</media:title></media:content><category>Cloud</category><category>AWS</category><category>Cloud</category></item><item><title>Swap on Linux</title><link>https://vineelsai.com/posts/swap-on-linux/</link><pubDate>Wed, 01 Dec 2021 12:00:00 +0000</pubDate><author>mail@vineelsai.com (Vineel Sai)</author><atom:modified>Wed, 01 Dec 2021 12:00:00 +0000</atom:modified><guid>https://vineelsai.com/posts/swap-on-linux/</guid><description>Swap is a portion of the hard disk that is used by the operating system when to store temporary data when the system is running out of memory.</description><content:encoded>&lt;p>Swap is a portion of the hard disk that is used by the operating system when to store temporary data when the system is running out of memory. It basically works as an extension of the RAM but the data is stored on a disk instead of RAM, but don&amp;rsquo;t think it is a replacement for RAM because hard disk or even SSDs are much slower than RAM, so the swap is just to prevent the system from crashing if it runs out of memory.&lt;/p>
&lt;h3 id="checking-the-system-for-swap">Checking the System for Swap&lt;/h3>
&lt;ul>
&lt;li>Run the following command to see existing swap partitions.&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-sh" data-lang="sh">&lt;span class="line">&lt;span class="cl">sudo swapon --show
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;img src="https://vineelsai.com/images/2021/posts/swap-on-linux/swapon-show.png" alt="swapon show" />&lt;/p>
&lt;ul>
&lt;li>If it returns nothing, then there is no swap on your system and you can create one even if you have swap and you want to increase the size of the swap you can follow along and copy paste the commands below this doesn&amp;rsquo;t matter much.&lt;/li>
&lt;/ul>
&lt;h3 id="creating-a-swap-file">Creating a Swap File&lt;/h3>
&lt;ul>
&lt;li>Run the following command to create a swap file of size 1GB.&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-sh" data-lang="sh">&lt;span class="line">&lt;span class="cl">sudo fallocate -l 1G /swapfile
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;img src="https://vineelsai.com/images/2021/posts/swap-on-linux/create-swap.png" alt="fallocate" />&lt;/p>
&lt;ul>
&lt;li>You can replace the 1G with any size you want, it is recommended to use the size of your RAM if you have 8GB or less ram and half of your RAM if you have more than 8GB.&lt;/li>
&lt;/ul>
&lt;h3 id="enabling-the-swap-file">Enabling the Swap File&lt;/h3>
&lt;ul>
&lt;li>The following command will change the permissions of the swap file to be readable and writable by the root only.&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-sh" data-lang="sh">&lt;span class="line">&lt;span class="cl">sudo chmod &lt;span class="m">600&lt;/span> /swapfile
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;img src="https://vineelsai.com/images/2021/posts/swap-on-linux/enable-swap.png" alt="chmod" />&lt;/p>
&lt;ul>
&lt;li>Then run the following command to mark the file as swap.&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-sh" data-lang="sh">&lt;span class="line">&lt;span class="cl">sudo mkswap /swapfile
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;img src="https://vineelsai.com/images/2021/posts/swap-on-linux/mkswap.png" alt="mkswap" />&lt;/p>
&lt;ul>
&lt;li>Finally, run the following command to enable the swap file.&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-sh" data-lang="sh">&lt;span class="line">&lt;span class="cl">sudo swapon /swapfile
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;img src="https://vineelsai.com/images/2021/posts/swap-on-linux/swapon.png" alt="swapon" />&lt;/p>
&lt;ul>
&lt;li>Now run the swapon &amp;ndash;show command again to see if the swap file is created and enabled successfully.&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-sh" data-lang="sh">&lt;span class="line">&lt;span class="cl">sudo swapon --show
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;img src="https://vineelsai.com/images/2021/posts/swap-on-linux/swapon-show-swap.png" alt="swapon show" />&lt;/p>
&lt;h3 id="making-swap-permanent">Making swap permanent&lt;/h3>
&lt;ul>
&lt;li>Run the following command to enable swap on boot.&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-sh" data-lang="sh">&lt;span class="line">&lt;span class="cl">&lt;span class="nb">echo&lt;/span> &lt;span class="s1">&amp;#39;/swapfile none swap sw 0 0&amp;#39;&lt;/span> &lt;span class="p">|&lt;/span> sudo tee -a /etc/fstab
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;img src="https://vineelsai.com/images/2021/posts/swap-on-linux/swappiness-60.png" alt="show swappiness" />&lt;/p>
&lt;h3 id="tuning-the-swappiness">Tuning the swappiness&lt;/h3>
&lt;ul>
&lt;li>
&lt;p>Swappiness is a value that determines how much memory is swapped out to disk. It is a value between 0 and 100.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Run the following command to see the current swappiness value, it is usually set to 60.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-sh" data-lang="sh">&lt;span class="line">&lt;span class="cl">cat /proc/sys/vm/swappiness
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;img src="https://vineelsai.com/images/2021/posts/swap-on-linux/swappiness-60.png" alt="show swappiness" />&lt;/p>
&lt;ul>
&lt;li>
&lt;p>It is not bad if you have a high speed SSD or SSD with a lot of cache, but if you have a slow HDD then it’s better to set the swappiness closer to 0(but not 0).&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Run this command to set the current swappiness to 10.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-sh" data-lang="sh">&lt;span class="line">&lt;span class="cl">sudo sysctl vm.swappiness&lt;span class="o">=&lt;/span>&lt;span class="m">10&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;img src="https://vineelsai.com/images/2021/posts/swap-on-linux/vm-swappiness.png" alt="set swappiness" />&lt;/p>
&lt;ul>
&lt;li>And Edit the file /etc/sysctl.conf and add the following line at the bottom to make it persistent across reboots.&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-sh" data-lang="sh">&lt;span class="line">&lt;span class="cl">sudo nano /etc/sysctl.conf
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-sh" data-lang="sh">&lt;span class="line">&lt;span class="cl">vm.swappiness&lt;span class="o">=&lt;/span>&lt;span class="m">10&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;img src="https://vineelsai.com/images/2021/posts/swap-on-linux/edit-sysctl.png" alt="edit sysctl" />&lt;/p>
&lt;ul>
&lt;li>Press CTRL+X to exit nano and press Y to save the changes.&lt;/li>
&lt;/ul></content:encoded><dc:creator>Vineel Sai</dc:creator><media:content url="https://vineelsai.com//images/2021/thumbnails/ubuntu-logo.png" medium="image"><media:title type="html">featured image</media:title></media:content><category>Linux</category><category>Ubuntu</category><category>Linux</category></item><item><title>Create a New User from the terminal on Ubuntu</title><link>https://vineelsai.com/posts/create-user-terminal-ubuntu/</link><pubDate>Sun, 28 Nov 2021 14:00:00 +0000</pubDate><author>mail@vineelsai.com (Vineel Sai)</author><atom:modified>Sun, 28 Nov 2021 14:00:00 +0000</atom:modified><guid>https://vineelsai.com/posts/create-user-terminal-ubuntu/</guid><description>Root User Before you get started make sure you are in root user with the following command.
1 sudo sh Adding a New User Run the following command to create a new user.</description><content:encoded>&lt;h3 id="root-user">Root User&lt;/h3>
&lt;p>Before you get started make sure you are in root user with the following command.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-sh" data-lang="sh">&lt;span class="line">&lt;span class="cl">sudo sh
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h3 id="adding-a-new-user">Adding a New User&lt;/h3>
&lt;ul>
&lt;li>Run the following command to create a new user.&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-sh" data-lang="sh">&lt;span class="line">&lt;span class="cl">adduser username
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;ul>
&lt;li>You will be asked to enter a password for the user and confirm it and you will be asked to enter some details about the user you can either fill them or leave them empty.&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="https://vineelsai.com/images/2021/posts/create-user-terminal-ubuntu/add-user.png" alt="adduser" />&lt;/p>
&lt;h3 id="adding-the-user-to-the-sudo-group">Adding the User to the sudo Group&lt;/h3>
&lt;ul>
&lt;li>Run the following command to add the user to the sudo group.&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-sh" data-lang="sh">&lt;span class="line">&lt;span class="cl">usermod -aG sudo username
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;img src="https://vineelsai.com/images/2021/posts/create-user-terminal-ubuntu/usermod.png" alt="adduser" />&lt;/p>
&lt;h3 id="switching-to-the-new-user">Switching to the New User&lt;/h3>
&lt;ul>
&lt;li>Run the following command to switch to the new user.&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-sh" data-lang="sh">&lt;span class="line">&lt;span class="cl">su username
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;img src="https://vineelsai.com/images/2021/posts/create-user-terminal-ubuntu/switch-user.png" alt="adduser" />&lt;/p>
&lt;h3 id="testing-sudo-access">Testing sudo access&lt;/h3>
&lt;ul>
&lt;li>To make sure that the user has sudo access run a command with sudo.&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-sh" data-lang="sh">&lt;span class="line">&lt;span class="cl">sudo apt update
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;img src="https://vineelsai.com/images/2021/posts/create-user-terminal-ubuntu/test-sudo-access.png" alt="adduser" />&lt;/p></content:encoded><dc:creator>Vineel Sai</dc:creator><media:content url="https://vineelsai.com//images/2021/thumbnails/user-icon.png" medium="image"><media:title type="html">featured image</media:title></media:content><category>Linux</category><category>Ubuntu</category><category>Linux</category></item><item><title>Create a DigitalOcean droplet</title><link>https://vineelsai.com/posts/digitalocean-droplet/</link><pubDate>Sun, 28 Nov 2021 12:00:00 +0000</pubDate><author>mail@vineelsai.com (Vineel Sai)</author><atom:modified>Sun, 28 Nov 2021 12:00:00 +0000</atom:modified><guid>https://vineelsai.com/posts/digitalocean-droplet/</guid><description>DigitalOcean
Droplets are Linux-based virtual machines (VMs) that run on top of virtualized hardware. Each Droplet you create is a new server you can use, either standalone or as part of a larger, cloud-based infrastructure.</description><content:encoded>&lt;p>&lt;a href="https://m.do.co/c/96aa4c93885e" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
DigitalOcean
&lt;/a>
Droplets are Linux-based virtual machines (VMs) that run on top of virtualized hardware. Each Droplet you create is a new server you can use, either standalone or as part of a larger, cloud-based infrastructure.&lt;/p>
&lt;p>This guide assumes you already have a &lt;a href="https://m.do.co/c/96aa4c93885e" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
DigitalOcean
&lt;/a>
account, If not you can create one &lt;a href="https://m.do.co/c/96aa4c93885e" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
here.
&lt;/a>
&lt;/p>
&lt;h3 id="create-a-droplet">Create a droplet&lt;/h3>
&lt;ul>
&lt;li>Go to &lt;a href="https://cloud.digitalocean.com/projects" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
DigitalOcean Project Dashboard
&lt;/a>
and click on Get Started with a Droplet.&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="https://vineelsai.com/images/2021/posts/create-digitalocean-droplet/get-started.png" alt="DigitalOcean Project Dashboard" />&lt;/p>
&lt;ul>
&lt;li>Then choose the image you want to use, in my case, I chose Ubuntu 20.04.&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="https://vineelsai.com/images/2021/posts/create-digitalocean-droplet/choose-os.png" alt="Choose Image" />&lt;/p>
&lt;ul>
&lt;li>Then choose the size of the droplet you want to create, I am going with 1GB, $6/month droplet.&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="https://vineelsai.com/images/2021/posts/create-digitalocean-droplet/choose-plan.png" alt="Choose Plan" />&lt;/p>
&lt;ul>
&lt;li>Then choose the region you want to create the droplet in, I am going to use Bangalore since it’s nearest to me.&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="https://vineelsai.com/images/2021/posts/create-digitalocean-droplet/choose-region.png" alt="Choose Region" />&lt;/p>
&lt;ul>
&lt;li>Now enter a password for the droplet, don&amp;rsquo;t lose it! You will need it later to connect to the droplet.&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="https://vineelsai.com/images/2021/posts/create-digitalocean-droplet/enter-password.png" alt="Enter Password" />&lt;/p>
&lt;ul>
&lt;li>Then enter the hostname of the droplet, I am going to use ubuntu.&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="https://vineelsai.com/images/2021/posts/create-digitalocean-droplet/enter-hostname.png" alt="Enter Host Name" />&lt;/p>
&lt;ul>
&lt;li>Finally, click on Create Droplet.&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="https://vineelsai.com/images/2021/posts/create-digitalocean-droplet/create-droplet.png" alt="Create Droplet" />&lt;/p>
&lt;ul>
&lt;li>Now wait for the droplet to be created, this usually happens in under a minute.&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="https://vineelsai.com/images/2021/posts/create-digitalocean-droplet/wait-for-creation.png" alt="Wait" />&lt;/p>
&lt;h3 id="connect-to-the-droplet">Connect to the droplet&lt;/h3>
&lt;ul>
&lt;li>Once the droplet is created, copy the IP address of the droplet and open the terminal in Linux or PowerShell/CMD in windows and use the following command to connect to the droplet.&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="https://vineelsai.com/images/2021/posts/create-digitalocean-droplet/droplet-ready.png" alt="Copy IP" />&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-sh" data-lang="sh">&lt;span class="line">&lt;span class="cl">ssh root@&amp;lt;IP ADDRESS&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;ul>
&lt;li>You will be asked to type &amp;ldquo;yes&amp;rdquo; to add the SSH key to the droplet and then you will be asked to enter the password for the droplet.&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="https://vineelsai.com/images/2021/posts/create-digitalocean-droplet/ssh-connect.png" alt="SSH" />&lt;/p>
&lt;ul>
&lt;li>Now you are connected to the droplet and you can start doing things you want to do.&lt;/li>
&lt;/ul></content:encoded><dc:creator>Vineel Sai</dc:creator><media:content url="https://vineelsai.com//images/2021/thumbnails/digitalocean-logo.png" medium="image"><media:title type="html">featured image</media:title></media:content><category>Cloud</category><category>DigitalOcean</category><category>Cloud</category></item><item><title>Uninstall Snap in Ubuntu</title><link>https://vineelsai.com/posts/uninstall-snap-ubuntu/</link><pubDate>Sat, 27 Nov 2021 14:00:00 +0000</pubDate><author>mail@vineelsai.com (Vineel Sai)</author><atom:modified>Sat, 27 Nov 2021 14:00:00 +0000</atom:modified><guid>https://vineelsai.com/posts/uninstall-snap-ubuntu/</guid><description>Snap is a packaging format developed by canonical to use in Ubuntu
and other Linux distros but there are problems with snaps as they are slow compared to native binaries and consume a lot of disk space and the server side of snapcraft
is proprietary, but since it’s their own technology canonical is pushing it too much over other solutions in Ubuntu
, so for any of the following reasons if you want to uninstall snaps from your system just follow along.</description><content:encoded>&lt;p>Snap is a packaging format developed by canonical to use in &lt;a href="https://ubuntu.com" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
Ubuntu
&lt;/a>
and other Linux distros but there are problems with snaps as they are slow compared to native binaries and consume a lot of disk space and the server side of &lt;a href="https://snapcraft.io" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
snapcraft
&lt;/a>
is proprietary, but since it’s their own technology canonical is pushing it too much over other solutions in &lt;a href="https://ubuntu.com" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
Ubuntu
&lt;/a>
, so for any of the following reasons if you want to uninstall snaps from your system just follow along.&lt;/p>
&lt;h3 id="uninstall-snaps">Uninstall Snaps&lt;/h3>
&lt;ul>
&lt;li>Run the following command to list all snaps in your system.&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-sh" data-lang="sh">&lt;span class="line">&lt;span class="cl">snap list
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;img src="https://vineelsai.com/images/2021/posts/uninstall-snap-ubuntu/snap-list.png" alt="snap list" />&lt;/p>
&lt;ul>
&lt;li>Then remove snaps one by one by using the following command&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-sh" data-lang="sh">&lt;span class="line">&lt;span class="cl">sudo snap remove --purge snap-name
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;img src="https://vineelsai.com/images/2021/posts/uninstall-snap-ubuntu/snap-remove.png" alt="snap remove" />&lt;/p>
&lt;h3 id="uninstall-snapd">Uninstall snapd&lt;/h3>
&lt;ul>
&lt;li>After removing snaps you can completely remove snap by using the following command&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-sh" data-lang="sh">&lt;span class="line">&lt;span class="cl">sudo apt remove --purge snapd
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;img src="https://vineelsai.com/images/2021/posts/uninstall-snap-ubuntu/remove-snapd.png" alt="remove snapd" />&lt;/p>
&lt;h3 id="delete-snap-cache">Delete snap cache&lt;/h3>
&lt;ul>
&lt;li>Run the following commands to remove any snap configuration or cache files.&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-sh" data-lang="sh">&lt;span class="line">&lt;span class="cl">sudo rm -rf /var/cache/snapd/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">rm -fr ~/snap &lt;span class="c1"># for home user&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo rm -fr ~/snap &lt;span class="c1"># for root user&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;img src="https://vineelsai.com/images/2021/posts/uninstall-snap-ubuntu/remove-snap-cache.png" alt="remove snap cache" />&lt;/p>
&lt;h3 id="hold-snap-package">Hold snap package&lt;/h3>
&lt;ul>
&lt;li>Run the following command to prevent snap from auto installing, for example, while installing the chromium package.&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-sh" data-lang="sh">&lt;span class="line">&lt;span class="cl">sudo apt-mark hold snapd
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;img src="https://vineelsai.com/images/2021/posts/uninstall-snap-ubuntu/hold-snap.png" alt="hold snap" />&lt;/p></content:encoded><dc:creator>Vineel Sai</dc:creator><media:content url="https://vineelsai.com//images/2021/thumbnails/snapcraft-logo-bird.png" medium="image"><media:title type="html">featured image</media:title></media:content><category>Linux</category><category>Snap</category><category>Ubuntu</category><category>Linux</category></item><item><title>Make your own vscode theme from scratch</title><link>https://vineelsai.com/posts/make-your-own-vscode-theme/</link><pubDate>Fri, 26 Nov 2021 10:00:00 +0000</pubDate><author>mail@vineelsai.com (Vineel Sai)</author><atom:modified>Fri, 26 Nov 2021 10:00:00 +0000</atom:modified><guid>https://vineelsai.com/posts/make-your-own-vscode-theme/</guid><description>To make a vscode
theme you first need to install nodejs and npm before you get started and also make sure you have vscode
installed for obvious reasons.</description><content:encoded>&lt;p>To make a &lt;a href="https://code.visualstudio.com" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
vscode
&lt;/a>
theme you first need to install nodejs and npm before you get started and also make sure you have &lt;a href="https://code.visualstudio.com" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
vscode
&lt;/a>
installed for obvious reasons.&lt;/p>
&lt;p>NodeJs - &lt;a href="https://nodejs.org/en/" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
https://nodejs.org/en/
&lt;/a>
&lt;br />
vscode - &lt;a href="https://code.visualstudio.com/" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
https://code.visualstudio.com/
&lt;/a>
&lt;/p>
&lt;h3 id="install-yo">Install yo&lt;/h3>
&lt;ul>
&lt;li>After you install npm run the following command in your terminal.&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-sh" data-lang="sh">&lt;span class="line">&lt;span class="cl">npm install -g yo generator-code
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;img src="https://vineelsai.com/images/2021/posts/make-your-own-vscode-theme/install-yo.png" alt="Install yo" />&lt;/p>
&lt;ul>
&lt;li>This installs yo and generate-code globally in your system&lt;/li>
&lt;/ul>
&lt;h3 id="create-theme">Create theme&lt;/h3>
&lt;ul>
&lt;li>After successfully installation run the following command to create a project&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-sh" data-lang="sh">&lt;span class="line">&lt;span class="cl">yo code
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;ul>
&lt;li>You will be asked to select options how you want to create the theme and other questions make sure you fill them all correctly&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="https://vineelsai.com/images/2021/posts/make-your-own-vscode-theme/yo-code-color-theme.png" alt="yo code" />&lt;/p>
&lt;p>&lt;img src="https://vineelsai.com/images/2021/posts/make-your-own-vscode-theme/yo-code-theme-create-type.png" alt="yo code" />&lt;/p>
&lt;p>&lt;img src="https://vineelsai.com/images/2021/posts/make-your-own-vscode-theme/yo-code-finish.png" alt="yo code" />&lt;/p>
&lt;h3 id="edit-theme">Edit theme&lt;/h3>
&lt;ul>
&lt;li>After you finished it will open the created project in &lt;a href="https://code.visualstudio.com" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
vscode
&lt;/a>
.&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="https://vineelsai.com/images/2021/posts/make-your-own-vscode-theme/theme-folder.png" alt="vscode" />&lt;/p>
&lt;ul>
&lt;li>Press F5 on your keyboard and it will open a debug window where you can test the theme.&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="https://vineelsai.com/images/2021/posts/make-your-own-vscode-theme/debug-window-no-theme.png" alt="vscode debug window" />&lt;/p>
&lt;ul>
&lt;li>
&lt;p>In &lt;a href="https://code.visualstudio.com" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
vscode
&lt;/a>
open the JSON file named &lt;strong>your theme name&lt;/strong>-color-theme.json under the themes folder.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;a href="https://code.visualstudio.com" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
vscode
&lt;/a>
provides a color picker when you hover around the color box in front of the hex code it makes it easy to edit the theme.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Edit the colors you want and save the file.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="https://vineelsai.com/images/2021/posts/make-your-own-vscode-theme/theme-code.png" alt="vscode theme edit" />&lt;/p>
&lt;ul>
&lt;li>The theme will instantly reflect in the debug window as soon as you save it.&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="https://vineelsai.com/images/2021/posts/make-your-own-vscode-theme/debug-window-theme.png" alt="vscode debug window" />&lt;/p>
&lt;p>Feel free to make whatever changes you want to make.&lt;/p>
&lt;p>&lt;strong>Explore more at&lt;/strong> - &lt;a href="https://code.visualstudio.com/docs/getstarted/themes" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
https://code.visualstudio.com/docs/getstarted/themes
&lt;/a>
&lt;/p></content:encoded><dc:creator>Vineel Sai</dc:creator><media:content url="https://vineelsai.com//images/2021/thumbnails/vscode.png" medium="image"><media:title type="html">featured image</media:title></media:content><category>vscode</category><category>theme</category><category>vscode</category></item><item><title>Flutter VS React Native in 2022</title><link>https://vineelsai.com/posts/flutter-vs-react-native-mobile-development/</link><pubDate>Thu, 25 Nov 2021 15:00:00 +0000</pubDate><author>mail@vineelsai.com (Vineel Sai)</author><atom:modified>Thu, 25 Nov 2021 15:00:00 +0000</atom:modified><guid>https://vineelsai.com/posts/flutter-vs-react-native-mobile-development/</guid><description>If you want to make a cross platform app that works on both Android &amp;amp; IOS then you have mainly two options to choose from Flutter
and React Native
.</description><content:encoded>&lt;p>&lt;img src="https://vineelsai.com/images/2021/posts/flutter-vs-react-native/flutter-vs-react-native.jpg" alt="Mobile" />&lt;/p>
&lt;p>If you want to make a cross platform app that works on both Android &amp;amp; IOS then you have mainly two options to choose from &lt;a href="https://flutter.dev" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
Flutter
&lt;/a>
and &lt;a href="https://reactnative.dev" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
React Native
&lt;/a>
. Both of them are great tools to develop cross platform apps but there are some differences between them and different scenarios where you should choose one over the other we&amp;rsquo;ll have a look at both of them and then we&amp;rsquo;ll talk about which one is the best for you in this article.&lt;/p>
&lt;h3 id="flutterhttpsflutterdev">&lt;a href="https://flutter.dev" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
Flutter
&lt;/a>
&lt;/h3>
&lt;p>&lt;img src="https://vineelsai.com/images/2021/posts/flutter-vs-react-native/flutter.png" alt="Flutter" />&lt;/p>
&lt;p>&lt;a href="https://flutter.dev" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
Flutter
&lt;/a>
is an open source framework developed by Google for building applications for Android, IOS, Linux, Mac, Windows, and Web. &lt;a href="https://flutter.dev" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
Flutter
&lt;/a>
uses Dart as its programming language. Dart is a relatively new language and it is an object-oriented, class-based, garbage-collected language with C language like syntax. &lt;a href="https://flutter.dev" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
Flutter
&lt;/a>
uses a custom graphics library called Skia to render the app’s UI, it renders the screen pixel by pixel so you get a lot of control over the look and feel of the app and also is very efficient and fast. The views in &lt;a href="https://flutter.dev" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
Flutter
&lt;/a>
are called widgets and you can create your own widgets or download from the internet and use them in your app.&lt;/p>
&lt;h4 id="who-are-using-flutterhttpsflutterdev">Who are using &lt;a href="https://flutter.dev" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
Flutter
&lt;/a>
&lt;/h4>
&lt;p>Before you choose a platform you might want to know who else is using them to get an overall idea.&lt;/p>
&lt;h5 id="google">Google&lt;/h5>
&lt;ul>
&lt;li>Google Pay&lt;/li>
&lt;li>Stadia&lt;/li>
&lt;li>Google Ads&lt;/li>
&lt;/ul>
&lt;h5 id="other">Other&lt;/h5>
&lt;ul>
&lt;li>BMW&lt;/li>
&lt;li>ByteDance&lt;/li>
&lt;li>eBay&lt;/li>
&lt;li>Dream11&lt;/li>
&lt;li>Toyota&lt;/li>
&lt;/ul>
&lt;h4 id="pros-of-flutterhttpsflutterdev">Pros of &lt;a href="https://flutter.dev" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
Flutter
&lt;/a>
&lt;/h4>
&lt;ul>
&lt;li>
&lt;p>Has many 1st party widgets and libraries compared to &lt;a href="https://reactnative.dev" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
React Native
&lt;/a>
.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Less code to write compared to &lt;a href="https://reactnative.dev" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
React Native
&lt;/a>
.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Looks the same on all platforms.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h4 id="cons-of-native-development">Cons of Native Development&lt;/h4>
&lt;ul>
&lt;li>
&lt;p>Uses Dart as its programming language which is a new language and doesn&amp;rsquo;t have a lot of use other than for &lt;a href="https://flutter.dev" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
Flutter
&lt;/a>
.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Lack of enough 3rd party widgets and libraries.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Small community compared to &lt;a href="https://reactnative.dev" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
React Native
&lt;/a>
.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h3 id="react-nativehttpsreactnativedev">&lt;a href="https://reactnative.dev" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
React Native
&lt;/a>
&lt;/h3>
&lt;p>&lt;img src="https://vineelsai.com/images/2021/posts/flutter-vs-react-native/react.png" alt="React" />&lt;/p>
&lt;p>&lt;a href="https://reactnative.dev" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
React Native
&lt;/a>
is an open source framework developed by Facebook it uses JavaScript as its programming language and is based on react framework. The working principles of &lt;a href="https://reactnative.dev" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
React Native
&lt;/a>
are virtually identical to React except that &lt;a href="https://reactnative.dev" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
React Native
&lt;/a>
does not manipulate the DOM via the Virtual DOM. It runs in a background process directly on the end device and communicates with the native platform via serialized data over an asynchronous and batched bridge. React components wrap existing native code and interact with native APIs via React’s declarative UI paradigm and JavaScript.While &lt;a href="https://reactnative.dev" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
React Native
&lt;/a>
styling has a similar syntax to CSS, it does not use HTML or CSS. Instead, messages from the JavaScript thread are used to manipulate native views.&lt;/p>
&lt;h4 id="who-are-using-react-nativehttpsreactnativedev">Who are using &lt;a href="https://reactnative.dev" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
React Native
&lt;/a>
&lt;/h4>
&lt;h5 id="meta">Meta&lt;/h5>
&lt;ul>
&lt;li>Facebook&lt;/li>
&lt;li>Facebook Ads&lt;/li>
&lt;li>Instagram&lt;/li>
&lt;/ul>
&lt;h5 id="microsoft-sourcehttpsappfigurescomresourcesinsightsmicrosoft-goes-all-in-on-react-native">Microsoft &lt;a href="https://appfigures.com/resources/insights/microsoft-goes-all-in-on-react-native" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
(Source)
&lt;/a>
&lt;/h5>
&lt;ul>
&lt;li>Microsoft Edge&lt;/li>
&lt;li>Microsoft Excel&lt;/li>
&lt;li>Microsoft OneDrive&lt;/li>
&lt;li>Microsoft Outlook&lt;/li>
&lt;li>Microsoft SharePoint&lt;/li>
&lt;li>Microsoft Teams&lt;/li>
&lt;li>Microsoft Word&lt;/li>
&lt;li>Skype&lt;/li>
&lt;li>Xbox&lt;/li>
&lt;/ul>
&lt;h5 id="other-companies">Other Companies&lt;/h5>
&lt;ul>
&lt;li>Walmart&lt;/li>
&lt;li>Bloomberg&lt;/li>
&lt;li>Coinbase Pro&lt;/li>
&lt;li>Discord&lt;/li>
&lt;li>Myntra&lt;/li>
&lt;/ul>
&lt;h4 id="pros-of-react-nativehttpsreactnativedev">Pros of &lt;a href="https://reactnative.dev" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
React Native
&lt;/a>
&lt;/h4>
&lt;ul>
&lt;li>
&lt;p>Uses Javascript and is based on react framework so it is very familiar to developers who worked with web development.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Huge 3rd party libraries support.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Looks native on all platforms.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h4 id="cons-of-react-nativehttpsreactnativedev">Cons of &lt;a href="https://reactnative.dev" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
React Native
&lt;/a>
&lt;/h4>
&lt;ul>
&lt;li>
&lt;p>Very few inbuilt components.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Poor Memory Management.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h3 id="conclusion">Conclusion&lt;/h3>
&lt;p>&lt;a href="https://reactnative.dev" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
React Native
&lt;/a>
has released before &lt;a href="https://flutter.dev" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
Flutter
&lt;/a>
so it has the advantage of having more time to develop and also has a bigger community compared to &lt;a href="https://flutter.dev" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
Flutter
&lt;/a>
but the &lt;a href="https://flutter.dev" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
Flutter
&lt;/a>
community is growing faster every day and is getting more and more popular among startups and multi billion dollar companies. If your app/company wants to build an app fast and want to release it to the public as soon as possible then you would be better of with &lt;a href="https://flutter.dev" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
Flutter
&lt;/a>
. But if you want to build a complex app witch looks native no matter the platform and you don&amp;rsquo;t mind using lots of 3rd party libraries then you should use &lt;a href="https://reactnative.dev" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
React Native
&lt;/a>
.&lt;/p></content:encoded><dc:creator>Vineel Sai</dc:creator><media:content url="https://vineelsai.com//images/2021/thumbnails/flutter-vs-react-native.png" medium="image"><media:title type="html">featured image</media:title></media:content><category>Mobile</category><category>Android</category><category>IOS</category><category>Flutter</category><category>React Native</category><category>Mobile</category></item><item><title>Native vs Cross-Platform Mobile Development in 2022</title><link>https://vineelsai.com/posts/native-vs-cross-platform-mobile-development/</link><pubDate>Thu, 25 Nov 2021 15:00:00 +0000</pubDate><author>mail@vineelsai.com (Vineel Sai)</author><atom:modified>Thu, 25 Nov 2021 15:00:00 +0000</atom:modified><guid>https://vineelsai.com/posts/native-vs-cross-platform-mobile-development/</guid><description>Before we talk about which way is the best or to be precise which is better for you let&amp;rsquo;s talk about what is Native and Cross-Platform App development.</description><content:encoded>&lt;p>&lt;img src="https://vineelsai.com/images/2021/posts/native-vs-cross-platform-mobile-development/development.jpg" alt="Development" />&lt;/p>
&lt;p>Before we talk about which way is the best or to be precise which is better for you let&amp;rsquo;s talk about what is Native and Cross-Platform App development.&lt;/p>
&lt;h3 id="native-development">Native Development&lt;/h3>
&lt;p>Native Development refers to building applications specific to a platform by using platform-specific tools &amp;amp; programming languages. When it comes to mobile development we have mainly two platforms Android &amp;amp; IOS, for android we have Java &amp;amp; &lt;a href="https://kotlinlang.org" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
Kotlin
&lt;/a>
as the primary programming languages, and for IOS we have Objective-C &amp;amp; Swift.&lt;/p>
&lt;h4 id="pros-of-native-development">Pros of Native Development&lt;/h4>
&lt;ul>
&lt;li>
&lt;p>Since these technologies are developed by the same companies that developed the OS you will get better compatibility and performance overall.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Support is another big thing since these tools exist as long as the operating systems exist there will be lots of information and how-to guides available for the technology which is a lifesaver exceptionally if you are a beginner.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Control over the whole application flow which process has to be executed in which thread and all the granular control over the app.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h4 id="cons-of-native-development">Cons of Native Development&lt;/h4>
&lt;ul>
&lt;li>
&lt;p>The main con of native app is that it&amp;rsquo;s very costly and time-consuming to maintain different apps for different platforms.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Keeping the apps look &amp;amp; feel the same across the platforms can also be tricky if you are working on a really big project with multiple teams.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h3 id="cross-platform-development">Cross-Platform Development&lt;/h3>
&lt;ul>
&lt;li>Cross-Platform development is making applications that work on both Android &amp;amp; IOS. For cross-platform development we have technologies like &lt;a href="https://flutter.dev" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
Flutter
&lt;/a>
, &lt;a href="https://reactnative.dev" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
React Native
&lt;/a>
, and &lt;a href="https://dotnet.microsoft.com/apps/xamarin" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
Xamarin
&lt;/a>
.&lt;/li>
&lt;/ul>
&lt;h4 id="pros-of-cross-platform-development">Pros of Cross-Platform Development&lt;/h4>
&lt;ul>
&lt;li>
&lt;p>It&amp;rsquo;s very cost-effective to maintain and develop a cross-platform as you don&amp;rsquo;t have to spend money on developing and maintaining two different code bases for two different teams.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>The development of the product will be a lot faster if there is a single codebase.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h4 id="cons-of-cross-platform-development">Cons of Cross-Platform Development&lt;/h4>
&lt;ul>
&lt;li>
&lt;p>Cross-Platform apps are generally slower than Native apps even though the difference is not prominently visible unless you do some performance benchmarks there certainly is some difference in performance.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Limited Functionality is another major disadvantage of cross-platform apps as there are many limitations when it comes to accessing device hardware like Bluetooth, GPS, and other device sensors.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h3 id="conclusion">Conclusion&lt;/h3>
&lt;p>Well, there is no specific answer to which type of development you should choose it mainly depends on your application and your target audiences. If your app is mainly based on using API calls and displaying that data to users or if your app doesn&amp;rsquo;t do much processing of data locally it just has to work well with the backend then cross-platform is for you since you want your app to look and behave the same across the platforms. But if your app has anything to do with different sensors then native development is the way to go.&lt;/p></content:encoded><dc:creator>Vineel Sai</dc:creator><media:content url="https://vineelsai.com//images/2021/thumbnails/native-vs-cross-platform-mobile-development.png" medium="image"><media:title type="html">featured image</media:title></media:content><category>Mobile</category><category>Android</category><category>IOS</category><category>Flutter</category><category>React Native</category><category>Mobile</category></item><item><title>Recycler View in Kotlin</title><link>https://vineelsai.com/posts/recycler-view-kotlin-android/</link><pubDate>Thu, 25 Nov 2021 13:00:00 +0000</pubDate><author>mail@vineelsai.com (Vineel Sai)</author><atom:modified>Thu, 25 Nov 2021 13:00:00 +0000</atom:modified><guid>https://vineelsai.com/posts/recycler-view-kotlin-android/</guid><description>To create a recycler view in kotlin you need three classes, an Adapter class to set data to items in the recycler view a data class to give your data a structure, and an activity or fragment class to display the view.</description><content:encoded>&lt;p>To create a recycler view in kotlin you need three classes, an Adapter class to set data to items in the recycler view a data class to give your data a structure, and an activity or fragment class to display the view.&lt;/p>
&lt;h3 id="add-dependencies">Add dependencies&lt;/h3>
&lt;ul>
&lt;li>Add the following dependencies to your build.gradle file&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-gradle" data-lang="gradle">&lt;span class="line">&lt;span class="cl">&lt;span class="n">implementation&lt;/span> &lt;span class="s1">&amp;#39;androidx.recyclerview:recyclerview:1.1.0&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">implementation&lt;/span> &lt;span class="s1">&amp;#39;androidx.cardview:cardview:1.0.0&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h3 id="write-code">Write Code&lt;/h3>
&lt;ul>
&lt;li>Create a data class, you can pass the variables you want to access later as parameters in the data class&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-kotlin" data-lang="kotlin">&lt;span class="line">&lt;span class="cl">&lt;span class="k">data&lt;/span> &lt;span class="k">class&lt;/span> &lt;span class="nc">Item&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="k">val&lt;/span> &lt;span class="py">text&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">String&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;ul>
&lt;li>Create an adapter class&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-kotlin" data-lang="kotlin">&lt;span class="line">&lt;span class="cl">&lt;span class="k">class&lt;/span> &lt;span class="nc">Adapter&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="k">private&lt;/span> &lt;span class="k">val&lt;/span> &lt;span class="py">List&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">List&lt;/span>&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="n">Item&lt;/span>&lt;span class="p">&amp;gt;)&lt;/span> &lt;span class="p">:&lt;/span> &lt;span class="nc">RecyclerView&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Adapter&lt;/span>&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nc">Adapter&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">ViewHolder&lt;/span>&lt;span class="p">&amp;gt;()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">class&lt;/span> &lt;span class="nc">ViewHolder&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">view&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">View&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">:&lt;/span> &lt;span class="nc">RecyclerView&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">ViewHolder&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">view&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">val&lt;/span> &lt;span class="py">text&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">TextView&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">view&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">findViewById&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nc">R&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">id&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">text&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">init&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// You can add onClick Listeners here
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">override&lt;/span> &lt;span class="k">fun&lt;/span> &lt;span class="nf">onCreateViewHolder&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">parent&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">ViewGroup&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">viewType&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">Int&lt;/span>&lt;span class="p">):&lt;/span> &lt;span class="n">ViewHolder&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">val&lt;/span> &lt;span class="py">item&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="nc">LayoutInflater&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">from&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">parent&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">context&lt;/span>&lt;span class="p">).&lt;/span>&lt;span class="n">inflate&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nc">R&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">layout&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">item&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">parent&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="k">false&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="n">ViewHolder&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">item&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">override&lt;/span> &lt;span class="k">fun&lt;/span> &lt;span class="nf">onBindViewHolder&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">holder&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">ViewHolder&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">position&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">Int&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">val&lt;/span> &lt;span class="py">element&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">List&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="n">position&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">holder&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">text&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">text&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">element&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">text&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">override&lt;/span> &lt;span class="k">fun&lt;/span> &lt;span class="nf">getItemCount&lt;/span>&lt;span class="p">():&lt;/span> &lt;span class="n">Int&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="nc">List&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">size&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;ul>
&lt;li>Create an Activity where you want to display here I am feeding the view with dummy data you can add whatever data you want&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-kotlin" data-lang="kotlin">&lt;span class="line">&lt;span class="cl">&lt;span class="k">class&lt;/span> &lt;span class="nc">MainActivity&lt;/span> &lt;span class="p">:&lt;/span> &lt;span class="n">AppCompatActivity&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">override&lt;/span> &lt;span class="k">fun&lt;/span> &lt;span class="nf">onCreate&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">savedInstanceState&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">Bundle&lt;/span>&lt;span class="p">?)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">super&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">onCreate&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">savedInstanceState&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">setContentView&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nc">R&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">layout&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">activity_main&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">view&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">adapter&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">Adapter&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">generateDummyList&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="m">1000&lt;/span>&lt;span class="p">))&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">view&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">layoutManager&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">LinearLayoutManager&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="k">this&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">view&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">hasFixedSize&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">private&lt;/span> &lt;span class="k">fun&lt;/span> &lt;span class="nf">generateDummyList&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">size&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">Int&lt;/span>&lt;span class="p">):&lt;/span> &lt;span class="n">List&lt;/span>&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="n">Item&lt;/span>&lt;span class="p">&amp;gt;&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">val&lt;/span> &lt;span class="py">list&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">ArrayList&lt;/span>&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="n">Item&lt;/span>&lt;span class="p">&amp;gt;()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">for&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">i&lt;/span> &lt;span class="k">in&lt;/span> &lt;span class="m">0&lt;/span> &lt;span class="n">until&lt;/span> &lt;span class="n">size&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">val&lt;/span> &lt;span class="py">item&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">Item&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;Item &lt;/span>&lt;span class="si">$i&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">list&lt;/span> &lt;span class="o">+=&lt;/span> &lt;span class="n">item&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="n">list&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;strong>The entire code used is in the GitHub repo&lt;/strong> — &lt;a href="https://github.com/vineelsai26/Recycler-View-Kotlin" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
https://github.com/vineelsai26/Recycler-View-Kotlin
&lt;/a>
&lt;/p>
&lt;p>&lt;strong>Happy Coding!!!&lt;/strong>&lt;/p></content:encoded><dc:creator>Vineel Sai</dc:creator><media:content url="https://vineelsai.com//images/2021/thumbnails/recycler-view-kotlin.png" medium="image"><media:title type="html">featured image</media:title></media:content><category>Android</category><category>Kotlin</category><category>RecyclerView</category><category>Android</category></item><item><title>Install Android Studio on Windows</title><link>https://vineelsai.com/posts/install-android-studio-on-windows/</link><pubDate>Thu, 25 Nov 2021 12:30:00 +0000</pubDate><author>mail@vineelsai.com (Vineel Sai)</author><atom:modified>Thu, 25 Nov 2021 12:30:00 +0000</atom:modified><guid>https://vineelsai.com/posts/install-android-studio-on-windows/</guid><description>Download Android Studio
Go to https://developer.android.com/studio
Click on the Download Android Studio
button and accept the license and agreement and click Download Button.</description><content:encoded>&lt;h3 id="download-android-studiohttpsdeveloperandroidcomstudio">Download &lt;a href="https://developer.android.com/studio" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
Android Studio
&lt;/a>
&lt;/h3>
&lt;ul>
&lt;li>Go to &lt;a href="https://developer.android.com/studio" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
https://developer.android.com/studio
&lt;/a>
&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="https://vineelsai.com/images/2021/posts/install-android-studio-on-windows/android-studio-website.png" alt="Android Studio Website" />&lt;/p>
&lt;ul>
&lt;li>Click on the Download &lt;a href="https://developer.android.com/studio" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
Android Studio
&lt;/a>
button and accept the license and agreement and click Download Button.&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="https://vineelsai.com/images/2021/posts/install-android-studio-on-windows/download-page.png" alt="Download Button" />&lt;/p>
&lt;h3 id="install-android-studiohttpsdeveloperandroidcomstudio">Install &lt;a href="https://developer.android.com/studio" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
Android Studio
&lt;/a>
&lt;/h3>
&lt;ul>
&lt;li>Double click on the downloaded .exe file.&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="https://vineelsai.com/images/2021/posts/install-android-studio-on-windows/installer-dialog.png" alt="Installer Dialog" />&lt;/p>
&lt;ul>
&lt;li>
&lt;p>Install the program as you would normally.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Click Finish to close the installer.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="https://vineelsai.com/images/2021/posts/install-android-studio-on-windows/installer-dialog-finish.png" alt="Installer Dialog Finish" />&lt;/p>
&lt;ul>
&lt;li>
&lt;p>Now the &lt;a href="https://developer.android.com/studio" style="text-decoration: none; color: darkgreen; font-weight: bold;" target="_blank" >
Android Studio
&lt;/a>
will start automatically.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Choose Do not import settings, then click on OK.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="https://vineelsai.com/images/2021/posts/install-android-studio-on-windows/config-screen.png" alt="Config Screen" />&lt;/p>
&lt;ul>
&lt;li>Click Next.&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="https://vineelsai.com/images/2021/posts/install-android-studio-on-windows/welcome-android-studio.png" alt="Config Screen" />&lt;/p>
&lt;ul>
&lt;li>Select standard unless you want to change some configurations and click Next.&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="https://vineelsai.com/images/2021/posts/install-android-studio-on-windows/install-type-android-studio.png" alt="Install Type" />&lt;/p>
&lt;ul>
&lt;li>Choose a theme and click Next.&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="https://vineelsai.com/images/2021/posts/install-android-studio-on-windows/select-theme-android-studio.png" alt="Select Theme" />&lt;/p>
&lt;ul>
&lt;li>Choose SDK location and click Next.&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="https://vineelsai.com/images/2021/posts/install-android-studio-on-windows/sdk-setup.png" alt="SDK Setup" />&lt;/p>
&lt;ul>
&lt;li>Confirm settings and click Finish.&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="https://vineelsai.com/images/2021/posts/install-android-studio-on-windows/verify-settings.png" alt="Verify Settings" />&lt;/p>
&lt;ul>
&lt;li>Click Finish after the SDK download is complete.&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="https://vineelsai.com/images/2021/posts/install-android-studio-on-windows/sdk-download-page.png" alt="SDK download page" />&lt;/p>
&lt;ul>
&lt;li>Now you are good to go and make your feet wet on your journey to Android Development.&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="https://vineelsai.com/images/2021/posts/install-android-studio-on-windows/android-studio.png" alt="Android Studio" />&lt;/p></content:encoded><dc:creator>Vineel Sai</dc:creator><media:content url="https://vineelsai.com//images/2021/thumbnails/android-studio.png" medium="image"><media:title type="html">featured image</media:title></media:content><category>Android Studio</category><category>Android Studio</category></item></channel></rss>