<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Arunava Ch.</title>
    <description>The latest articles on Forem by Arunava Ch. (@arunavaskar).</description>
    <link>https://forem.com/arunavaskar</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F143155%2F375cca25-ca0c-40d0-86e6-543342037c09.jpeg</url>
      <title>Forem: Arunava Ch.</title>
      <link>https://forem.com/arunavaskar</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/arunavaskar"/>
    <language>en</language>
    <item>
      <title>DOM for Beginners: 6 minutes tour</title>
      <dc:creator>Arunava Ch.</dc:creator>
      <pubDate>Thu, 10 Dec 2020 18:58:52 +0000</pubDate>
      <link>https://forem.com/arunavaskar/dom-for-beginners-6-minutes-tour-57b5</link>
      <guid>https://forem.com/arunavaskar/dom-for-beginners-6-minutes-tour-57b5</guid>
      <description>&lt;p&gt;🛎️*I am writing this article to help my brother, Avi with his journey in web development. &lt;br&gt;
You can find him on &lt;a href="https://twitter.com/imavilash"&gt;Twitter&lt;/a&gt; and on Minecraft @avipopo(he is a damn consistent Minecraft player 😍). *&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Representation&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;DOM📑🪨🧩&lt;/li&gt;
&lt;li&gt;HTML🌐&lt;/li&gt;
&lt;li&gt;CSS🎽&lt;/li&gt;
&lt;li&gt;JS/JavaScript🍵📃&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What is DOM📑🪨🧩?
&lt;/h2&gt;

&lt;p&gt;The Document Object Model(DOM) creates a structure or a view of the web page so that other scripts or programming languages can connect to the page for different applications. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;There are 3 main aspects of developing a website.&lt;/strong&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  HTML🌐
&lt;/h2&gt;

&lt;p&gt;HTML is the language of the web and has a specific set of rules and syntax. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  HTML stands for HyperText Markup Language&lt;/li&gt;
&lt;li&gt;  HTML is the standard markup language for creating Web pages&lt;/li&gt;
&lt;li&gt;  HTML describes the structure of a Web page&lt;/li&gt;
&lt;li&gt;  HTML consists of a series of elements&lt;/li&gt;
&lt;li&gt;  HTML elements tell the browser how to display the content&lt;/li&gt;
&lt;li&gt;  HTML elements label pieces of content such as "this is a heading", "this is a paragraph", "this is a link", etc.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  CSS🎽
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;CSS&lt;/strong&gt;  stands for  &lt;strong&gt;C&lt;/strong&gt;ascading  &lt;strong&gt;S&lt;/strong&gt;tyle  &lt;strong&gt;S&lt;/strong&gt;heets&lt;/li&gt;
&lt;li&gt;  CSS describes  &lt;strong&gt;how HTML elements are to be displayed on screen, paper, or in other media&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;  CSS  &lt;strong&gt;saves a lot of work&lt;/strong&gt;. It can control the layout of multiple web pages all at once&lt;/li&gt;
&lt;li&gt;  External style sheets are stored in  &lt;strong&gt;CSS files&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  JS🍵📃
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;JavaScript is the  &lt;strong&gt;Programming Language&lt;/strong&gt;  for the Web.&lt;/li&gt;
&lt;li&gt;JavaScript can update and change both  &lt;strong&gt;HTML&lt;/strong&gt;  and  &lt;strong&gt;CSS.&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;JavaScript can  &lt;strong&gt;calculate&lt;/strong&gt;,  &lt;strong&gt;manipulate&lt;/strong&gt;  and  &lt;strong&gt;validate&lt;/strong&gt;  data.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How does JavaScript🍵📃, a programming language interact with HTML🌐, a markup language😕?
&lt;/h2&gt;

&lt;p&gt;As HTML is not a programming language, the interaction between HTML and JavaScript is done via the process called DOM. &lt;/p&gt;

&lt;p&gt;DOM refers to the Document Object Model. &lt;/p&gt;

&lt;h2&gt;
  
  
  Why do you need to implement Javascript🍵📃 on your website😖?
&lt;/h2&gt;

&lt;p&gt;Because there are some very important functions of a properly working website that can only exist if JavaScript is implemented properly.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Example&lt;/em&gt;😮:-&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Animation💨🔜 after you click a button &lt;/li&gt;
&lt;li&gt;Something happened(event🪃) after you clicked a button&lt;/li&gt;
&lt;li&gt;Creating🗃️ new forms or elements on a static page based on user's inputs without reloading the site on client's device &lt;/li&gt;
&lt;li&gt;Gathering📂 form input data for further usage. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;etc. &lt;/p&gt;

&lt;p&gt;These are all the common things expected from a well-made website. &lt;/p&gt;

&lt;p&gt;You need JavaScript for that. &lt;/p&gt;

&lt;h2&gt;
  
  
  How does the browser convert an HTML🌐 document into a DOM📑🪨🧩?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="http://www.mediafire.com/view/bn109r8oi2e8iwq"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--CDn77Dv_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.mediafire.com/convkey/389a/bn109r8oi2e8iwq6g.jpg" alt="Simple, Free Image and File Hosting at MediaFire"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As you can see, here is an example of how the HTML document looks like while running in a web browser. &lt;/p&gt;

&lt;p&gt;In the picture above you can see on the left is the browser view of the HTML document and on the right side is the actual code. &lt;/p&gt;

&lt;p&gt;You can see that &lt;code&gt;h1&lt;/code&gt; tag is inside the body tag which helps the browser display the heading in the format we wanted. This is how other tags in this HTML document works. &lt;/p&gt;

&lt;p&gt;Tags are defining how there inner elements or texts should be displayed in the browser.  Differences in the hierarchy of different tags are used for a different way of displaying them on the browser. &lt;/p&gt;

&lt;p&gt;Now when the HTML document is loaded on the browser, another representation of that document is created by the browser known as DOM. &lt;br&gt;
&lt;a href="http://www.mediafire.com/view/or505apld22fple" id="DOM_img"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--l88Xw0NF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.mediafire.com/convkey/541f/or505apld22fple6g.jpg" alt="Simple, Free Image and File Hosting at MediaFire"&gt; &lt;/a&gt;&lt;br&gt;
 &lt;em&gt;Actual representation of HTML to DOM conversion&lt;/em&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  In the image below you can see a very basic HTML🌐 document.
&lt;/h2&gt;

&lt;p&gt;&lt;a href="http://www.mediafire.com/view/lj6f81h0v7z2mep"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ydpMV-uM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.mediafire.com/convkey/e01f/lj6f81h0v7z2mep6g.jpg" alt="Simple, Free Image and File Hosting at MediaFire"&gt;&lt;/a&gt;&lt;br&gt;
There is an &lt;code&gt;HTML&lt;/code&gt; tag up there. An indented &lt;code&gt;head&lt;/code&gt; tag. That &lt;code&gt;head&lt;/code&gt; tag has a &lt;code&gt;title&lt;/code&gt; tag in it. Again in that same way, &lt;code&gt;HTML&lt;/code&gt; tag has a &lt;code&gt;body&lt;/code&gt; tag in it and the &lt;code&gt;body&lt;/code&gt; tag also has some other tags inside of it. The pattern here is the hierarchy of different tags based on how they are used. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The concept DOM📑🪨🧩 uses this hierarchy of tags to create the model for JavaScript's🍵📃 integration. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;D&lt;/strong&gt;ocument📃 in DOM refers to the HTML document that we write.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;O&lt;/strong&gt;bject🪨 in DOM is the tags in the HTML document that we write.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Tags like &lt;code&gt;head&lt;/code&gt;, &lt;code&gt;HTML&lt;/code&gt; and &lt;code&gt;title&lt;/code&gt; tag are all converted into objects by the browser. Because JavaScript🍵📃 doesn't understand those tags. JavaScript🍵📃 understands objects. JavaScrip🍵📃t can work with objects. So after the browser converts the tags into objects, using JavaScript🍵📃 we can easily manipulate the tag, there events and the tag itself.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.mediafire.com/view/mgxv1hdt1nmii0q"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Gh5K9GBu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.mediafire.com/convkey/972e/mgxv1hdt1nmii0q6g.jpg" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;M&lt;/strong&gt;odel🧩 is created based on the hierarchy of tags been implemented in the HTML document that we write.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Tags are converted into objects in the DOM tree on the right-hand side. those objects are placed based on the tag's hierarchy in the HTML document. &lt;/p&gt;

