<?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: kartik puri</title>
    <description>The latest articles on Forem by kartik puri (@kartikpuri95).</description>
    <link>https://forem.com/kartikpuri95</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%2F383037%2F79e4dab5-cbd8-4697-9548-ed065ed100cf.png</url>
      <title>Forem: kartik puri</title>
      <link>https://forem.com/kartikpuri95</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/kartikpuri95"/>
    <language>en</language>
    <item>
      <title>A Week with Appwrite: My Experience as a New User</title>
      <dc:creator>kartik puri</dc:creator>
      <pubDate>Thu, 02 Feb 2023 04:22:25 +0000</pubDate>
      <link>https://forem.com/kartikpuri95/a-week-with-appwrite-my-experience-as-a-new-user-226e</link>
      <guid>https://forem.com/kartikpuri95/a-week-with-appwrite-my-experience-as-a-new-user-226e</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Appwrite is a modern and scalable back-end platform for web and mobile app developers, similar in nature to Firebase. It offers a comprehensive set of APIs for building robust and secure applications. As a new user, I recently spent a week exploring its features and capabilities. In this article, I'll share my experience with Appwrite and give you a glimpse into its key features and benefits.&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting Started with Appwrite
&lt;/h2&gt;

&lt;p&gt;Getting started with Appwrite is a straightforward process. Here's what you need to do:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Create an account: Sign up for a free account on the Appwrite website to get started.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Install the CLI: Download and install the Appwrite CLI tool to manage your Appwrite server from the command line.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Launch your Appwrite instance: Use the CLI to launch an Appwrite instance on a cloud provider or on-premise. You can choose from a variety of hosting options, including AWS, Google Cloud, and DigitalOcean.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Explore the Dashboard: Access the Appwrite Dashboard to explore the various features and tools available. The Dashboard allows you to manage your users, databases, APIs, and security settings.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Start building: Start building your app by making API calls to Appwrite. The API documentation provides a comprehensive list of available APIs and examples of how to use them.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Deploy and test: Deploy your app to a staging environment and test it to make sure everything is working as expected&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;With these steps, you should be up and running with Appwrite in no time. The platform is designed to be user-friendly and easy to use, so you can focus on building your app, not managing the back-end.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Features and Benefits of Appwrite
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;API-driven: Appwrite is API-driven, which means you can build your app without having to write any backend code. The platform provides a comprehensive set of APIs that allow you to add user authentication, manage databases, and perform other backend tasks.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;User-friendly: Appwrite is designed to be user-friendly, with a straightforward and intuitive interface. The platform's Dashboard makes it easy to manage users, APIs, and security settings.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Scalable: Appwrite is built to handle growth, so you can scale your app as needed. The platform provides a range of hosting options, including AWS, Google Cloud, and DigitalOcean, so you can choose the one that best fits your needs.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Secure: Appwrite takes security seriously, with features such as two-factor authentication and encryption to keep your data safe. The platform also provides tools for monitoring and logging, so you can keep an eye on your app's performance.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Flexible: Appwrite is flexible, allowing you to use the platform in a variety of ways. Whether you're building a web app, a mobile app, or a progressive web app, Appwrite has you covered.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  My Experience with Appwrite in My Quasar Project
&lt;/h2&gt;

&lt;p&gt;I recently had the opportunity to use Appwrite in a Quasar project, and I have to say, it was a breeze. As someone who primarily works on the frontend, I was pleased with how easily Appwrite integrated into my project.&lt;/p&gt;

&lt;p&gt;One of the standout features of Appwrite is its API-driven design. With just a few lines of code, I was able to scaffold my Quasar project with user authentication, which was a huge time-saver. The APIs made it simple for me to manage my databases and perform other backend tasks, freeing me up to focus on the frontend.&lt;/p&gt;

&lt;p&gt;Another aspect of Appwrite that impressed me was its user-friendly interface. The platform's Dashboard made it easy for me to manage users, APIs, and security settings, and the straightforward design made it a breeze to navigate.&lt;/p&gt;