&lt;p&gt;The HTML document you write is not different than it's DOM version. DOM is a different representation of the same HTML document you made. &lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.mediafire.com/view/gabq4s7lev8m18s"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--XCQwx4k2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.mediafire.com/convkey/b33d/gabq4s7lev8m18s6g.jpg" alt="Simple, Free Image and File Hosting at MediaFire"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For example in the image above, you can see on the left side that there is a &lt;code&gt;title&lt;/code&gt; tag with a title name inside of it. &lt;/p&gt;

&lt;p&gt;Normally to change that tag you will need to go back to source code and change it manually from there. But if we want to utilize the DOM representation of the HTML document, we can access the corresponding object of the title tag in the DOM using javascript and then change the inner content of the tag using a function. &lt;/p&gt;

&lt;p&gt;Similarly, you can change colour, add colour and add a background image to any element using the objects in this DOM.&lt;/p&gt;

&lt;h2&gt;
  
  
  How can JavaScript🍵📃 use these objects🪨 in the Document Object Model📑🪨🧩?
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;So the way it works is that JavaScript🍵📃 looks at this document in terms of nodes▪️. So the concept of nodes▪️ is used over here. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="http://www.mediafire.com/view/or505apld22fple"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--l88Xw0NF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.mediafire.com/convkey/541f/or505apld22fple6g.jpg" alt="Simple, Free Image and File Hosting at MediaFire"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The yellow💛 text is the element node, the blue💙 one is the inner &lt;code&gt;HTML&lt;/code&gt; or &lt;code&gt;text&lt;/code&gt; node and the green💚 one is the &lt;code&gt;attribute&lt;/code&gt; node. There are many other nodes but these three are the most basics and the most common ones. &lt;/p&gt;

&lt;p&gt;Again here you can see that a little bit of hierarchy is going on here. The &lt;code&gt;element&lt;/code&gt; tag is at the top and then there is in the second level, the attributes inside another nested &lt;code&gt;div element&lt;/code&gt; tag. "My title" is inside a different nested tag. These &lt;code&gt;elements&lt;/code&gt; are all objects in the DOM. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;For those who don't know what an object🪨 is, the object🪨 is something which has an attribute and a function that can operate on that attribute. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Javascript uses methods on these methods to access these nodes for manipulation. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;We can refer DOM as a JS view too.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Fundamental data types📊
&lt;/h2&gt;

&lt;p&gt;As DOM is a model, it has it's own data types and various objects.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Document
The document is the root object itself that needs to be accessed first to access other objects inside of it. &lt;/li&gt;
&lt;li&gt;Node
Every object inside a document can be a node. In an HTML document, a node can be an &lt;code&gt;element&lt;/code&gt; tag, an attribute or a simple text node. &lt;/li&gt;
&lt;li&gt;Nodelist
A novelist is an array of nodes. This kind of nodes is returned bu the method &lt;code&gt;document.querySelectorAll()&lt;/code&gt;. As this novelist is an array, items in it are accessed by indexing. &lt;/li&gt;
&lt;li&gt;Attributes
A returned Attribute node is an object reference that exposes a special interface for attributes. Generally, an Attribute is referred to as simply an attribute we know. Attributes like id and classes are the identifiers and then there are styling that is inline CSS attributes. &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Core interfaces in DOM📑🪨🧩
&lt;/h2&gt;

&lt;p&gt;This is a small list of common APIs used by JavaScript🍵📃 and XML scripts📃. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;code&gt;document.querySelector(selector)&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;code&gt;document.querySelectorAll(name)&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;code&gt;document.createElement(name)&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;code&gt;parentNode.appendChild(node)&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;code&gt;element.innerHTML&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;code&gt;element.style.left&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;code&gt;element.setAttribute()&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;code&gt;element.getAttribute()&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;code&gt;element.addEventListener()&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;code&gt;window.content&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;code&gt;window.onload&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;code&gt;window.scrollTo()&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Obsolete☠️ DOM📑🪨🧩 interfaces
&lt;/h2&gt;

&lt;p&gt;The definitions and explanation in this article are highly simplified for the sake of beginner's ease of understanding. The following interfaces are considered as obsolete. This list will be updated based on any future changes. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;code&gt;DocumentTouch&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;code&gt;DOMConfiguration&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;code&gt;DOMErrorHandler&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;code&gt;DOMImplementationList&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;code&gt;DOMImplementationRegistry&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;code&gt;DOMImplementationSource&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;code&gt;DOMLocator&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;code&gt;DOMObject&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;code&gt;DOMSettableTokenList&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;code&gt;DOMUserData&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;code&gt;ElementTraversal&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;code&gt;Entity&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;code&gt;EntityReference&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;code&gt;NameList&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;code&gt;Notation&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;code&gt;TypeInfo&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;code&gt;UserDataHandler&lt;/code&gt; Actual representation of HTML to DOM conversion&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion✊: DOM📑🪨🧩 is not a seperate document, rather it's a representation of what you wrote in that &lt;code&gt;.html&lt;/code&gt; format
&lt;/h2&gt;

&lt;p&gt;Inspite of being a huge topic, you don't need to learn a hole lot of things about this concept. To use this DOM, you need to utilize some common API methods over those objects in the models. These APIs are common to XML and JavaScript. &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Learn the concept of DOM&lt;/li&gt;
&lt;li&gt;Learn how to use JavaScript
And that's it. That's a you need.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I will be exploring the methods more deeply in another writing. I will link to the article &lt;a href=""&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Thank you🙇‍♂️🙏
&lt;/h2&gt;

&lt;p&gt;I am soo happy☺️ that you read all of it and now you are here. We can connect on &lt;a href="https://www.facebook.com/arunavaskar/"&gt;Facebook&lt;/a&gt;☹️📘 and &lt;a href="https://twitter.com/arunavaskar"&gt;Twitter&lt;/a&gt;🐦. &lt;br&gt;
You can check out my profile for more of my writings. &lt;/p&gt;

</description>
      <category>codenewbie</category>
      <category>html</category>
      <category>webdev</category>
      <category>beginners</category>
    </item>
    <item>
      <title>HTTP🌐 Methods🔨: GET 📖 and POST 📝 in 5 Minutes</title>
      <dc:creator>Arunava Ch.</dc:creator>
      <pubDate>Sun, 29 Nov 2020 12:06:28 +0000</pubDate>
      <link>https://forem.com/arunavaskar/http-methods-get-and-post-in-9-minutes-4f9g</link>
      <guid>https://forem.com/arunavaskar/http-methods-get-and-post-in-9-minutes-4f9g</guid>
      <description>&lt;p&gt;🚧&lt;strong&gt;&lt;em&gt;I am writing this because I, myself have been really confused about how GET, POST methods works at all. This article is mainly an explanation of what I have learnt so far. This article solidifies my knowledge. If anyway this article turns out to be helpful to you, please let me know in the comment section below. &lt;br&gt;
Thank you!&lt;/em&gt;&lt;/strong&gt;🚧&lt;/p&gt;
&lt;h3&gt;
  
  
  Contents:📃
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;What is HTTP&lt;/li&gt;
&lt;li&gt;HTTP Methods&lt;/li&gt;
&lt;li&gt;Small talk about CRUD&lt;/li&gt;
&lt;li&gt;What is:

&lt;ul&gt;
&lt;li&gt;GET&lt;/li&gt;
&lt;li&gt;POST&lt;/li&gt;
&lt;li&gt;PUT&lt;/li&gt;
&lt;li&gt;DELETE&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Safe methods and Unsafe methods&lt;/li&gt;
&lt;li&gt;Idempotent methods&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;
  
  
  &lt;a id="HTTP"&gt;What is HTTP?🌐&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;HTTP&lt;/code&gt; means Hypertext Transfer Protocol. &lt;code&gt;HTTP&lt;/code&gt; is a protocol used to fetch resources like &lt;code&gt;HTML&lt;/code&gt; documents. This client-server protocol is the foundation of any data exchange on the Web. Using this protocol a complete document is reconstructed by fetching sub-documents like images, texts, videos and scripts. &lt;/p&gt;

&lt;p&gt;Clients and servers usually communicate using messages and these messages are named depending on what action they are performing. If the message was sent from the client's side to the server then it is called a request and if it is received from the server-side on the client-side, then it is called a response. &lt;/p&gt;

&lt;p&gt;⚠️&lt;em&gt;Spoiler alert, &lt;code&gt;GET&lt;/code&gt; and &lt;code&gt;POST&lt;/code&gt; are both related to this request and response things.&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;a id="HTTP_methods"&gt;HTTP🌐 Methods🔨&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;HTTP methods&lt;/code&gt; or to be more precise &lt;code&gt;HTTP request methods&lt;/code&gt; are a defined set of request method used to indicate the desired action to be performed on a given resource. &lt;/p&gt;

&lt;p&gt;It doesn't matter if the name of the methods are specifically noun or not, but sometimes these methods are also referred to as &lt;code&gt;HTTP verbs&lt;/code&gt;(as they are performing an action from the client's side). &lt;/p&gt;

&lt;p&gt;The most common methods are as follows:&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;* GET
* POST
* PUT
* DELETE
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h4&gt;
  
  
  &lt;a id="crud"&gt;Are you aware of CRUD: it's related 🤔&lt;/a&gt;
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;C&lt;/strong&gt;reate &lt;strong&gt;R&lt;/strong&gt;ead &lt;strong&gt;U&lt;/strong&gt;pdate &lt;strong&gt;D&lt;/strong&gt;elete&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CRUD&lt;/strong&gt; is essentially refereed to as a structural reference for building a service or an application. &lt;/p&gt;

&lt;p&gt;A &lt;strong&gt;CRUD&lt;/strong&gt; application should be able to create, read, update and delete data.  The reason why I am talking about &lt;strong&gt;CRUD&lt;/strong&gt; here is that the four HTTP methods that I mentioned before are just &lt;strong&gt;CRUD&lt;/strong&gt; enabler. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;C&lt;/strong&gt;reate = &lt;code&gt;POST&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;R&lt;/strong&gt;ead = &lt;code&gt;GET&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;U&lt;/strong&gt;pdate = &lt;code&gt;PUT&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;D&lt;/strong&gt;elete = &lt;code&gt;DELETE&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  &lt;a id="get"&gt;GET Method📖🔨 &lt;/a&gt;
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;The &lt;code&gt;GET&lt;/code&gt; method bundles the submitted data into a string and uses&lt;br&gt;
this to compose a URL. That URL contains the address where the data&lt;br&gt;
must be fetched from. The sent data also contains the data keys and&lt;br&gt;
values. Requests using &lt;code&gt;GET&lt;/code&gt; should only retrieve data.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;For example in a &lt;code&gt;&amp;lt;input&amp;gt;&lt;/code&gt; tag you have entered a value and clicked the submit button. Now if the method of the form is &lt;code&gt;GET&lt;/code&gt;, the form will create a URL using that value you entered. That URL will also contain the key-value pair of the data for locating the data. &lt;/p&gt;
&lt;h3&gt;
  
  
  &lt;a id="post"&gt;POST Method📝🔨 &lt;/a&gt;
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;The &lt;code&gt;POST&lt;/code&gt; method bundles up the form data, encodes it for&lt;br&gt;
transmission and sends it to the server followed by receiving a&lt;br&gt;
response. &lt;code&gt;POST&lt;/code&gt; method often causes a change in state or side effects&lt;br&gt;
on the server.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Any request that could be used to change the state of the system - for example, a request that makes changes in the database - should use &lt;code&gt;POST&lt;/code&gt;. &lt;code&gt;GET&lt;/code&gt; should be used only for requests that do not affect the state of the system.&lt;/p&gt;
&lt;h3&gt;
  
  
  &lt;a id="put"&gt;PUT Method📤🔨 &lt;/a&gt;
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;The &lt;code&gt;PUT&lt;/code&gt; method, just like the &lt;code&gt;GET&lt;/code&gt; and &lt;code&gt;POST&lt;/code&gt; methods works from&lt;br&gt;
the client's side. &lt;code&gt;PUT&lt;/code&gt; method sends a request with a key and value to&lt;br&gt;
locate the position the data the needs to be updated. &lt;code&gt;PUT&lt;/code&gt; does&lt;br&gt;
not create new data. &lt;code&gt;PUT&lt;/code&gt; updates existing data with new passed on&lt;br&gt;
value.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;
  
  
  &lt;a id="delete"&gt;DELETE Method🗑️🔨 &lt;/a&gt;
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;DELETE&lt;/code&gt; method, as the name suggests, deletes the specified data.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Based on the type of actions being performed by these different methods, there are 2 types of methods. &lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;a id="safe_unsafe"&gt;Safe methods🛡️ and Unsafe☣️ methods🔨 &lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;⚠️&lt;em&gt;By safe or unsafe I don't mean that you shouldn't use the unsafe methods. Unsafe method is a name given to particular types of methods for there working nature. Use it where you must need it.&lt;/em&gt;⚠️&lt;/p&gt;

&lt;p&gt;Methods that, after sending the request from the client to the server, doesn't change the state of the data is called Safe method. This kind of methods is used to only fetch a specified data without updating or deleting the original data in real-time. &lt;/p&gt;

&lt;p&gt;&lt;code&gt;GET&lt;/code&gt; is a Safe method because &lt;code&gt;GET&lt;/code&gt; is used to fetch the data, nothing else. &lt;/p&gt;

&lt;p&gt;Methods used to send a request to change the state of the original data on the server is called Unsafe methods. Unsafe methods don't just fetch data but also can delete, update or create new data. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;PUT, DELETE, POST&lt;/code&gt; are Unsafe methods.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;
  
  
  &lt;a id="idempotent"&gt;Idempotent methods🪤🔨&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Scenario:&lt;/em&gt;&lt;/strong&gt; Suppose there are 8 data sets. Data sets about 3 dogs and there ages.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;data_set&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="s"&gt;"dog1"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;12&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="s"&gt;"dog2"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="s"&gt;"dog3"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;You send 5 requests using &lt;code&gt;PUT&lt;/code&gt; to the server to update &lt;code&gt;"dog3"&lt;/code&gt; value from 10 to 5. &lt;/li&gt;
&lt;li&gt;After sending the first &lt;code&gt;PUT&lt;/code&gt; request the &lt;code&gt;"dog3"&lt;/code&gt; key will have its value changed to 5. &lt;/li&gt;
&lt;li&gt;But those 4 other &lt;code&gt;PUT&lt;/code&gt; requests will not change the data as the original request was to change the value 10 to 5 and the data is already changed by the first request. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One change of state of the server data occurred in spite of making multiple requests. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Result:&lt;/em&gt;&lt;/strong&gt; Same thing happens when you are using &lt;code&gt;GET&lt;/code&gt; and &lt;code&gt;DELETE&lt;/code&gt; methods. Several requests with the one same change of the data in the server. This is why &lt;code&gt;GET&lt;/code&gt;, &lt;code&gt;DELETE&lt;/code&gt; and &lt;code&gt;PUT&lt;/code&gt; are called Idempotent methods. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;But the &lt;code&gt;POST&lt;/code&gt; method is different. Here notice the similarities between &lt;code&gt;GET&lt;/code&gt;, &lt;code&gt;PUT&lt;/code&gt; and &lt;code&gt;DELETE&lt;/code&gt; methods. All three of them have the same kind of requests where they don't create new data in the server upon a request from the client's side. But &lt;code&gt;POST&lt;/code&gt; does. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Conclusion(for me😂): &lt;code&gt;POST&lt;/code&gt;📝 and &lt;code&gt;PUT&lt;/code&gt;📤 are totally different
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;POST&lt;/code&gt; method is used to create new data in the server-side though the same data might already exist on the server. &lt;/p&gt;

&lt;p&gt;So when you use &lt;code&gt;POST&lt;/code&gt; to change the data of &lt;code&gt;"dog3"&lt;/code&gt; from 10 to 5, it won't work. &lt;code&gt;POST&lt;/code&gt; will create another data set with &lt;code&gt;"dog3"&lt;/code&gt; as key and 5 as value. And 5 requests of &lt;code&gt;POST&lt;/code&gt; will try to create 5 data-sets of the &lt;code&gt;"dog3"&lt;/code&gt; key-value pair. &lt;/p&gt;

&lt;p&gt;&lt;code&gt;POST&lt;/code&gt; changes the state of the server in real-time and multiple times based on the amount of request is being pushed using &lt;code&gt;POST&lt;/code&gt; from the client's side. &lt;/p&gt;

&lt;h2&gt;
  
  
  Thank you🙇‍♂️🙏
&lt;/h2&gt;

&lt;p&gt;I am soo happy☺️ that you read all of it and now you are here. We can connect on &lt;a href="https://www.facebook.com/arunavaskar/"&gt;Facebook&lt;/a&gt;☹️📘 and &lt;a href="https://twitter.com/arunavaskar"&gt;Twitter&lt;/a&gt;🐦. &lt;br&gt;
You can check out my profile for more of my writings. &lt;/p&gt;