&lt;p&gt;Appwrite's scalability was also a plus. Whether I was working on a small project or something larger, the platform provided the resources I needed to handle growth. And with a range of hosting options, including AWS, Google Cloud, and DigitalOcean, I was able to choose the solution that best fit my needs.&lt;/p&gt;

&lt;p&gt;Finally, Appwrite's commitment to security was a major selling point for me. With features such as two-factor authentication and encryption, I felt confident that my data was protected. And with tools for monitoring and logging, I was able to keep an eye on my app's performance and ensure it was running smoothly.&lt;/p&gt;

&lt;p&gt;In conclusion, using Appwrite in my Quasar project was a great experience. The API-driven design, user-friendly interface, scalability, and security all made it the perfect solution for my backend needs. If you're looking for a backend solution that integrates seamlessly with your frontend framework, I highly recommend giving Appwrite a try.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Missed from Firebase in Appwrite
&lt;/h2&gt;

&lt;p&gt;When I started using Appwrite, I was coming from a background using Firebase. While I was impressed with many of Appwrite's features, there were a few things I missed from Firebase. One of the key features I missed was the ability to emulate cloud functions. In Firebase, it was easy to test cloud functions locally and make changes to them before deploying. With Appwrite, I found that I had to deploy changes to the cloud to test them, which was less convenient. However, despite this shortcoming, I found that Appwrite made up for it with other features such as its API-driven design, scalability, and security. Overall, while I missed the cloud function emulation from Firebase, I still found Appwrite to be a strong contender in the backend-as-a-service market.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Thoughts on using Appwrite
&lt;/h2&gt;

&lt;p&gt;After using Appwrite in my Quasar project, I have come away with a positive impression of the platform. From its API-driven design to its user-friendly interface and security features, Appwrite provided me with everything I needed for my backend needs.&lt;/p&gt;

&lt;p&gt;While there were a few things I missed from Firebase, such as the ability to emulate cloud functions, I still found Appwrite to be a strong contender in the backend-as-a-service market. The platform's scalability and commitment to security made it the perfect solution for my project.&lt;/p&gt;

&lt;p&gt;One of the best things about Appwrite is that it is open-source and can be set up on-premise, which ensures that our data stays with us. This was a huge plus for me as it gave me complete control over my data and allowed me to ensure that it was protected to the highest standards.&lt;/p&gt;

&lt;p&gt;In conclusion, if you're looking for a backend solution that integrates seamlessly with your frontend framework and gives you complete control over your data, I highly recommend giving Appwrite a try. The platform's API-driven design, user-friendly interface, scalability, and commitment to security make it a top choice for anyone looking for a backend solution.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>programming</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Would you like to create your own NFT of Blog?</title>
      <dc:creator>kartik puri</dc:creator>
      <pubDate>Mon, 11 Oct 2021 08:48:36 +0000</pubDate>
      <link>https://forem.com/kartikpuri95/would-you-like-to-create-your-own-nft-of-blog-2p86</link>
      <guid>https://forem.com/kartikpuri95/would-you-like-to-create-your-own-nft-of-blog-2p86</guid>
      <description>&lt;p&gt;Recently i stumbled upon above idea and created my own app &lt;br&gt;
&lt;a href="https://blogtonft.com/"&gt;https://blogtonft.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This App even got featured at product hunt &lt;br&gt;
&lt;a href="https://www.producthunt.com/posts/blogtonft"&gt;https://www.producthunt.com/posts/blogtonft&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Would love to know feedback of all the people here&lt;/p&gt;

&lt;p&gt;PS: This is a free app and I won't be making any money out of this.&lt;br&gt;
This is just an app for the community. So everyone at Dev.to is most welcome to create their own NFT &lt;br&gt;
 &lt;a id="dfC1Ji59YlekytqXDMqPrnMCRjh1" href="https://blogtonft.com"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--IPLlByg8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://img.shields.io/static/v1%3Flabel%3DMinted%2520At%26message%3DBlogToNFT%26color%3D7c3aed%26logo%3Dleaflet%26logoColor%3Dgreen/"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>webdev</category>
      <category>programming</category>
    </item>
    <item>
      <title>What about javascript 