</description>
      <category>codenewbie</category>
      <category>html</category>
      <category>webdev</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Privatisation of YOUR android phone: De-Google</title>
      <dc:creator>Arunava Ch.</dc:creator>
      <pubDate>Sun, 01 Nov 2020 06:42:15 +0000</pubDate>
      <link>https://forem.com/arunavaskar/privatisation-of-your-android-phone-de-google-4enh</link>
      <guid>https://forem.com/arunavaskar/privatisation-of-your-android-phone-de-google-4enh</guid>
      <description>&lt;p&gt;There can be a whole lot of reasons for you to be choosing to opt-out of any Google services. But the way different developers and companies have integrated there apps and services with google services is is a monopoly going on. But because of this kind of practice performed by these big companies have to lead the way of Open-Source and Non-google Software. &lt;/p&gt;

&lt;h2&gt;
  
  
  This tutorial is strictly based on The Phone Xiaomi Redmi Note 7(Lavender). This article is only for the enthusiasts and for those who know what they are doing. Please move forward with utmost caution.
&lt;/h2&gt;

&lt;p&gt;**&lt;/p&gt;

&lt;h3&gt;
  
  
  Pre-Rooting process of Syncing/Backing up your data to the cloud
&lt;/h3&gt;

&lt;p&gt;As soon as we start the process of unlocking the locked bootloader, we will lose all the data on this phone. So we need to first backup those data like contacts and calendar.&lt;/p&gt;

&lt;p&gt;Now, this process of syncing contacts and calendar can be much simpler if you opt to use the Gmail account that you already have signed on to this phone because Gmail accounts sync up your calendar and contacts data to google drive by default. But if you are strongly committed to the De-googling process then you can not use the google account. You need to use a non-google account to do so. Like yahoo mail or Outlook mail. Now, I don't want to go with outlook or Yahoo for this tutorial cause I want to show you a different total open-source secure way of doing it without involving Google, Microsoft or any other big company's services.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;a href="https://protonmail.com/" rel="noopener noreferrer"&gt;Proton Mail&lt;/a&gt; is a secure end-to-end encrypted Email service based on Open-source code. It's a perfect service to go with keeping your interests in mind. You can visit there a website or install their &lt;a href="https://play.google.com/store/apps/details?id=ch.protonmail.android" rel="noopener noreferrer"&gt;android app&lt;/a&gt; to create a mail account.&lt;/li&gt;
&lt;li&gt; After you have created the mail account we can now move forward with another fantastic alternative to another Google service, Google Drive. &lt;a href="https://nextcloud.com/" rel="noopener noreferrer"&gt;Nextcloud&lt;/a&gt; services is an open-source cloud service solution having options like being able to choose to have self-hosted cloud hub to be being able to choose other company's hosted service with different storage and amenities options with different premium options to choose from. Nextcloud services are as much flexible as you can imagine. Visit their website to choose a service provider or go with &lt;a href="https://nd.nl.tab.digital/" rel="noopener noreferrer"&gt;tab digital's&lt;/a&gt; solution that I am personally using for my needs. Sign up and get your storage access accordingly.&lt;/li&gt;
&lt;li&gt; So now you have an Open-source Mail account along with a Cloud Service solution. Next step will be to sync your contacts, photos, files and maybe your Calendar. I will initially talk about the process of syncing your contacts and photos using the &lt;a href="https://play.google.com/store/apps/details?id=com.nextcloud.client&amp;amp;hl=en_US&amp;amp;gl=US" rel="noopener noreferrer"&gt;Nextcoud Android app&lt;/a&gt; and the syncing client &lt;a href="http://s3.apk4all.com/apps/2020/10/DAVdroid_v3.3.5-gplay_Final_Apk4all.com.apk" rel="noopener noreferrer"&gt;DAVx5&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Taking in the fact that you have now signed up for a service provider in NextCloud and have logged in to the NextCloud Android app, we will now move forward with the syncing setup. &lt;/p&gt;

&lt;p&gt;Open the NextCloud app and &lt;br&gt;
&lt;a href="http://www.mediafire.com/view/eteyrjhpkjchz67" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.mediafire.com%2Fconvkey%2F4c02%2Feteyrjhpkjchz677g.jpg" alt="Simple, Free Image and File Hosting at MediaFire"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;and go to settings and click on "Sync calendar &amp;amp; Contacts"&lt;br&gt;
&lt;a href="http://www.mediafire.com/view/1ptyslhzjmwsx40" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.mediafire.com%2Fconvkey%2F9c09%2F1ptyslhzjmwsx407g.jpg" alt="Simple, Free Image and File Hosting at MediaFire"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;now this browser windows of DAVx5 will open up where you will need to log in to your nextcloud server accountM&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.mediafire.com/view/nj62z9nrw6759gb" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.mediafire.com%2Fconvkey%2F4317%2Fnj62z9nrw6759gb7g.jpg" alt="Simple, Free Image and File Hosting at MediaFire"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After a successful log in press back button untill you see a screen like this one.&lt;br&gt;
wait for this screen to go away&lt;br&gt;
&lt;a href="http://www.mediafire.com/view/7bsg6n90ew9mdi4" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.mediafire.com%2Fconvkey%2F6144%2F7bsg6n90ew9mdi47g.jpg" alt="Simple, Free Image and File Hosting at MediaFire"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;for this screen to show up.&lt;br&gt;
The account name will be your mail address by default. You can change it by tapping on it or can skip that bit and tap on creating an account. &lt;br&gt;
&lt;a href="http://www.mediafire.com/view/dh7srv1scnf6rtp" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.mediafire.com%2Fconvkey%2F083a%2Fdh7srv1scnf6rtp7g.jpg" alt="Simple, Free Image and File Hosting at MediaFire"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After account's successful creation you will see these two tabs of different content synchronisation. &lt;/p&gt;

&lt;p&gt;CARDDAV is for all the contacts in your device. By default, options will be unchecked and you will have to manually select them and click on that orange sync button to start syncing process.&lt;br&gt;
&lt;a href="http://www.mediafire.com/view/cix9s7uw84cswws" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.mediafire.com%2Fconvkey%2F2aea%2Fcix9s7uw84cswws7g.jpg" alt="Simple, Free Image and File Hosting at MediaFire"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;CALDAV is for your primary calendars. Google account signups don't sync calendars with DAVx5 without developer account Auth setup. This auth setup process requires an entire article of its own, so I will leave this here. &lt;br&gt;
&lt;a href="http://www.mediafire.com/view/o2np0r98z6qgq3x" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.mediafire.com%2Fconvkey%2F27de%2Fo2np0r98z6qgq3x7g.jpg" alt="Simple, Free Image and File Hosting at MediaFire"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;WEBCAL is for you online subscriptions. If you don't have any, then that tab won't require your attention. &lt;/p&gt;

&lt;p&gt;Now got to these settings button &lt;br&gt;
&lt;a href="http://www.mediafire.com/view/t3sux6t7qzu5lhz" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.mediafire.com%2Fconvkey%2Fad78%2Ft3sux6t7qzu5lhz7g.jpg" alt="Simple, Free Image and File Hosting at MediaFire"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;and tweak these syning interval settings and others according to your own convinience. &lt;br&gt;
&lt;a href="http://www.mediafire.com/view/m1fkxuwj5bdjwwp" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.mediafire.com%2Fconvkey%2F30d5%2Fm1fkxuwj5bdjwwp7g.jpg" alt="Simple, Free Image and File Hosting at MediaFire"&gt;&lt;/a&gt;&lt;br&gt;
done&lt;/p&gt;

&lt;p&gt;Now just the way you back up your contacts, you can go to nextcloud and backup your photos and the folders containing photos to get them back when you may need them. &lt;/p&gt;

&lt;h2&gt;
  
  
  Bootloader Unlocking
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;==I assume that you have an updated Windows 10 machine with Linux Terminal installed and updated for them to work correctly. You will need to install an application on your Windows machine for this process to work out. Before you proceed with any of these steps mentioned below, remember to keep your phone charged at a minimum of 80%==&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A. Prerequisites&lt;/strong&gt;&lt;br&gt;
&lt;a href="http://www.mediafire.com/view/jjttk6o3styb05w" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.mediafire.com%2Fconvkey%2Fa477%2Fjjttk6o3styb05w7g.jpg" alt="Simple, Free Image and File Hosting at MediaFire"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;  &lt;strong&gt;For Windows 10&lt;/strong&gt; , You need to &lt;a href="https://www.howtogeek.com/167723/how-to-disable-driver-signature-verification-on-64-bit-windows-8.1-so-that-you-can-install-unsigned-drivers/#:~:text=Click%20the%20%E2%80%9CStartup%20Settings%E2%80%9D%20tile,Disable%20driver%20signature%20enforcement%E2%80%9D%20option." rel="noopener noreferrer"&gt;disable driver signature enforcement&lt;/a&gt; in windows computer incases it doesn't recognise Xioami drivers. Now you need to install ADB and fastboot tools. Download the tools &lt;a href="https://drive.google.com/file/d/0B0MKgCbUM0itSUhpUklCTFpzWkE/view" rel="noopener noreferrer"&gt;here&lt;/a&gt;. * Now run the package using administrative permission * Press Y/Yes to install ADB and Fastboot or N/No to skip * Press Y/Yes to install ADB system-wide or N/No for current user only * Press Y/Yes to install Drivers or N/No to skip * Continue Driver installation * 15 seconds passed - finished! Now if you have older Google USB drivers installed, then uninstall the older ones from the control panel. If you want, you can download the latest Xiaomi drivers from &lt;a href="https://xiaomiadvices.com/download-xiaomi-usb-drivers/" rel="noopener noreferrer"&gt;here&lt;/a&gt;. 
&lt;strong&gt;For Linux&lt;/strong&gt;, open "TERMINAL" and do the following which will help you install android tools and fastboot: 
&lt;code&gt;sudo apt update
sudo apt install 
android-tools-adb android-tools-fastboot&lt;/code&gt; 
This is a very basic and standard way of installing adb and fastboot in Linux. But this commands sets should do the job.&lt;/li&gt;
&lt;li&gt;After Installation is complete, restart your computer. &lt;/li&gt;
&lt;li&gt;Enable developer mode in your phone&lt;/li&gt;
&lt;li&gt;Enable OEM unlocking and USB debugging&lt;/li&gt;
&lt;li&gt;check if your bootloader is locked

&lt;ul&gt;
&lt;li&gt;got to the folder where you have installed ADB and Fastboot tools and open a terminal in there.&lt;/li&gt;
&lt;li&gt;Enter your phone's fastboot mode by pressing volume down + power button and connect your phone to your computer using a USB cable&lt;/li&gt;
&lt;li&gt;Now enter the command &lt;code&gt;fastboot devices&lt;/code&gt;. If you a  random integer in the screen then your device was connected. &lt;/li&gt;
&lt;li&gt;If you see your device, enter the following command &lt;code&gt;fastboot OEM device-info&lt;/code&gt;. If your bootloader is locked, you will get the following status or something similar. 
…………………………………………………………………….
(bootloader) Device tampered: false
(bootloader) Device unlocked: false
(bootloader) Device critical unlocked: false
(bootloader) Charger screen enabled: false
(bootloader) Display panel:
OKAY [ 0.058s]
finished. total time: 0.063s
………………………………………………………………………
If your bootloader is unlocked then you will find this kind of status or similar. 
…………………………………………………………………….
(bootloader) Device tampered: false
(bootloader) Device unlocked: true
(bootloader) Device critical unlocked: true
(bootloader) Charger screen enabled: false
(bootloader) Display panel:
OKAY [ 0.053s]
finished. total time: 0.055s
………………………………………………………………………&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Now to unlock the bootloader you need to ask permission to Xiaomi for that. You need to create a &lt;a href="https://in.account.xiaomi.com/pass/register" rel="noopener noreferrer"&gt;MI account&lt;/a&gt; for that in case you already have not. And then you need to download this &lt;a href="https://en.miui.com/unlock/" rel="noopener noreferrer"&gt;unlocking application&lt;/a&gt; provided by Xiaomi and install it in your Windows PC to proceed.&lt;/li&gt;
&lt;li&gt;After Mi account creation, login to your MI account in your Xiaomi Phone and then go to    Settings/Additional Settings/Developer Options/Mi Unlock status and check "Add account and device".&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;B. Bootloader Unlocking via terminal&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;Bootloader unlocking will erase all your data and that's please remember to back up all your data before you proceed with the below-mentioned procedures&lt;/em&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Even though this was already mentioned above, you should check again if the USB debugging is turned on and OEM unlocking is enabled. &lt;/li&gt;
&lt;li&gt;Your MI account must be connected/added to the phone. &lt;/li&gt;
&lt;li&gt; Given the fact that you have followed the previous instructions and have installed the MI unlock tool properly, now enter the fastboot mode by holding down Volume down + Power button together and connect your phone to the PC using a USB cable.
&lt;/li&gt;
&lt;li&gt;Now start the MI unlock tool and then log in to the same MI account you had logged in to your phone with. &lt;/li&gt;
&lt;li&gt;Now there will be a unlock button. Click on it to start the unlock process. &lt;/li&gt;
&lt;li&gt;follow the process until the process is finished and then reboot your device. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;em&gt;you might get a message saying you need to wait till 72 to 360hrs before you can start the unlocking process. If you got this message, then you will need to wait till that time passes to start the unlock process.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Installing a custom recovery
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;First of all you need to download the &lt;a href="https://mirrorbits.lineageos.org/full/lavender/20201027/lineage-17.1-20201027-nightly-lavender-signed.zip" rel="noopener noreferrer"&gt;Custom rom&lt;/a&gt; and the &lt;a href="https://mirrorbits.lineageos.org/recovery/lavender/20201027/lineage-17.1-20201027-recovery-lavender.img" rel="noopener noreferrer"&gt;Recovery&lt;/a&gt;. &lt;/li&gt;
&lt;li&gt;Store these two files safely in a single folder and then open a terminal or a command prompt if you are using a windows machine for this flashing process. &lt;/li&gt;
&lt;li&gt;Now connect your phone to the PC using a USB cable.&lt;/li&gt;
&lt;li&gt;On the terminal run this following command while the phone is connected. 
&lt;code&gt;adb reboot bootloader&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;As the phone is now in fastboot, try this following command in the terminal
&lt;code&gt;fastboot device&lt;/code&gt; to see if your phone is recognized by your PC.&lt;/li&gt;
&lt;li&gt;now use this following command in the terminal to flash the  custom recovery onto your phone that you downloaded. &lt;code&gt;fastboot flash recovery &amp;lt;recovery_file_name.img&amp;gt;&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Now reboot into recovery by holding the Volume up + Power button at the same time. 
&lt;a href="http://www.mediafire.com/view/kmduw0k3rg490na" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.mediafire.com%2Fconvkey%2F4b2a%2Fkmduw0k3rg490na7g.jpg" alt="Simple, Free Image and File Hosting at MediaFire"&gt;&lt;/a&gt;
## Installing LineageOS from Custom Recovery using your PC
Now in the last steps, we followed we were in the custom recovery. So keeping that in mind we can move forward with the process of installing the LineageOS from recovery.&lt;/li&gt;
&lt;li&gt;Now we need to factory reset our phone by going to Factory reset options and then &lt;/li&gt;
&lt;li&gt;Format data, Format cache partitions and then Format system partitions to remove all the &lt;a href="http://www.mediafire.com/view/jfq5zx8ui9zb8yb" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.mediafire.com%2Fconvkey%2F56d0%2Fjfq5zx8ui9zb8yb7g.jpg" alt="Simple, Free Image and File Hosting at MediaFire"&gt;&lt;/a&gt;data including the whole OS from the from to make place for the new LineageOS rom. &lt;/li&gt;
&lt;li&gt;Now return to the main menu and select Apply update/Apply from ADB &lt;a href="http://www.mediafire.com/view/tzd5m8bpeqyrl8e" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.mediafire.com%2Fconvkey%2F902b%2Ftzd5m8bpeqyrl8e7g.jpg" alt="Simple, Free Image and File Hosting at MediaFire"&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Now on the PC terminal enter the following command to flash the &lt;code&gt;adb sideload filename.zip&lt;/code&gt; filename.zip will be replaced by the name of the LineageOS rom file you downloaded.  &lt;strong&gt;NOTE:&lt;/strong&gt; Additional add-ons aren’t signed with LineageOS’s official key, and therefore when they are sideloaded, Lineage Recovery will present a screen that says &lt;code&gt;Signature verification failed&lt;/code&gt;, this is expected, please click &lt;code&gt;Continue&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Now download the &lt;a href="https://github.com/topjohnwu/Magisk/releases/download/manager-v8.0.2/MagiskManager-v8.0.2.apk" rel="noopener noreferrer"&gt;Magisk manager&lt;/a&gt; to avail root authority after you reboot the phone in it's new Custom ROM. &lt;/li&gt;
&lt;li&gt;Now again to go to Apply update/Apply from ADB.&lt;/li&gt;
&lt;li&gt;In your PC terminal type in that same command &lt;code&gt;adb sideload filename.zip&lt;/code&gt; and replace the filename.zip with the magisk download file name to install the Magisk Manager.
## Now you are ready to boot into your seemingly NEW phone without any Google Play services baked onto it. 
Now you can make calls, text people and do every other mundane task you usually do on your phone. Right? 
haha
Where are your contacts, applications and cloud services?
Yes, you got the point. We need to work on that now. Thing from will be less technical and more of thorough follow up process. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;You need AppStore before you do anything else&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The open-source world of android and the world applications developed by people other than Google has got you covered here. There are plenty of options to choose from and sometimes soo many options can be overwhelming so here is a list of applications that you will ever need, at least during the time of using a phone without google's ecosystem.&lt;/p&gt;