Chrome V8 Engine? Part 1</title>
      <dc:creator>kartik puri</dc:creator>
      <pubDate>Sun, 25 Oct 2020 17:13:40 +0000</pubDate>
      <link>https://forem.com/kartikpuri95/what-about-javascript-v8-engine-part-1-1k2j</link>
      <guid>https://forem.com/kartikpuri95/what-about-javascript-v8-engine-part-1-1k2j</guid>
      <description>&lt;p&gt;&lt;em&gt;This post is divided into 2 parts&lt;/em&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;What about the javascript V8 Engine? 👈 You are here&lt;/li&gt;
&lt;li&gt;Inside the javascript V8 Engine (Waiting to be published)

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

&lt;p&gt;From the '90s to 2020s' browser went from seed to plant and now they are trees and we have no clue where it will go next. There was a time when the browser was just meant for little surfing and browsing. Look at it now, you can play games, you can run 3D renders(&lt;a href="https://theoneplusworld.com/" rel="noopener noreferrer"&gt;https://theoneplusworld.com/&lt;/a&gt;), you can even edit documents(Google Docs) and the possibilities are endless. We have literally replaced most of are installed application with a browser compatible ones and with the set of extensions available at our disposal we are more productive than ever&lt;/p&gt;

&lt;p&gt;But what made this transition so smooth, in the end, it was just javascript which is still single-threaded.&lt;/p&gt;

&lt;p&gt;So let's deep dive and have a look at the javascript engine, some awesome facts, and much more.&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;strong&gt;Javascript Engine ⚙️&lt;/strong&gt;
&lt;/h1&gt;

&lt;p&gt;We already know that javascript is a single-threaded application and it uses a callback apart from that we also know that javascript is an interpreted language as well. &lt;/p&gt;

&lt;h3&gt;
  
  
  But what the hell is interpreted language mean?
&lt;/h3&gt;

&lt;p&gt;Let's understand better with a code&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;iAmDeveloper&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;How does the computer read this, technically speaking computer really can't understand the meaning of the above code so if you just throw a javascript file to the CPU it might go crazy as it won't understand a thing?&lt;br&gt;
Since a computer can only understand 1's and 0's.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F919i8xucd11cukicz2pn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F919i8xucd11cukicz2pn.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So to make a computer understand our javascript file, the developer introduced a Javascript engine. Javascript Engine will understand the file and will tell the computer what to do.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fnh4dvg2l6k25ms3zo5ob.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fnh4dvg2l6k25ms3zo5ob.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So for a layman engine is nothing but a translator that helps the CPU understand what basically the code is all about and this special engine understand javascript and hence the javascript engine.&lt;br&gt;
&lt;a href="https://en.wikipedia.org/wiki/List_of_ECMAScript_engines" rel="noopener noreferrer"&gt;Here&lt;/a&gt; is the list of all the javascript engine. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Did someone say EcmaScript Engine? will have a look at it in the latter part of this post.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;All the above engines are written by some of the other developers but what is the need to write these engines when there is some other engine already available?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fgj5rayx408387nqdmalk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fgj5rayx408387nqdmalk.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To answer the above question lets open a google map on our browser, did you notice anything maps are so fast and snappy, you can easily hover the map, zoom in or zoom out, scroll the areas, ask for directions, and whatnot. From the developer's eye, this process is heavy and require a decent amount of power-optimized code, all the engine that exists already would make google maps very slow so google has to write there own engine to optimize their maps and run them much faster. So Google decided to build their own browser and they decided to write their own engine which is none other than the &lt;em&gt;V8 engine&lt;/em&gt; which was released in 2008.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F1hci1w9uvtlagzovb1pg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F1hci1w9uvtlagzovb1pg.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Fun Fact 1&lt;/strong&gt;: First javascript engine named spider monkey was created by Brandon Eich who is also the creator of javascript. This engine is also known for running the &lt;em&gt;firefox browser&lt;/em&gt;👏👏. &lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1&gt;
  
  
  &lt;strong&gt;Inside the Engine📦&lt;/strong&gt;
&lt;/h1&gt;
&lt;h4&gt;
  
  
  Our Understanding So Far...
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;We know that Javascript Engine takes &lt;code&gt;JS file&lt;/code&gt; and convert it to machine-readable code&lt;/li&gt;
&lt;li&gt;We can also see that there are many javascript engines made by a different developer and one of them is the V8 Engine
&lt;/li&gt;
&lt;li&gt;In the end engine is nothing but a program and anyone can write the engine. &lt;code&gt;V8 Engine is written in c++&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;let's see what is happening inside this engine.&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fa10swuqfoqqb88u4dg02.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fa10swuqfoqqb88u4dg02.png" alt="JS Engine"&gt;&lt;/a&gt;&lt;br&gt;
Inside the engine, a JS file is passed to the engine and is executed at different steps. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Let's have a look at these steps one by one&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Parser&lt;/strong&gt; -: This is the very first step, which is also known as lexical analysis. Parser breaks the code into small pieces which are known as tokens. This helps to identify what the code is actually trying to do.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;AST(Abstract Syntax Tree)&lt;/strong&gt; -: The tokens generated in step one are formed into a tree-like structure known as AST.There is a fun tool to visualize the AST &lt;a href="https://astexplorer.net/" rel="noopener noreferrer"&gt;astexplorer.net&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Interpreter&lt;/strong&gt; -:  Once the AST is formed it goes into the interpreter and to 4. A compiler that spits out a machine-readable code that gets understand by the CPU.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Let's try to create our own engine to better understand the interpreter and compiler.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;myEngine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;code&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;code&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;split&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sr"&gt;/&lt;/span&gt;&lt;span class="se"&gt;\s&lt;/span&gt;&lt;span class="sr"&gt;+/&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nf"&gt;myengine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;var a = 1&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;//['var','a','=','5']&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So we created our own engine, which can understand the code. This is a very layman engine and there are many more complexities involved in the process. But in the end, the real V8 engine is doing something like this but at a much granular and advanced level using C++.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;So, can we say that anybody can create the javascript engine?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Yes, but we already saw a list of JS engines which are known as ECMAScript engines. Imagine everybody creating their own javascript engine(&lt;em&gt;well I can smell some chaos there&lt;/em&gt;). To prevent chaos ECMA (the governing body of javascript) was created which set some predefined standards on how things should work in javascript.&lt;/p&gt;

&lt;p&gt;This is the reason it is called the ECMAScript engine, not a javascript engine because anyone can create a javascript engine just like we did above but to include your JS engine into the ECMAScript engine you need to follow certain guidelines.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Fun Fact 2 🧐&lt;/strong&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Chakra: Javascript engine used in Edge&lt;/li&gt;
&lt;li&gt;V8: Javascript engine used in Chrome.&lt;/li&gt;
&lt;li&gt;Carakan: Javascript engine used in Opera.&lt;/li&gt;
&lt;li&gt;SpiderMonkey: Javascript engine used in Mozilla Firefox.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So now you know why things don't really work with the internet explorer(Pun intended😂 )&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So google one of the tech giants really work on its own engine &lt;em&gt;V8&lt;/em&gt; round the clock to make it faster than before, so that more and more people can use their services and application.&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;strong&gt;Interpreter and Compiler&lt;/strong&gt;
&lt;/h1&gt;

&lt;p&gt;So we know that the interpreter and compiler are one of the most important parts of the JS engine. Technically the concept of interpreter and compiler is not limited to just Javascript but can also be seen in other languages like python, JAVA, etc.&lt;/p&gt;

&lt;h4&gt;
  
  
  Interpreter
&lt;/h4&gt;

&lt;p&gt;In the interpreter, the file is translated and read line by line on the fly.&lt;/p&gt;

&lt;p&gt;Let's say we have the following code&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;someAddition&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt; &lt;span class="c1"&gt;//line 1&lt;/span&gt;
&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;x&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;y&lt;/span&gt; &lt;span class="c1"&gt;//line 2&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="c1"&gt;//line 3&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt; &lt;span class="c1"&gt;//line 4&lt;/span&gt;
&lt;span class="nf"&gt;someAddition&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="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;//line 5&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="c1"&gt;//line 6&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In the above code, we are just looping thru a function 100 times and returning our result.The output will be&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="cm"&gt;/*
9
9
9
.
.
.
9
*/&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;So, if we give the above code JS file to the interpreter, the translation will happen line by line on the fly. In the above code, the interpreter will read from line 1 to line 3 and will mark that as a function. And will go to the next part from &lt;strong&gt;line 4 to line 6&lt;/strong&gt; and will start looping the function that it encountered from &lt;em&gt;line 1 to line 3(someAddition)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;We can say that interpreting code simple means taking a set of instructions and returning an answer and doing something. Initially, that's how javascript works it is interpreting using some sets of instruction.&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;strong&gt;So how does a compiler works?&lt;/strong&gt;
&lt;/h1&gt;

&lt;p&gt;Unlike interpreter compiler doesn't translate on the fly, what it does is compiles down to create a translation or language about what code actually does. The compiled version of our code is used by the machine to understand the actual code at the machine level.&lt;/p&gt;

&lt;p&gt;if we pass the same code to the compiler, instead of reading line by line it will read everything at 1 pass. Technically it will take the program in javascript or any other language and compiles down to a new language mainly machine code.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fdflu7uu08ypj536c6vre.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fdflu7uu08ypj536c6vre.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So basically every language is compiled and interpreted and there are a lot of layers that are involved. We have to keep one thing in mind that there are 2 ways to run javascript using an &lt;strong&gt;interpreter&lt;/strong&gt; or &lt;strong&gt;compiler&lt;/strong&gt;.&lt;br&gt;
&lt;em&gt;Why do you think there is a need for an interpreter or compiler both? is it possible that the interpreter is better than the compiler or vice versa&lt;/em&gt;? Well, we will find out that in the next part of this blog, till then stay tuned&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Fun Fact 3🧐&lt;/strong&gt;&lt;br&gt;
Have you heard of Babel or typescript?&lt;br&gt;
Babel is a Javascript compiler that takes your modern JS code and returns browser compatible JS (older JS code). Typescript is a superset of Javascript that compiles down to Javascript.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Icons made by &lt;a href="https://www.flaticon.com/authors/flat-icons" title="Flat Icons" rel="noopener noreferrer"&gt;Flat Icons&lt;/a&gt; from &lt;a href="https://www.flaticon.com/" title="Flaticon" rel="noopener noreferrer"&gt; &lt;/a&gt;&lt;a href="http://www.flaticon.com" rel="noopener noreferrer"&gt;www.flaticon.com&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>codenewbie</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>What are your preferred ways of hosting a blog? I like static blog hosted on s3 or netlify</title>
      <dc:creator>kartik puri</dc:creator>
      <pubDate>Wed, 08 Jul 2020 05:48:27 +0000</pubDate>
      <link>https://forem.com/kartikpuri95/what-are-your-preferred-ways-of-hosting-a-blog-i-like-static-blog-hosted-on-s3-or-netlify-4d3l</link>
      <guid>https://forem.com/kartikpuri95/what-are-your-preferred-ways-of-hosting-a-blog-i-like-static-blog-hosted-on-s3-or-netlify-4d3l</guid>
      <description>

</description>
      <category>discuss</category>
    </item>
    <item>
      <title>Let's Understand the bitcoin by trying to hack them</title>
      <dc:creator>kartik puri</dc:creator>
      <pubDate>Sun, 28 Jun 2020 09:51:59 +0000</pubDate>
      <link>https://forem.com/kartikpuri95/let-s-understand-the-bitcoin-by-trying-to-hack-them-1hnp</link>
      <guid>https://forem.com/kartikpuri95/let-s-understand-the-bitcoin-by-trying-to-hack-them-1hnp</guid>
      <description>&lt;p&gt;It all started in 2008 by an unknown person or group of people named Satoshi Nakamoto. I still remember the ads popping up on my pc while playing games &lt;strong&gt;“buy bitcoin”&lt;/strong&gt;. Well, that time in 2010 &lt;strong&gt;1 bitcoin&lt;/strong&gt; was almost \$0.004 I wish if I could travel back in time. But now the party is over and we are in the present regretting the past.&lt;/p&gt;

&lt;p&gt;Bitcoin is created, distributed, traded, and stored with the use of a decentralized ledger system known as a blockchain. To hack the bitcoin we need to hack the blockchain. Blockchain is a digital concept of storing the data in a much-secured manner. Let's start by understanding a single block of data&lt;/p&gt;

&lt;h1&gt;
  
  
  Single Block Of data
&lt;/h1&gt;

&lt;p&gt;Visualize a block of some data consisting of name and address&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--SSTVzDsW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/400/1%2AiOSuJE1G0pq23_rxMZl7bQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--SSTVzDsW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/400/1%2AiOSuJE1G0pq23_rxMZl7bQ.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;These blocks are now chained to other blocks and their data can never be altered again. These chains are now publicly available to everyone. This technique allows us to keep records of anything. In the case of bitcoins its the transaction data which is stored inside the block. Information cannot be altered once it's inside the blockchain.&lt;/p&gt;

&lt;h1&gt;
  
  
  BlockChain
&lt;/h1&gt;

&lt;p&gt;When these blocks of information are chained together they are known as the blockchain. Let compare these 2 blocks Block 1 and Block 2 both the blocks have some transactional data which is T1 and T2 respectively.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--hL1Fvvbr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1000/1%2Al87vYTL2uOtjVDCzSd49oQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--hL1Fvvbr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1000/1%2Al87vYTL2uOtjVDCzSd49oQ.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To chain one block to another block we need to generate a hash or a unique digital signature that corresponds to the data inside the block in our case its the transactional data. Each block stores the hash of the previous block if anything inside the block is changed even a single-digit the whole hash is updated. In computer science, we call this method as hashing.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ewh9xKNT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1400/1%2AY7iLD7xizBybkwVvJ4jpBA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ewh9xKNT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1400/1%2AY7iLD7xizBybkwVvJ4jpBA.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let's say block 1 generates a hash &lt;strong&gt;YXX23&lt;/strong&gt; by adding this hash to block 2 we are chaining them together. Once this hash is added to block 2 it will be the part of block 2 data. Now, if block 2 tries to generate its hash it will be generated by keeping the hash of block 1. Remember by changing even a single line of data inside block 1 it will completely change the generated hash. To chain the blockchain we need to add the hash of block 1 to block 2.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--apQcKzTG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1400/1%2AoTJYCUg-cqRXt173zY56_Q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--apQcKzTG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1400/1%2AoTJYCUg-cqRXt173zY56_Q.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Generated hash is not always the qualified hash. A block is only be accepted if its hash starts with a certain pattern. For example 6 consecutive Zeroes &lt;strong&gt;000000xff23jgkaj3hiflerihldsak93ildjlgas&lt;/strong&gt; (this is how a real hash looks like). Even a small change will update the hash string. A small piece of string is added to the block which is known as a &lt;strong&gt;nonce&lt;/strong&gt;. To find the qualified hash, nonce or newly added string of data is changed repeatedly until the qualified hash is generated with the specific pattern, the process of calculating the qualified hash is known as &lt;strong&gt;mining&lt;/strong&gt; (Mining is the whole new topic to discuss).&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A transaction is &lt;strong&gt;a transfer of value between Bitcoin wallets&lt;/strong&gt; that gets included in the blockchain. Bitcoin wallets keep a secret piece of data called a &lt;a href="https://bitcoin.org/en/vocabulary#private-key"&gt;&lt;em&gt;private key&lt;/em&gt;&lt;/a&gt; or seed, which is used to sign transactions, providing a mathematical proof that they have come from the owner of the wallet. The &lt;a href="https://bitcoin.org/en/vocabulary#signature"&gt;&lt;em&gt;signature&lt;/em&gt;&lt;/a&gt; also prevents the transaction from being altered by anybody once it has been issued. All transactions are broadcast to the network and usually begin to be confirmed within 10–20 minutes, through a process called &lt;a href="https://bitcoin.org/en/vocabulary#mining"&gt;&lt;em&gt;mining&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h1&gt;
  
  
  Let's hack the blockchain
&lt;/h1&gt;

&lt;p&gt;We have understood the raw idea behind the blockchain, now let's start hacking the blockchain by manipulating the transaction at block 1. If we changed the transaction detail in block 1, a new hash is generated. Hash generated by block 2 was based on the previous hash generated by block 1. Since the new hash is generated for block 1 the chain between block 1 and block 2 will be broken.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--CCGqd7t5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1400/1%2AiQPMCXkT18PJn-bz0fKUrg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--CCGqd7t5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1400/1%2AiQPMCXkT18PJn-bz0fKUrg.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Since the hash of block one is updated block 2 hash will change since block 2 hash was based on block 1 hash. If block 2 hash is changed block 3 hash will suffer and the chain will be broken between block 2 and block 3. A small change in block 1 will act as a chain reaction and complete blockchain will be destroyed.&lt;/p&gt;

&lt;p&gt;Now in order to make our hack successful, we need to calculate the hash pattern from block 1 and keep on calculating the new hash of every block till the end of the chain(It's not that easy as new blocks are kept on adding)&lt;/p&gt;

&lt;p&gt;This is how a blockchain details look like&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--DLArccQ0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1940/1%2ApUM78S7mRn2M5wHhAZU_Vw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--DLArccQ0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1940/1%2ApUM78S7mRn2M5wHhAZU_Vw.png" alt="[https://www.blockchain.com/btc/block/0000000000000000000f35a2965c989ef6bee324ceeb7f7bbb0c94b77aa6c6a3](https://www.blockchain.com/btc/block/0000000000000000000f35a2965c989ef6bee324ceeb7f7bbb0c94b77aa6c6a3)"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The above block was recently added with the depth of *&lt;em&gt;#621123. *&lt;/em&gt;(At the time of writing this post)**&lt;br&gt;
*&lt;em&gt;Note the hash value, finding the hash like this is not at all easy it requires a crazy amount of computational power to calculate, imagine the computational power required to change and update the blocks till *&lt;/em&gt;#621123 **and still counting. Giving all this block a new number or digital signature or hash will be very costly.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Q1SDQRql--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1400/1%2AXieGHeUlAjOaXRItTSdV3Q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Q1SDQRql--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1400/1%2AXieGHeUlAjOaXRItTSdV3Q.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The rest of the network keeps on calculating the new hash for every subsequent block since millions of users are mining the bitcoin. So even if a corrupt miner tries updating the block 1 he will have to recalculate all the blocks as well as all the new blocks which are being added at the end of the chain for that he needs to have more computational power than the rest of the world, which is practically impossible to have. Unless everyone stops mining the bitcoins.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Such types of attacks are known as the 51 % attack as you would need more than 50% of computational power to execute the hack&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;&lt;em&gt;PS: I am migrating a few of my medium posts to dev.to&lt;/em&gt;&lt;br&gt;
 &lt;a id="p210o1m7twVXXQE6HPwuP8FWHF" href="https://google.com"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--XUVTQxZr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://img.shields.io/static/v1%3Flabel%3DBlogNFT%26message%3DMinted%26color%3D9cf"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>cryptocurrency</category>
      <category>bitcoin</category>
      <category>hacking</category>
      <category>blockchain</category>
    </item>
    <item>
      <title>Let your terminal greet you like a pro</title>
      <dc:creator>kartik puri</dc:creator>
      <pubDate>Wed, 24 Jun 2020 11:37:47 +0000</pubDate>
      <link>https://forem.com/kartikpuri95/let-your-terminal-greet-you-like-a-pro-4hka</link>
      <guid>https://forem.com/kartikpuri95/let-your-terminal-greet-you-like-a-pro-4hka</guid>
      <description>&lt;p&gt;If you are a developer, the terminal is your one-stop for most of your day to day development activities. As a developer we made sure that our coding setup looks great, we have an amazing dark theme or minimal setup, etc, etc..&lt;/p&gt;

&lt;p&gt;Recently I thought of making my terminal look geekier so I just added an &lt;code&gt;echo&lt;/code&gt; in my &lt;code&gt;bashrc&lt;/code&gt; file but that was not enough it has to look cool right? I just added the ASCCI representation of my profile picture.&lt;/p&gt;

&lt;p&gt;So let's start by getting an image, I used one my own image that I created using gimp you can find the tutorial &lt;a href="https://www.youtube.com/watch?v=cjy7pOvEcBU"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Create an ASCII art of your image
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--6k31FNTB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/ady222t04udeaiq0g321.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--6k31FNTB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/ady222t04udeaiq0g321.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can visit &lt;a href="https://asciiart.club/"&gt;asciiart&lt;/a&gt; URL and convert your image into an ASCII version.&lt;/p&gt;

&lt;p&gt;If you don't have an image you can find some beautiful ASCII art at &lt;a href="https://www.asciiart.eu/"&gt;ascii art archive&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There are various tools to generate ASCII text I have used this one &lt;a href="http://patorjk.com/software/taag/#p=display&amp;amp;f=Graffiti&amp;amp;t=Type%20Something%20"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Let's get the things ready
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;First, open your terminal and create a new file
&lt;code&gt;nano mygreeting&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Next, copy and paste you ASCII art and text to this file
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--VCbpsUqu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/m06mwxkcw1uk9myi03mb.png" alt="nano terminal"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can hit a few tabs to adjust in the center and save the file to use in future&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Let's revive our terminal and add this as a greeting message
&lt;/h3&gt;

&lt;p&gt;Now, we need to display the content of our file created in step 2 to get displayed in the terminal as soon as it is fired up&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Open your bashrc file&lt;br&gt;
&lt;code&gt;nano ~/.bashrc&lt;/code&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--pQpPPr_7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/gj7vjtmuboqv6xm9gnvs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pQpPPr_7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/gj7vjtmuboqv6xm9gnvs.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Add a small line at the bottom &lt;code&gt;cat mygreeting&lt;/code&gt; and it's done &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Fire up your terminal to have a look at your beautiful message waiting for you&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--IIIhdan4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/t7cgzd4o7wc2o3gf45ln.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--IIIhdan4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/t7cgzd4o7wc2o3gf45ln.png" alt="Amazing right?"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Cakewalk right !! Go ahead and try this let me know your thoughts in the comment section.&lt;/p&gt;

&lt;p&gt;Thanks for reading!!&lt;br&gt;
 &lt;a id="6qT1gytDsSSXyi3BnJiewifRRHB3" href="https://blogtonft.com"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--IPLlByg8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://img.shields.io/static/v1%3Flabel%3DMinted%2520At%26message%3DBlogToNFT%26color%3D7c3aed%26logo%3Dleaflet%26logoColor%3Dgreen/"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>linux</category>
      <category>bash</category>
      <category>ubuntu</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