&lt;h4&gt;
  
  
  APP-STORE
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://en.aptoide.com/download?package_uname=aptoide&amp;amp;entry_point=appstore_home_installer_desktop" rel="noopener noreferrer"&gt;Aptoide: &lt;/a&gt;&lt;br&gt;
&lt;a href="http://www.mediafire.com/view/g0l2sr4f7it7aet" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.mediafire.com%2Fconvkey%2F9462%2Fg0l2sr4f7it7aet7g.jpg" alt="Simple, Free Image and File Hosting at MediaFire"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://f-droid.org/F-Droid.apk" rel="noopener noreferrer"&gt;F-Droid:&lt;/a&gt;&lt;br&gt;
&lt;a href="http://www.mediafire.com/view/7h3lhhafp5ehcsq" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.mediafire.com%2Fconvkey%2F3e0c%2F7h3lhhafp5ehcsq7g.jpg" alt="Simple, Free Image and File Hosting at MediaFire"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://en.aptoide.com/download?app_id=28742093&amp;amp;store_name=aptoide-web&amp;amp;entry_point=appstore_appview_header_desktop" rel="noopener noreferrer"&gt;ApkMirror:&lt;/a&gt;&lt;br&gt;
&lt;a href="http://www.mediafire.com/view/pt4qqwq94ymmg6q" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.mediafire.com%2Fconvkey%2F97f4%2Fpt4qqwq94ymmg6q7g.jpg" alt="Simple, Free Image and File Hosting at MediaFire"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Aptoide is my favourite AppStore on the list because it has a huge array of applications and you may find applications not available for your region too! F-Droid places mostly known for trusted open source applications and it looks like a general AppStore but it isn't. It's like a repository of applications but not to make it more complicated, it works. Apkmirror is a fantastic place for getting the latest, beta or even alpha versions of applications, applications which sometimes even default system apps of some smartphone.&lt;/p&gt;

&lt;h4&gt;
  
  
  APPS for DAILY USE
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;1.&lt;/strong&gt;&lt;a href="https://download.apkpure.com/b/APK/Y29tLnNwZWVkc29mdHdhcmUuZXhwbG9yZXJfMTIyX2FjMTE2MTg?_fn=RXhwbG9yZXJfdjMuOC40X2Fwa3B1cmUuY29tLmFwaw&amp;amp;as=dc1fbc787661b94801888632a092faf95f9a53bd&amp;amp;ai=702640308&amp;amp;at=1603949381&amp;amp;_sa=ai%2Cat&amp;amp;k=8d211092a7b9b59ccd6d2896a127f5955f9cf645&amp;amp;_p=Y29tLnNwZWVkc29mdHdhcmUuZXhwbG9yZXI&amp;amp;c=1%7CPRODUCTIVITY%7CZGV2PVNwZWVkJTIwU29mdHdhcmUmdD1hcGsmcz00Njg2OTI0JnZuPTMuOC40JnZjPTEyMg" rel="noopener noreferrer"&gt;Root Explorer&lt;/a&gt; &lt;br&gt;
&lt;a href="http://www.mediafire.com/view/eu6mpj1jatgdzuv" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.mediafire.com%2Fconvkey%2Ff8ba%2Feu6mpj1jatgdzuv7g.jpg" alt="Simple, Free Image and File Hosting at MediaFire"&gt;&lt;/a&gt;&lt;br&gt;
for accessing root files with root permission granted by Magisk manager.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2.&lt;/strong&gt;&lt;a href="https://f-droid.org/en/packages/org.mozilla.fennec_fdroid/" rel="noopener noreferrer"&gt;Fennec F-Droid&lt;/a&gt; &lt;br&gt;
&lt;a href="http://www.mediafire.com/view/69w3mk4mjizmssu" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.mediafire.com%2Fconvkey%2F7aef%2F69w3mk4mjizmssu7g.jpg" alt="Simple, Free Image and File Hosting at MediaFire"&gt;&lt;/a&gt;&lt;br&gt;
for accessing the web. It's F-Droid fork of firefox mobile with proprietary bits and telemetry removed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3.&lt;/strong&gt;&lt;a href="https://f-droid.org/en/packages/org.videolan.vlc/" rel="noopener noreferrer"&gt;VLC&lt;/a&gt; &lt;br&gt;
&lt;a href="http://www.mediafire.com/view/z0krm06yqkspidl" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.mediafire.com%2Fconvkey%2Facd1%2Fz0krm06yqkspidl7g.jpg" alt="Simple, Free Image and File Hosting at MediaFire"&gt;&lt;/a&gt;&lt;br&gt;
for media playback. Do I need to explain why should have VLC for media playback other than the fact that it's open-source software?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4.&lt;/strong&gt;&lt;a href="https://f-droid.org/en/packages/com.nextcloud.client/" rel="noopener noreferrer"&gt;Nextcloud&lt;/a&gt; &lt;br&gt;
&lt;a href="http://www.mediafire.com/view/zt98cuaklyag8h4" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.mediafire.com%2Fconvkey%2F1554%2Fzt98cuaklyag8h47g.jpg" alt="Simple, Free Image and File Hosting at MediaFire"&gt;&lt;/a&gt;&lt;br&gt;
for either self-host or using a service provider's server for cloud storage backups. It's open-source, secure and there is a ton of options to choose from.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5.&lt;/strong&gt;&lt;a href="https://f-droid.org/en/packages/com.simplemobiletools.gallery.pro/" rel="noopener noreferrer"&gt;Simple Gallery Pro&lt;/a&gt; &lt;br&gt;
&lt;a href="http://www.mediafire.com/view/2wu4sqjfcl6vhr8" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.mediafire.com%2Fconvkey%2F5565%2F2wu4sqjfcl6vhr87g.jpg" alt="Simple, Free Image and File Hosting at MediaFire"&gt;&lt;/a&gt;&lt;br&gt;
because the default gallery that is pre-installed in LineageOS is extremely basic. But this gallery app is not super complicated yet brings some subtle features to the table for ease of use when you may need it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6.&lt;/strong&gt;&lt;a href="https://f-droid.org/en/packages/eu.faircode.email/" rel="noopener noreferrer"&gt;FairEmail&lt;/a&gt; &lt;br&gt;
&lt;a href="http://www.mediafire.com/view/4nk3v9ajsl4pozy" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.mediafire.com%2Fconvkey%2F7f19%2F4nk3v9ajsl4pozy7g.jpg" alt="Simple, Free Image and File Hosting at MediaFire"&gt;&lt;/a&gt;&lt;br&gt;
for all of your email accounts. The default Mail app is very basic and sometime later you might need some more horsepower.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;7.&lt;/strong&gt;&lt;a href="https://system-app-safe-remover.en.aptoide.com/app" rel="noopener noreferrer"&gt;System App Remover&lt;/a&gt; &lt;br&gt;
&lt;a href="http://www.mediafire.com/view/rux1joviymtzdc9" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.mediafire.com%2Fconvkey%2Fcfd7%2Frux1joviymtzdc97g.jpg" alt="Simple, Free Image and File Hosting at MediaFire"&gt;&lt;/a&gt;&lt;br&gt;
to remove the unwanted system app with root access granted by the Magisk manager.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;8.&lt;/strong&gt;&lt;a href="https://sms-organizer.en.aptoide.com/app" rel="noopener noreferrer"&gt;SMS Organizer&lt;/a&gt; &lt;br&gt;
&lt;a href="http://www.mediafire.com/view/9bzn26qbm3tkkd1" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.mediafire.com%2Fconvkey%2Fdb37%2F9bzn26qbm3tkkd17g.jpg" alt="Simple, Free Image and File Hosting at MediaFire"&gt;&lt;/a&gt;&lt;br&gt;
to get the best experience without rooting for Google. Fantastic auto separation of different texts, auto OTP detection and simple copying feature and there more to this application that you need to experience by your self to know better about.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;9.&lt;/strong&gt;&lt;a href="https://swiftkey-keyboard.en.aptoide.com/app" rel="noopener noreferrer"&gt;Swiftkey keyboard&lt;/a&gt; &lt;br&gt;
&lt;a href="http://www.mediafire.com/view/zbt22f6ne9h11va" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.mediafire.com%2Fconvkey%2Fe99b%2Fzbt22f6ne9h11va7g.jpg" alt="Simple, Free Image and File Hosting at MediaFire"&gt;&lt;/a&gt;&lt;br&gt;
can be the best alternative to Gboard. fantastic typing experience out of the box and there is a whole lot of customization options available for you to go through to choose the best size and vibration type to choose from. And lot's of proper themes are there too.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;10.&lt;/strong&gt;&lt;a href="https://1-dontsharethislink.celsoazevedo.com/file/filesc/MGC_7.4.104_Parrot043_v5.apk" rel="noopener noreferrer"&gt;Gcam&lt;/a&gt; and a supporting &lt;a href="https://github.com/lukaspieper/Gcam-Services-Provider/releases/download/v1.0/app-debug.apk" rel="noopener noreferrer"&gt;application&lt;/a&gt; for the Gcam to run without the Gapps that it needs to run on an android device.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;11.&lt;/strong&gt;&lt;a href="https://f-droid.org/en/packages/org.sufficientlysecure.viewer/" rel="noopener noreferrer"&gt;Document Viewer&lt;/a&gt; &lt;br&gt;
&lt;a href="http://www.mediafire.com/view/7alru3hcm2vyb64" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.mediafire.com%2Fconvkey%2Fb389%2F7alru3hcm2vyb647g.jpg" alt="Simple, Free Image and File Hosting at MediaFire"&gt;&lt;/a&gt;&lt;br&gt;
is an Open source application from F-droid. It supports PDF,DjVu, EPUB, XPS (OpenXPS),&lt;br&gt;
Comic Books (cbz) (NO support for CBR (rar compressed)), FictionBook (fb2). IT DOES NOT SUPPORT DOC or DOCX files!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;12.&lt;/strong&gt;&lt;a href="https://f-droid.org/en/packages/at.bitfire.icsdroid/" rel="noopener noreferrer"&gt;ICSx5&lt;/a&gt; &lt;br&gt;
&lt;a href="http://www.mediafire.com/view/bel5eoqkfx1q4w4" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.mediafire.com%2Fconvkey%2F8c10%2Fbel5eoqkfx1q4w47g.jpg" alt="Simple, Free Image and File Hosting at MediaFire"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;download this application only if you have calendar subscriptions to sync&lt;/em&gt;&lt;br&gt;
for syncing your web calendar subscription. This is a way of syncing all your different calendars from Google calendars to any of your custom calendar provider. We will talk about this more later.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;13.&lt;/strong&gt;&lt;a href="https://f-droid.org/en/packages/at.bitfire.davdroid/" rel="noopener noreferrer"&gt;DAVx5&lt;/a&gt; &lt;br&gt;
&lt;a href="http://www.mediafire.com/view/i092ri39qckof22" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.mediafire.com%2Fconvkey%2Fa368%2Fi092ri39qckof227g.jpg" alt="Simple, Free Image and File Hosting at MediaFire"&gt;&lt;/a&gt;&lt;br&gt;
is for syncing your contacts and main calendar using your mail account. We will talk about this in more detail later in this article.&lt;/p&gt;

&lt;p&gt;Now that we have all the essentials downloaded/installed we can now move forward to &lt;/p&gt;

&lt;h2&gt;
  
  
  Setting up the essentials
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;A: Contacts&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open nextcloud application and tap on log in 
&lt;a href="http://www.mediafire.com/view/ps69ul3g21edoty/Screenshot_20201101-105425_Nextcloud.png/file" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.mediafire.com%2Fconvkey%2F58c8%2Fps69ul3g21edoty4g.jpg" alt="Simple, Free Image and File Hosting at MediaFire"&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Now enter the server domain given by your nextcloud provider, and continue
&lt;a href="http://www.mediafire.com/view/3430bxf5dbzdb1b/Screenshot_20201101-105457_Nextcloud.png/file" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.mediafire.com%2Fconvkey%2F485f%2F3430bxf5dbzdb1b4g.jpg" alt="Simple, Free Image and File Hosting at MediaFire"&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Now tap on log in to log in to your account with mail and password
&lt;a href="http://www.mediafire.com/view/jyignlaggpuopiz/Screenshot_20201101-105512_Nextcloud.png/file" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.mediafire.com%2Fconvkey%2Fe49e%2Fjyignlaggpuopiz4g.jpg" alt="Simple, Free Image and File Hosting at MediaFire"&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Now grant access to your device 
&lt;a href="http://www.mediafire.com/view/nrc2ajr2ymitrc0/Screenshot_20201101-105531_Nextcloud.png/file" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.mediafire.com%2Fconvkey%2Fdba0%2Fnrc2ajr2ymitrc04g.jpg" alt="Simple, Free Image and File Hosting at MediaFire"&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;now go to your nextcloud app settings to find out the sync contacts and calendar settings. Tap on it start the DAVx5 log in process. 
&lt;a href="http://www.mediafire.com/view/s39c4fx45as59pv/Screenshot_20201101-105602_Nextcloud.png/file" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.mediafire.com%2Fconvkey%2F003c%2Fs39c4fx45as59pv4g.jpg" alt="Simple, Free Image and File Hosting at MediaFire"&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Now a Browser window for DAVx5 log in screen will appear where you will need to log in to your nextcloud account, grant access and follow the same steps we  previously followed to sync up your contacts before the bootloader unlock process. You will be able to choose contacts and calendar syncing interval times based on your preference. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;B: Gcam&lt;/strong&gt;&lt;br&gt;
Gcam is no doubt the best camera application to use for getting the best possible outcome from a single random click. Extremely feature-rich application for almost every phone in the market. Download The &lt;a href="https://www.celsoazevedo.com/files/android/google-camera/f/changelog1458/" rel="noopener noreferrer"&gt;Gcam&lt;/a&gt; and the supporting &lt;a href="https://github.com/lukaspieper/Gcam-Services-Provider/releases/download/v1.0/app-debug.apk" rel="noopener noreferrer"&gt;app&lt;/a&gt; that helps the Gcam run without any Gapps installed in the device. &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;First install the Gcam service provider app
&lt;a href="http://www.mediafire.com/view/97muin2mlyzi1dm/Screenshot_20201101-113339_Package_installer.png/file" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.mediafire.com%2Fconvkey%2F95a4%2F97muin2mlyzi1dm4g.jpg" alt="Simple, Free Image and File Hosting at MediaFire"&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;then install Gcam app
&lt;a href="http://www.mediafire.com/view/hebalk7e2usqq3a/Screenshot_20201101-113352_Package_installer.png/file" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.mediafire.com%2Fconvkey%2F0262%2Fhebalk7e2usqq3a4g.jpg" alt="Simple, Free Image and File Hosting at MediaFire"&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Open the app and enjoy. as simple as that
&lt;a href="http://www.mediafire.com/view/zq4gcj7z46yyqzc/Screenshot_20201101-113505_Camera.png/file" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.mediafire.com%2Fconvkey%2F46d9%2Fzq4gcj7z46yyqzc4g.jpg" alt="Simple, Free Image and File Hosting at MediaFire"&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>android</category>
      <category>opensource</category>
    </item>
    <item>
      <title>October 22nd, 2020</title>
      <dc:creator>Arunava Ch.</dc:creator>
      <pubDate>Thu, 22 Oct 2020 04:43:04 +0000</pubDate>
      <link>https://forem.com/arunavaskar/october-22th-2020-3h7d</link>
      <guid>https://forem.com/arunavaskar/october-22th-2020-3h7d</guid>
      <description>&lt;p&gt;I am writing this at 8:45 AM in the morning. I am writing this because I feel &lt;br&gt;
~~ I need correction~~  I need a little bit rest. &lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;My office work pressure has gone off the roof. It's almost every day and it's going out of control. Things that I am required to do almost daily are all that I need to do. I know that. I know that right now I shouldn't be ignoring these tasks but yet here I am complaining about these things. &lt;br&gt;
In very specific I am not able to workout on a daily basis as planned. Last night I was really tired and I was yawning. I couldn't finally workout. It's not an excuse that I am sharing but rather a real scenario I am sharing that is hurting my focus. &lt;/p&gt;

&lt;h2&gt;
  
  
  How Make Things Correct?
&lt;/h2&gt;

&lt;p&gt;By starting over and over again. Whenever I fail, I should know that I failed because I need to get started again. It is a very simple mindset that I need to keep to become more perfect. But again here is the irony, Perfection is na illusion. &lt;/p&gt;

&lt;h2&gt;
  
  
  What Are The Right Things The I Am Doing?
&lt;/h2&gt;

&lt;p&gt;There are some things that I am doing I consider as being right. Using the calendar on a daily basis to map my day and tasks. This in reality is actually helping me a lot,  I don't need to try hard to remember doing something. I just need to focus on using my calendar from my phone to look at my schedules. &lt;br&gt;
Another thing that I am doing right is I regularly noting down my food intakes. I mean as much as possible. Not all the time it's possible to note down what I just had but I am trying to note whenever possible. &lt;/p&gt;

&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;h3&gt;
  
  
  There should not be any final thoughts. Remember that you are just getting started.
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;h4&gt;
  
  
  You are motivated. Motivation gets you started. So that's a great sign.
&lt;/h4&gt;&lt;/li&gt;
&lt;li&gt;&lt;h4&gt;
  
  
  You also should know that you are a person of extreme discipline. A disciplined person can be stopped by nothing. Discipline is the next step after motivation. A disciplined person requires no motivation.
&lt;/h4&gt;&lt;/li&gt;
&lt;li&gt;&lt;h4&gt;
  
  
  You should know that you are strong and you don't stop when you are tried rather you stop when you are done.
&lt;/h4&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
    </item>
    <item>
      <title>October 15th, 2020</title>
      <dc:creator>Arunava Ch.</dc:creator>
      <pubDate>Thu, 15 Oct 2020 16:01:50 +0000</pubDate>
      <link>https://forem.com/arunavaskar/october-15th-2020-3k32</link>
      <guid>https://forem.com/arunavaskar/october-15th-2020-3k32</guid>
      <description>&lt;p&gt;I have been writing small writings on Tumblr for some time now but the problem with writing in there is that there are some limitations to how much content I can put in. Let's talk about the main reason behind me writing at all. I write because I want to express what I have inside me. The words that I want to express but not to people around me. I face problem in talking to people about anything and mostly if the topic is related to me. Writing an article about it and leaving out in the wild feels relieving. &lt;br&gt;
Let's focus on now. &lt;br&gt;
I had a focus shifting stage in my life a few months ago. I was in a roll. I was working on my small projects with good focus. I was working out daily like a mad man and I was taking my diet very seriously. But the after that month of focus shifting everything changed and I strongly believe that I am still unable to get back on track. So the reason for writing this article is that I want to communicate or rather I may say talk to my self to address what I was doing write and why I was able to do them at that time and why I am not able to do those things now. &lt;/p&gt;

&lt;h2&gt;
  
  
  what I was doing right before that focus shifting month
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;h3&gt;
  
  
  I was tracking my budget.
&lt;/h3&gt;

&lt;p&gt;Yes. And very precisely. The reason why I was tracking my monthly budget was that I wanted to save some money. I wanted to direct a certain amount of money that I was having with me after all the essential expenditures, to some real reasonable places of my personal life. I wanted to full fill need of a diet, online subscription and yet after all that I wanted to save some money just for the sake of saving. The thing was of noting down my expenditures in an excel sheet I was staying in a good habit of knowing what was that I need to spend my hard-earned money on and what was that I needed. I was starting to look at things with a different eye. I was evaluating anything that my money could buy with an eye of extreme scepticism.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;h3&gt;
  
  
  I was working out daily and was managing my diet with extreme precision
&lt;/h3&gt;

&lt;p&gt;Working out daily maintaining a strict mindset to continue that daily is something that I miss now. I was maintaining my food intake time and my food types soo precisely that I kind of feel ashamed of my current self as compared to my past self for how I am eating these days. But trust me, the way I eat these days is health AF but if I start to compare my current self to the past self then you will know how fucked up my current diet is. &lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;h3&gt;
  
  
  Calender management
&lt;/h3&gt;

&lt;p&gt;I still do manage my calendar but again just like my past diet routine my current calendar management should not be compared to past habits. I used to edit and follow my calendar blocks with extreme precision and I was experiencing the results of it. After all, that was the very reason why I got started with calendar colour blocking. &lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  What I am doing now
&lt;/h2&gt;

&lt;p&gt;I don't exercise daily. I don't follow my calendar blockings even though maybe I had spent the whole evening planning and placing the blocks in place for my self to follow. I don't follow the timings for when I should be eating and when I should not be. If I have to add more to this then I will say that I used to at least try meditating daily. I used to try to read books daily and work on the codes daily. But these days I don't. &lt;/p&gt;

&lt;h2&gt;
  
  
  why is it the way it is?
&lt;/h2&gt;

&lt;p&gt;Because maybe at those perfect times it was a full lockdown situation when I didn't have to think about going to work or solving any office related problems or feels extremely tired making that a reason for not working out. This is the fact that I need to accept now. The times have changed a lot. Things aren't the way they were during those perfect lockdown times. I used to plan and arrange my days according to those huge free times and weeks and months I had for the lockdown situation. &lt;/p&gt;

&lt;h2&gt;
  
  
  But now I have many more things that I need to focus on. I need to adapt.
&lt;/h2&gt;

&lt;p&gt;I have to see that I have lesser time in hand for my self. I have lesser energy per day to focus on daily workouts. I much lesser time focus on the budget maintenance. I have to solve problems related to my office. So I have to be more realistic. &lt;/p&gt;

&lt;h2&gt;
  
  
  So what is the solution to this and what should I do?
&lt;/h2&gt;

&lt;p&gt;First of all, I need to be more disciplined. I have to be more focused on what I want as according to my absolute needs. So to be more focused on what my needs are, I need to identify what my absolute needs are.&lt;/p&gt;

&lt;h3&gt;
  
  
  what are my absolute needs that I should be and I must be on large to smaller-scale daily?
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;I should be going to be early and getting out of bed early. This is most important and the most helpful habit I was in during the lockdown situation and I have to do it again. In bed by 10 to 10:30 pm and out of bed by 6 am. &lt;/li&gt;
&lt;li&gt;At least 10 minutes of meditation daily. I mean is it that hard to get 10 minutes out of a day? NO. I need to meditate daily starting from tomorrow. &lt;/li&gt;
&lt;li&gt;Read a book with 100% focus for just an hour. So out of 16 waking hours a day, I can get 1 hour to read a book with full focus. No excuse. Needs to be daily.&lt;/li&gt;
&lt;li&gt;Diet and exercise. No eating after 8:30 pm and no eating before 12:30 pm. It should not be that hard. come on. Just pre-plan the workout time and available times to eat and whooa. That's it. Exercise should be done daily. No days off. Even if you feel tired just start skipping ropes. Feel the intensity of it and easily flow will be there to help. &lt;/li&gt;
&lt;li&gt;Coding daily. This part should be done even if the amount is very little and insignificant. Should be done daily and managed via calendar blocking just like the others. &lt;/li&gt;
&lt;li&gt;Journaling should be done regularly? NOPE. don't stack things up like that. Just do it on a day when you feel like really doing it or you feel like you can.&lt;/li&gt;
&lt;li&gt;You should have a perfect time out of a day when you browse through your social media and youtube and all the entertainment staff. Don't let these entertainment staff go spread throughout your day. I am not saying that entertainment is not important. But I am saying that entertainment between staff that are important to be hard focused on can become poisonous. So gather all the entertaining staff and access them at a very specific time of the day so that they don't mess up your routine. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Okay. Now I have my mind clear and I can now focus on how to arrange my days and how to stay focused on my routine. This talking to my self through writing feels very natural. Feels like l am talking in front of a mirror. It served the purpose and cured the craving I was having. The craving of talking and sharing these problems and words and thoughts with someone. I feel relieved. I feel more sincere and more intellectual. I feel more disciplined. Or at least I feel like I know that I have to be more disciplined and I know how to be more disciplined because I talked to my self. I asked my self some important questions. I frightened my inner self soo much that it felt forced to answer all my questions. I got all my answers and now I am going to take the necessary steps needed to achieve the perfecting. But as a final statement, I like to remind myself of one thing&lt;/p&gt;

&lt;h1&gt;
  
  
  I can never achieve perfection in my daily life or anything. The reason is not me. The reason is perfection is an elusive goal that we all the humans try to achieve. But what matters is the steps that we take or that are necessary to be taken to reach perfection. It's the process of achieving your goals that brings the real changes not the goal itself. So never blame your self for not being able to be or make a perfect day out of every day. Remember that you honestly tried and there is always a tomorrow. So learn from the mistakes and try again tomorrow.
&lt;/h1&gt;

</description>
      <category>dailyjournal</category>
    </item>
  </channel>
</rss>
