<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Sahil Rajput</title>
    <description>The latest articles on DEV Community by Sahil Rajput (@sahilrajput).</description>
    <link>https://dev.to/sahilrajput</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%2F111589%2F0f2a16b8-87a7-4161-8d68-29c61144bb0d.jpeg</url>
      <title>DEV Community: Sahil Rajput</title>
      <link>https://dev.to/sahilrajput</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sahilrajput"/>
    <language>en</language>
    <item>
      <title>Create and publish python package in few simple steps</title>
      <dc:creator>Sahil Rajput</dc:creator>
      <pubDate>Sat, 25 Apr 2020 09:42:56 +0000</pubDate>
      <link>https://dev.to/sahilrajput/create-and-publish-python-package-in-few-simple-steps-i0j</link>
      <guid>https://dev.to/sahilrajput/create-and-publish-python-package-in-few-simple-steps-i0j</guid>
      <description>&lt;p&gt;Today I thought of creating a python package. I saw few tutorials online but didn't find a useful article. So I thought of creating one.&lt;/p&gt;

&lt;p&gt;In this article I will tell you how to create and publish python package on &lt;a href="https://pypi.org"&gt;PyPI&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;First you need to create a functionality. Here I will write a function in which you will pass the excel and it will return JSON response. &lt;/p&gt;

&lt;p&gt;Like this:&lt;/p&gt;

&lt;p&gt;Excel Format&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--DCpUXkOC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://user-images.githubusercontent.com/20112458/80275568-c352fe00-86ff-11ea-92b9-688fd6ad9a3c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--DCpUXkOC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://user-images.githubusercontent.com/20112458/80275568-c352fe00-86ff-11ea-92b9-688fd6ad9a3c.png" alt="img"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Response:&lt;/p&gt;

&lt;pre&gt;
[
   {
      "Name":"Rat",
      "Phone Number":"99999999",
      "Email":"rat@example.com"
   },
   {
      "Name":"Cat",
      "Phone Number":"88888888",
      "Email":"cat@example.com"
   },
   {
      "Name":"Dog",
      "Phone Number":"77777777",
      "Email":"dog@example.com"
   }
]
&lt;/pre&gt;
 

&lt;p&gt;My package name is &lt;b&gt;&lt;a href="https://github.com/sahil-rajput/excel2jsonapi"&gt;excel2jsonapi&lt;/a&gt;&lt;/b&gt; (make sure it is unique).&lt;/p&gt;

&lt;h5&gt;Let's start&lt;/h5&gt;

&lt;p&gt;Step 1: Register your self at &lt;a href="https://pypi.org/account/register/"&gt;PyPI&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Step 2: Create directory structure like this&lt;/p&gt;

&lt;pre&gt;
excel2jsonapi/
    excel2jsonapi/
        __init__.py
    setup.py
&lt;/pre&gt;

&lt;p&gt;Step 3: Write your code in __ init __.py&lt;/p&gt;

&lt;p&gt;Here's mine&lt;/p&gt;

&lt;pre&gt;
import xlrd

def create(file_path):
    try:
        wb = xlrd.open_workbook(file_path)
        sheet = wb.sheet_by_index(0)
    except Exception:
        return "Error: Cannot read the excel. Please make sure you have entered the correct path."

    response = []
    for i in range(1, sheet.nrows):
        value = {}
        for j in range(0,sheet.ncols):
            temp = {}
            try:
                data = str(sheet.cell_value(i, j))
                temp[sheet.cell_value(0, j)] = data
                value.update(temp)
            except Exception:
                pass
        response.append(value)
    return response
&lt;/pre&gt;

&lt;p&gt;Step 4: Open &lt;i&gt;setup.py&lt;/i&gt; and write this and update accordingly.&lt;/p&gt;

&lt;pre&gt;
from setuptools import setup

setup(name='excel2jsonapi',
      version='0.1',
      description='Convert excel into json response',
      url='https://github.com/sahil-rajput/excel2jsonapi',
      author='Sahil Rajput',
      author_email='email@examlple.com',
      license='MIT',
      packages=['excel2jsonapi'],
      zip_safe=False)
&lt;/pre&gt;

&lt;p&gt;Now let's test the package locally.&lt;/p&gt;

&lt;pre&gt;
$ pip install .
$ pip install -e .
&lt;/pre&gt;

&lt;p&gt;Now anywhere open the terminal and write python.&lt;/p&gt;

&lt;pre&gt;
&amp;gt;&amp;gt;&amp;gt; import excel2jsonapi
&amp;gt;&amp;gt;&amp;gt; excel2jsonapi.create('~/Desktop/excel2jsonapi/example/sample.xlsx')
&lt;/pre&gt;

&lt;p&gt;Response:&lt;/p&gt;

&lt;pre&gt;
[
   {
      "Name":"Rat",
      "Phone Number":"99999999",
      "Email":"rat@example.com"
   },
   {
      "Name":"Cat",
      "Phone Number":"88888888",
      "Email":"cat@example.com"
   },
   {
      "Name":"Dog",
      "Phone Number":"77777777",
      "Email":"dog@example.com"
   }
]
&lt;/pre&gt;

&lt;p&gt;Before publishing make sure to create a source distribution with:&lt;/p&gt;

&lt;pre&gt;
$ python setup.py sdist
&lt;/pre&gt;

&lt;p&gt;Now, let's publish it on PyPI.&lt;/p&gt;

&lt;p&gt;Upload your project on PyPI using &lt;a href="https://pypi.org/project/twine/"&gt;twine&lt;/a&gt;.&lt;/p&gt;

&lt;pre&gt;
twine upload dist/*
&lt;/pre&gt;

&lt;p&gt;After that it will ask your username and password and publish it.&lt;/p&gt;

&lt;p&gt;If you see some error like this:&lt;/p&gt;

&lt;pre&gt;
HTTPError: 403 Client Error: The user '' isn't allowed to upload to project.
&lt;/pre&gt;

&lt;p&gt;Then your project name is already taken. Try different name.&lt;/p&gt;

&lt;p&gt;You can see the &lt;b&gt;excel2jsonapi&lt;/b&gt; package here:&lt;br&gt;
&lt;a href="https://pypi.org/project/excel2jsonapi/"&gt;https://pypi.org/project/excel2jsonapi/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here is the full project: &lt;br&gt;
&lt;a href="https://github.com/sahil-rajput/excel2jsonapi"&gt;https://github.com/sahil-rajput/excel2jsonapi&lt;/a&gt;&lt;/p&gt;

</description>
      <category>python</category>
      <category>pip</category>
      <category>package</category>
      <category>excel2json</category>
    </item>
    <item>
      <title>#HacktoberFest2019 Goodies</title>
      <dc:creator>Sahil Rajput</dc:creator>
      <pubDate>Fri, 06 Dec 2019 05:33:42 +0000</pubDate>
      <link>https://dev.to/sahilrajput/hacktoberfest2019-goodies-3fd3</link>
      <guid>https://dev.to/sahilrajput/hacktoberfest2019-goodies-3fd3</guid>
      <description>&lt;p&gt;I recently got my #hacktoberfest goodies. &lt;/p&gt;

&lt;p&gt;Now this is how my laptop looks like.&lt;/p&gt;


&lt;blockquote class="ltag__twitter-tweet"&gt;
      &lt;div class="ltag__twitter-tweet__media"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--N0tu4Odm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/media/EK7xqvsU0AIR-YY.jpg" alt="unknown tweet media content"&gt;
      &lt;/div&gt;

  &lt;div class="ltag__twitter-tweet__main"&gt;
    &lt;div class="ltag__twitter-tweet__header"&gt;
      &lt;img class="ltag__twitter-tweet__profile-image" src="https://res.cloudinary.com/practicaldev/image/fetch/s--KkjO49dX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/1172373285108994048/yoZN457f_normal.jpg" alt="Sahil Rajput profile image"&gt;
      &lt;div class="ltag__twitter-tweet__full-name"&gt;
        Sahil Rajput
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__username"&gt;
        @_sahilrajput
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__twitter-logo"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--P4t6ys1m--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/twitter-f95605061196010f91e64806688390eb1a4dbc9e913682e043eb8b1e06ca484f.svg" alt="twitter logo"&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__body"&gt;
      &lt;a href="https://twitter.com/hashtag/hacktoberfest2019"&gt;#hacktoberfest2019&lt;/a&gt; &lt;a href="https://twitter.com/ThePracticalDev"&gt;@ThePracticalDev&lt;/a&gt; &lt;a href="https://twitter.com/digitalocean"&gt;@digitalocean&lt;/a&gt; 
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__date"&gt;
      09:52 AM - 04 Dec 2019
    &lt;/div&gt;


    &lt;div class="ltag__twitter-tweet__actions"&gt;
      &lt;a href="https://twitter.com/intent/tweet?in_reply_to=1202163882334097408" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-reply-action.svg" alt="Twitter reply action"&gt;
      &lt;/a&gt;
      &lt;a href="https://twitter.com/intent/retweet?tweet_id=1202163882334097408" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-retweet-action.svg" alt="Twitter retweet action"&gt;
      &lt;/a&gt;
      0
      &lt;a href="https://twitter.com/intent/like?tweet_id=1202163882334097408" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-like-action.svg" alt="Twitter like action"&gt;
      &lt;/a&gt;
      4
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;


&lt;p&gt;Share yours in the comments&lt;/p&gt;

</description>
      <category>hacktoberfest</category>
    </item>
    <item>
      <title>Create and publish your first Chrome extension in just 5 steps.</title>
      <dc:creator>Sahil Rajput</dc:creator>
      <pubDate>Sun, 30 Jun 2019 13:30:31 +0000</pubDate>
      <link>https://dev.to/sahilrajput/create-and-publish-your-first-chrome-extension-in-just-5-steps-3c3n</link>
      <guid>https://dev.to/sahilrajput/create-and-publish-your-first-chrome-extension-in-just-5-steps-3c3n</guid>
      <description>&lt;h4&gt;
  
  
  What is Chrome Extension?
&lt;/h4&gt;

&lt;blockquote&gt;
&lt;p&gt;Extensions are small software programs that customize the browsing experience. They enable users to tailor Chrome functionality and behavior to individual needs or preferences. They are built on web technologies such as HTML, JavaScript, and CSS.  — &lt;a href="https://developer.chrome.com/extensions" rel="noopener noreferrer"&gt;Chrome Developer&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h4&gt;
  
  
  Getting Started
&lt;/h4&gt;

&lt;p&gt;Before directly deep diving into the development part. First take a step back and think  &lt;strong&gt;&lt;em&gt;What you want to create?&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Today, we are creating an extension which will show new quotes whenever user will switch to new tab.&lt;/p&gt;

&lt;h4&gt;
  
  
  Step 1: Tell Chrome about your extension
&lt;/h4&gt;

&lt;p&gt;We have to create a manifest file in JSON format that contains details of your extension like extension’s name, description and so on.&lt;/p&gt;

&lt;p&gt;For this extension we need permission like  &lt;strong&gt;activeTab.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Open a file name  &lt;strong&gt;manifest.json&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{    
  "manifest_version": 2,

  "name": "QuoteThat",    
  "description": "An Extension which show quotes whenever user switch to new tab. It will work offline and change quote in every 60 seconds.",    
  "version": "1.0.0",    
  "chrome_url_overrides" : {  
    "newtab": "newtab.html"    
  },  
  "browser_action":{      
    "default_icon": "icon.png"    
  },  
  "permissions": ["activeTab"]  
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;As, you can see in “&lt;em&gt;newtab&lt;/em&gt;” we want  _newtab.html_that will render everytime whenever user switch to new tab.&lt;/p&gt;

&lt;h4&gt;
  
  
  Step2: Make HTML file
&lt;/h4&gt;

&lt;p&gt;Open  &lt;strong&gt;newtab.html&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;/span&gt;  
&lt;span class="nt"&gt;&amp;lt;html&amp;gt;&lt;/span&gt;  
&lt;span class="nt"&gt;&amp;lt;head&amp;gt;&lt;/span&gt;  
  &lt;span class="nt"&gt;&amp;lt;title&amp;gt;&lt;/span&gt;New Tab&lt;span class="nt"&gt;&amp;lt;/title&amp;gt;&lt;/span&gt;  
&lt;span class="nt"&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;  
&lt;span class="nt"&gt;&amp;lt;body&amp;gt;&lt;/span&gt;  
  &lt;span class="nt"&gt;&amp;lt;blockquote&amp;gt;&lt;/span&gt;  
    &lt;span class="nt"&gt;&amp;lt;center&amp;gt;&lt;/span&gt;  
      &lt;span class="nt"&gt;&amp;lt;p&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"quote"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/p&amp;gt;&lt;/span&gt;  
      &lt;span class="nt"&gt;&amp;lt;footer&amp;gt;&lt;/span&gt;   
        &lt;span class="nt"&gt;&amp;lt;cite&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"author"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/cite&amp;gt;&lt;/span&gt;  
      &lt;span class="nt"&gt;&amp;lt;/footer&amp;gt;&lt;/span&gt;  
    &lt;span class="nt"&gt;&amp;lt;/center&amp;gt;&lt;/span&gt;  
  &lt;span class="nt"&gt;&amp;lt;/blockquote&amp;gt;&lt;/span&gt;  
&lt;span class="nt"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;  
&lt;span class="nt"&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Add some  &lt;strong&gt;CSS&lt;/strong&gt; to make your page beautiful.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;style&amp;gt;&lt;/span&gt;  
    &lt;span class="nt"&gt;body&lt;/span&gt;   
    &lt;span class="p"&gt;{&lt;/span&gt;  
      &lt;span class="nl"&gt;background-image&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sx"&gt;url("back.jpg")&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;   
      &lt;span class="nl"&gt;-webkit-background-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;cover&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;  
      &lt;span class="nl"&gt;-moz-background-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;cover&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;  
      &lt;span class="nl"&gt;-o-background-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;cover&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;  
      &lt;span class="nl"&gt;background-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;cover&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;  
      &lt;span class="nl"&gt;position&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;absolute&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;  
      &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;70%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;  
      &lt;span class="nl"&gt;top&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;25%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;  
      &lt;span class="nl"&gt;left&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;  
      &lt;span class="nl"&gt;right&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;  
      &lt;span class="nl"&gt;margin&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;auto&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;  
    &lt;span class="p"&gt;}&lt;/span&gt;  
    &lt;span class="nt"&gt;p&lt;/span&gt;   
    &lt;span class="p"&gt;{&lt;/span&gt;  
     &lt;span class="nl"&gt;font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;35px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;  
     &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;white&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;  
    &lt;span class="p"&gt;}&lt;/span&gt;  
    &lt;span class="nt"&gt;cite&lt;/span&gt;   
    &lt;span class="p"&gt;{&lt;/span&gt;  
      &lt;span class="nl"&gt;font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;25px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;  
      &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;yellow&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;  
    &lt;span class="p"&gt;}&lt;/span&gt;  
&lt;span class="nt"&gt;&amp;lt;/style&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So, your  &lt;strong&gt;newtab.html&lt;/strong&gt;will look like this&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;/span&gt;  
&lt;span class="nt"&gt;&amp;lt;html&amp;gt;&lt;/span&gt;  
&lt;span class="nt"&gt;&amp;lt;head&amp;gt;&lt;/span&gt;  
  &lt;span class="nt"&gt;&amp;lt;title&amp;gt;&lt;/span&gt;New Tab&lt;span class="nt"&gt;&amp;lt;/title&amp;gt;&lt;/span&gt;  
  &lt;span class="nt"&gt;&amp;lt;style&amp;gt;&lt;/span&gt;  
    &lt;span class="nt"&gt;body&lt;/span&gt;   
    &lt;span class="p"&gt;{&lt;/span&gt;  
      &lt;span class="nl"&gt;background-image&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sx"&gt;url("back.jpg")&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;   
      &lt;span class="nl"&gt;-webkit-background-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;cover&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;  
      &lt;span class="nl"&gt;-moz-background-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;cover&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;  
      &lt;span class="nl"&gt;-o-background-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;cover&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;  
      &lt;span class="nl"&gt;background-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;cover&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;  
      &lt;span class="nl"&gt;position&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;absolute&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;  
      &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;70%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;  
      &lt;span class="nl"&gt;top&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;25%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;  
      &lt;span class="nl"&gt;left&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;  
      &lt;span class="nl"&gt;right&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;  
      &lt;span class="nl"&gt;margin&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;auto&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;  
    &lt;span class="p"&gt;}&lt;/span&gt;  
    &lt;span class="nt"&gt;p&lt;/span&gt;   
    &lt;span class="p"&gt;{&lt;/span&gt;  
     &lt;span class="nl"&gt;font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;35px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;  
     &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;white&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;  
    &lt;span class="p"&gt;}&lt;/span&gt;  
    &lt;span class="nt"&gt;cite&lt;/span&gt;   
    &lt;span class="p"&gt;{&lt;/span&gt;  
      &lt;span class="nl"&gt;font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;25px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;  
      &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;yellow&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;  
    &lt;span class="p"&gt;}&lt;/span&gt;  
  &lt;span class="nt"&gt;&amp;lt;/style&amp;gt;&lt;/span&gt;  
&lt;span class="nt"&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;  
&lt;span class="nt"&gt;&amp;lt;body&amp;gt;&lt;/span&gt;  
  &lt;span class="nt"&gt;&amp;lt;blockquote&amp;gt;&lt;/span&gt;  
    &lt;span class="nt"&gt;&amp;lt;center&amp;gt;&lt;/span&gt;  
      &lt;span class="nt"&gt;&amp;lt;p&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"quote"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/p&amp;gt;&lt;/span&gt;  
      &lt;span class="nt"&gt;&amp;lt;footer&amp;gt;&lt;/span&gt;   
        &lt;span class="nt"&gt;&amp;lt;cite&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"author"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/cite&amp;gt;&lt;/span&gt;  
      &lt;span class="nt"&gt;&amp;lt;/footer&amp;gt;&lt;/span&gt;  
    &lt;span class="nt"&gt;&amp;lt;/center&amp;gt;&lt;/span&gt;  
  &lt;span class="nt"&gt;&amp;lt;/blockquote&amp;gt;&lt;/span&gt;  
  &lt;span class="nt"&gt;&amp;lt;script &lt;/span&gt;&lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"jquery.min.js"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;  
  &lt;span class="nt"&gt;&amp;lt;script &lt;/span&gt;&lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"javascript.js"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;  
&lt;span class="nt"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;  
&lt;span class="nt"&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now, as you can see we added a Javascript file but before that let’s see a JSON file which contains quotes that will be shown in new tab.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;quotes.json&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[  
 [  
  "William James",  
  " Act as if what you do makes a difference. It does."  
 ],  
 [  
  "Bill Cosby",  
  " Decide that you want it more than you are afraid of it."  
 ],  
 [  
  "Judy Collins",  
  " I think people who are creative are the luckiest people on earth. I know that there are no shortcuts, but you must keep your faith in something Greater than You, and keep doing what you love. Do what you love, and you will find the way to get it out to the world."  
 ],  
 [  
  "Jessica Savitch",  
  " No matter how many goals you have achieved, you must set your sights on a higher one."  
 ],
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So, we can see that in json file we have a author and a quote. So, we will show the quote and its author.&lt;/p&gt;

&lt;p&gt;Now, let’s code  &lt;strong&gt;javascript.js&lt;/strong&gt;&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;Quote&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;callback&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;   
&lt;span class="p"&gt;{&lt;/span&gt;  
  &lt;span class="nx"&gt;$&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getJSON&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;quotes.json&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;   
  &lt;span class="p"&gt;{&lt;/span&gt;  
    &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;rN&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;round&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;random&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;  
    &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;author&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;rN&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;  
    &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;quote&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;rN&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;  
    &lt;span class="nf"&gt;callback&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;quote&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nx"&gt;author&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;  
  &lt;span class="p"&gt;});&lt;/span&gt;  
&lt;span class="p"&gt;};&lt;/span&gt;  
&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;changeQuote&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;   
&lt;span class="p"&gt;{&lt;/span&gt;  
  &lt;span class="nx"&gt;callback&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;quote&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;author&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;   
  &lt;span class="p"&gt;{&lt;/span&gt;  
    &lt;span class="nf"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;p#quote,cite#author&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;fadeOut&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;   
    &lt;span class="p"&gt;{&lt;/span&gt;  
      &lt;span class="nf"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;p#quote&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;text&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;quote&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;fadeIn&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;   
      &lt;span class="p"&gt;{&lt;/span&gt;  
        &lt;span class="nf"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;cite#author&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;text&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;author&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;fadeIn&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;  
      &lt;span class="p"&gt;});&lt;/span&gt;  
    &lt;span class="p"&gt;});&lt;/span&gt;  
  &lt;span class="p"&gt;};&lt;/span&gt;  
  &lt;span class="nc"&gt;Quote&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;callback&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;  
&lt;span class="p"&gt;};&lt;/span&gt;  
&lt;span class="nf"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;load&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;   
&lt;span class="p"&gt;{&lt;/span&gt;  
  &lt;span class="nf"&gt;changeQuote&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;  
  &lt;span class="nf"&gt;setInterval&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;changeQuote&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;60000&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;  
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The  &lt;strong&gt;function Quote()&lt;/strong&gt; will randomly choose the data from the quote.json file and callback with quote and it’s author.&lt;/p&gt;

&lt;p&gt;The  &lt;strong&gt;function changeQuote()&lt;/strong&gt; will change the quotes whenever it will be called. $(window).load(function(){})will call changeQuote() at every interval of time.&lt;/p&gt;

&lt;h4&gt;
  
  
  Step 3: See your extension working
&lt;/h4&gt;

&lt;p&gt;Go to Google Chrome -&amp;gt; Top right corner (Three dots)-&amp;gt; More tools -&amp;gt; Extension.&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%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F1%2AVLEGpYn8xJ5oh0wsD3cmjg.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%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F1%2AVLEGpYn8xJ5oh0wsD3cmjg.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After that turn on  &lt;strong&gt;Developer Option&lt;/strong&gt; and click on*&lt;em&gt;Load unpacked&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%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F1%2Ay1e4QBKqCmU7f0I6nRxUPg.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%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F1%2Ay1e4QBKqCmU7f0I6nRxUPg.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;and you will see you extension&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%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F1%2A5wr_mS4YQMlcN8BLv9ijwQ.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%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F1%2A5wr_mS4YQMlcN8BLv9ijwQ.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now, open a new tab to see your extension is working or not&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%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F1%2AgUbYcPAzJLhkhfZgCTj2XQ.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%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F1%2AgUbYcPAzJLhkhfZgCTj2XQ.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 5: Publish it&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Go to this  &lt;a href="https://chrome.google.com/webstore/developer/dashboard?pli=1" rel="noopener noreferrer"&gt;link&lt;/a&gt;and SignIn with your gmail account and click on  &lt;strong&gt;Add new item&lt;/strong&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%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F1%2APjR9VGSSBPw01K34C_tWcA.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%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F1%2APjR9VGSSBPw01K34C_tWcA.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Note:  &lt;em&gt;You have to pay US$5.00 to verify your account&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;After uploading your file, you will see a form in which you have to add information about your extension, add an icon, a detailed description and so on. See you extension on  &lt;a href="https://chrome.google.com/webstore/category/extensions" rel="noopener noreferrer"&gt;Chrome Web Store&lt;/a&gt; .&lt;/p&gt;

&lt;p&gt;You can see the full code on &lt;a href="https://github.com/sahil-rajput/QuoteThat" rel="noopener noreferrer"&gt;Github&lt;/a&gt;&lt;/p&gt;

</description>
      <category>chromeextension</category>
      <category>html</category>
      <category>css</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Build a Chatbot using Flask in 5 minutes</title>
      <dc:creator>Sahil Rajput</dc:creator>
      <pubDate>Sat, 29 Jun 2019 06:30:33 +0000</pubDate>
      <link>https://dev.to/sahilrajput/build-a-chatbot-using-flask-in-5-minutes-574i</link>
      <guid>https://dev.to/sahilrajput/build-a-chatbot-using-flask-in-5-minutes-574i</guid>
      <description>&lt;p&gt;Few weeks back I wrote a post  &lt;a href="https://dev.to/sahilrajput/build-your-first-chatbot-in-5-minutes--15e3"&gt;Build your first ChatBot in 5 minutes.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That bot was cool and you can talk through terminal. Today, let’s try to build the same bot with  &lt;a href="http://flask.pocoo.org/" rel="noopener noreferrer"&gt;Flask&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;So, we will use  &lt;a href="https://chatterbot.readthedocs.io/en/stable/" rel="noopener noreferrer"&gt;ChatterBot&lt;/a&gt;  which is a machine learning, conversational dialog engine for creating chat bots.&lt;/p&gt;

&lt;p&gt;If you haven’t read my previous post go  &lt;a href="https://dev.to/sahilrajput/build-your-first-chatbot-in-5-minutes--15e3"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Install ChatterBot
&lt;/h4&gt;

&lt;p&gt;&lt;code&gt;$ pip install ChatterBot&lt;/code&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Install Flask
&lt;/h4&gt;

&lt;p&gt;&lt;code&gt;$ pip install Flask&lt;/code&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Create a file
&lt;/h4&gt;

&lt;p&gt;&lt;code&gt;app.py&lt;/code&gt;  and open it&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;

&lt;span class="c1"&gt;#import files
&lt;/span&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;flask&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Flask&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;render_template&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;request&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;chatterbot&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;ChatBot&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;chatterbot.trainers&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;ChatterBotCorpusTrainer&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;chatterbot.trainers&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;ListTrainer&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Create a flask app&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;app&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Flask&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;__name__&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;and as we have seen in my  &lt;a href="https://dev.to/sahilrajput/build-your-first-chatbot-in-5-minutes--15e3"&gt;previous post&lt;/a&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;bot&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;ChatBot&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Candice&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;bot&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;set_trainer&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ListTrainer&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;bot&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;set_trainer&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ChatterBotCorpusTrainer&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;bot&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;train&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;chatterbot.corpus.english&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;and after this&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;

&lt;span class="nd"&gt;@app.route&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;/&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;home&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;    
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;render_template&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;home.html&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; 
&lt;span class="nd"&gt;@app.route&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;/get&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;get_bot_response&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;    
    &lt;span class="n"&gt;userText&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;msg&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;    
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;bot&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get_response&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;userText&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; 
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;__name__&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;__main__&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;    
    &lt;span class="n"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;run&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;So, as we can see we need to create a home.html file as a frontend.&lt;/p&gt;

&lt;p&gt;Create a folder “templates” and inside that create a file home.html.&lt;/p&gt;

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

templates/home.html


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Open home.html&lt;/p&gt;

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

  &amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html&amp;gt;
  &amp;lt;title&amp;gt;Candice&amp;lt;/title&amp;gt;
  &amp;lt;body&amp;gt;
    &amp;lt;center&amp;gt;
      &amp;lt;h1&amp;gt;
        Your Personal ChatBot
      &amp;lt;/h1&amp;gt;
    &amp;lt;/center&amp;gt;
      &amp;lt;div&amp;gt;
       &amp;lt;p&amp;gt;
          &amp;lt;center&amp;gt;&amp;lt;span&amp;gt;Hi! I'm Candice your personal ChatBot&amp;lt;/span&amp;gt;&amp;lt;/center&amp;gt;
          &amp;lt;/p&amp;gt;
       &amp;lt;/div&amp;gt;
       &amp;lt;div id="userInput"&amp;gt;
          &amp;lt;input id="textInput" type="text" name="msg" placeholder="Message" /&amp;gt;
       &amp;lt;/div&amp;gt;
  &amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

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

&lt;p&gt;So, this is just a basic structure let’s add some css to it. We are not creating another file for css, we are just adding style into home.html&lt;/p&gt;

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

&amp;lt;head&amp;gt;
    &amp;lt;link
      rel="shortcut icon"
      type="image/x-icon"
      href="https://user-images.githubusercontent.com/20112458/49326597-773b7280-f57a-11e8-853d-20ed61d18b0d.png"
    /&amp;gt;
    &amp;lt;script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;style&amp;gt;
      body {
        font-family: monospace;
      }
      h1 {
        background-color: yellow;
        display: inline-block;
        font-size: 3em;
        margin: 0;
        padding: 14px;
      }
      h3 {
        color: black;
        font-size: 20px;
        margin-top: 3px;
        text-align: center;
      }
      #chatbox {
        margin-left: auto;
        margin-right: auto;
        width: 40%;
        margin-top: 60px;
      }
      #userInput {
        margin-left: auto;
        margin-right: auto;
        width: 40%;
        margin-top: 60px;
      }
      #textInput {
        width: 90%;
        border: none;
        border-bottom: 3px solid black;
        font-family: monospace;
        font-size: 17px;
      }
      .userText {
        color: white;
        font-family: monospace;
        font-size: 17px;
        text-align: right;
        line-height: 30px;
      }
      .userText span {
        background-color: #808080;
        padding: 10px;
        border-radius: 2px;
      }
      .botText {
        color: white;
        font-family: monospace;
        font-size: 17px;
        text-align: left;
        line-height: 30px;
      }
      .botText span {
        background-color: #4169e1;
        padding: 10px;
        border-radius: 2px;
      }
      #tidbit {
        position: absolute;
        bottom: 0;
        right: 0;
        width: 300px;
      }
      .boxed {
        margin-left: auto;
        margin-right: auto;
        width: 78%;
        margin-top: 60px;
        border: 1px solid green;
      }
      .box {
        border: 2px solid black;
      }
    &amp;lt;/style&amp;gt;
&amp;lt;/head&amp;gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Now, after that let’s change body structure.&lt;/p&gt;

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

&amp;lt;body&amp;gt;
    &amp;lt;center&amp;gt;
      &amp;lt;h1&amp;gt;
        &amp;lt;img
          src="https://user-images.githubusercontent.com/20112458/49326597-773b7280-f57a-11e8-853d-20ed61d18b0d.png"
          alt="CANDICE"
          style="width:40px;height:40px;"
        /&amp;gt;Your Personal ChatBot
      &amp;lt;/h1&amp;gt;
    &amp;lt;/center&amp;gt;
&amp;lt;div class="box"&amp;gt;&amp;lt;/div&amp;gt;
    &amp;lt;div class="boxed"&amp;gt;
      &amp;lt;div&amp;gt;
        &amp;lt;div id="chatbox"&amp;gt;
          &amp;lt;img
            src="https://user-images.githubusercontent.com/20112458/49326597-773b7280-f57a-11e8-853d-20ed61d18b0d.png"
            alt="CANDICE"
            style="width:40px;height:40px;"
          /&amp;gt;
          &amp;lt;p class="botText"&amp;gt;
            &amp;lt;span&amp;gt;Hi! I'm Candice your personal ChatBot&amp;lt;/span&amp;gt;
          &amp;lt;/p&amp;gt;
        &amp;lt;/div&amp;gt;
        &amp;lt;div id="userInput"&amp;gt;
          &amp;lt;input id="textInput" type="text" name="msg" placeholder="Message" /&amp;gt;
        &amp;lt;/div&amp;gt;
      &amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
  &amp;lt;/body&amp;gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

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

&lt;p&gt;Now, if we type something nothing will happen. So, let’s add some script&lt;/p&gt;

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

&amp;lt;script&amp;gt;
        function getBotResponse() {
          var rawText = $("#textInput").val();
          var userHtml = '&amp;lt;p class="userText"&amp;gt;&amp;lt;span&amp;gt;' + rawText + "&amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;";
          $("#textInput").val("");
          $("#chatbox").append(userHtml);
          document
            .getElementById("userInput")
            .scrollIntoView({ block: "start", behavior: "smooth" });
          $.get("/get", { msg: rawText }).done(function(data) {
            var botHtml = '&amp;lt;p class="botText"&amp;gt;&amp;lt;span&amp;gt;' + data + "&amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;";
            $("#chatbox").append(botHtml);
            document
              .getElementById("userInput")
              .scrollIntoView({ block: "start", behavior: "smooth" });
          });
        }
        $("#textInput").keypress(function(e) {
          if (e.which == 13) {
            getBotResponse();
          }
        });
&amp;lt;/script&amp;gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Now, you will see whatever you write will be shown on the ChatBox but your chatbot will not give any reply.&lt;/p&gt;

&lt;p&gt;So, to do that let’s run your app.py&lt;/p&gt;

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

$ python app.py


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

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

&lt;p&gt;So, go to the link and chat with your personal ChatBot&lt;/p&gt;

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

&lt;p&gt;You can find the full source code on my &lt;a href="https://github.com/sahil-rajput/Candice-YourPersonalChatBot" rel="noopener noreferrer"&gt;Github&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>machinelearning</category>
      <category>flask</category>
      <category>python</category>
      <category>chatbot</category>
    </item>
    <item>
      <title>How a simple website is going to solve the problem we all faced</title>
      <dc:creator>Sahil Rajput</dc:creator>
      <pubDate>Fri, 15 Feb 2019 15:04:40 +0000</pubDate>
      <link>https://dev.to/sahilrajput/how-a-simple-website-is-going-to-solve-the-problem-we-all-faced-51i0</link>
      <guid>https://dev.to/sahilrajput/how-a-simple-website-is-going-to-solve-the-problem-we-all-faced-51i0</guid>
      <description>&lt;p&gt;This article is about &lt;strong&gt;How I started an open source project which will solve the problem we all faced.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--U7WsbOR0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/4tahntyrrhigr633wm54.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--U7WsbOR0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/4tahntyrrhigr633wm54.png" alt="frontpage"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;How the idea popup in my mind?&lt;/h3&gt;

&lt;p&gt;I was doing a project and for that project work I need to learn Django. So, I googled &lt;i&gt;“Best tutorials to learn Django”&lt;/i&gt; and I came up with few links and I start scrolling down to search the best tutorial to learn Django easily.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Dvo4pf6K--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/t9ykw31bya8nbkijcllc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Dvo4pf6K--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/t9ykw31bya8nbkijcllc.png" alt="goo"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I opened some of the links and I found few of them useful but I didn’t know which is better. So, I started with the first one and it didn’t work and then second and so on and finally I found a good tutorial.&lt;/p&gt;

&lt;h3&gt;But Why I am telling you all this?&lt;/h3&gt;

&lt;p&gt;After this long process of searching and finding the best tutorial, an idea popup in my mind.&lt;br&gt;
The idea was to create a website which contain links of all the technical resources like: learning programming language or build something from which the user can find the best tutorial for them self.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--oFR7oupp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/8yowgjawy2n8n6pglrug.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--oFR7oupp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/8yowgjawy2n8n6pglrug.png" alt="want"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;How user are going to know which tutorial is best and which is not?&lt;/h3&gt;

&lt;p&gt;The procedure is simple. Suppose, I want to &lt;i&gt;“Learn Django”&lt;/i&gt; so I clicked on the learn django and got links through which I can learn Django.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--M1Fh_FXj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/w5cymr5yf6nto6gdkc3j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--M1Fh_FXj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/w5cymr5yf6nto6gdkc3j.png" alt="learn"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now, everyone can vote the links up/down and the link with most number of upvotes will be first and so on. So through this the user will know that the link with the most number of upvotes is best for learning something.&lt;/p&gt;

&lt;h3&gt;How I am going to handle the users?&lt;/h3&gt;

&lt;p&gt;The user can login through Twitter and can upvote/downvote the links and all the links stored into the database and shown according to the number of upvotes. The user can also “Add Link” to the site of the tutorials which they found helpful.&lt;/p&gt;

&lt;h3&gt;What is the business model?&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;&lt;i&gt;Ads? No way&lt;/i&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The business model is also quite simple. After the website is fully completed. The tutors(who make tutorials) can promote their work on the website&lt;br&gt;
Suppose there is a tutor who is making &lt;i&gt;tutorials on C++&lt;/i&gt; and wants users then he/she can add the link of their tutorial on our website and can promote it and we will charge for the promotion.&lt;/p&gt;

&lt;h3&gt;Where is the website?&lt;/h3&gt;

&lt;p&gt;The basic version of the website has been launched yesterday and it got 1000+ hits in its first day of launch.&lt;/p&gt;

&lt;p&gt;The website is not fully completed and a lot of work is need to be done like&lt;br&gt;
&lt;/p&gt;
&lt;li&gt;Creating database.&lt;/li&gt;
&lt;br&gt;
&lt;li&gt;Login with Twitter.&lt;/li&gt;
&lt;br&gt;
&lt;li&gt;“Upvote/Downvote” feature.&lt;/li&gt;
&lt;br&gt;
&lt;li&gt;“Add link” feature.&lt;/li&gt;
&lt;br&gt;
&lt;li&gt;“Promote your link” feature.&lt;/li&gt;

&lt;p&gt;&lt;strong&gt;You can find the website here: &lt;a href="https://bestfordev.github.io/"&gt;https://bestfordev.github.io/&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you want to help me than you can contribute to the code here: &lt;a href="https://github.com/bestfordev"&gt;https://github.com/bestfordev&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Join us on &lt;a href="https://join.slack.com/t/bestfordev/shared_invite/enQtNTU0MzEzNzIyMTAyLTc0N2JhYjcyMDIzZWIwYzg3NzU0ZTg5NDkxODMwMDBmMmVjODVlZTZmODg5Yjk5NGFkYzllNjNkMzY4MjViZWY"&gt;Slack&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I think it is a good start to a project and if I will able to complete that project then it will able to solve a problem which we all faced.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Thank you for reading :)&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>discuss</category>
      <category>bestfordev</category>
    </item>
    <item>
      <title>A family of 1000+ members</title>
      <dc:creator>Sahil Rajput</dc:creator>
      <pubDate>Sun, 25 Nov 2018 04:16:12 +0000</pubDate>
      <link>https://dev.to/sahilrajput/a-family-of-1000-members-5a0h</link>
      <guid>https://dev.to/sahilrajput/a-family-of-1000-members-5a0h</guid>
      <description>&lt;p&gt;I joined DEV community 25 days ago (on 1st November 2018) and just 15 days ago I celebrated &lt;a href="https://dev.to/sahilrajput/100-followers-in-10-days-1225"&gt;100 followers&lt;/a&gt; and today, I have 1000+ followers.&lt;br&gt;
I never thought this many people would love to read what I write.&lt;/p&gt;

&lt;p&gt;A virtual hug to everyone for making this possible :)X&lt;/p&gt;

&lt;h4&gt;
  
  
  {Thank you}
&lt;/h4&gt;

</description>
      <category>discuss</category>
      <category>followers</category>
      <category>celebration</category>
    </item>
    <item>
      <title>Tools for Developers</title>
      <dc:creator>Sahil Rajput</dc:creator>
      <pubDate>Sat, 24 Nov 2018 12:23:05 +0000</pubDate>
      <link>https://dev.to/sahilrajput/tools-for-developers-gkp</link>
      <guid>https://dev.to/sahilrajput/tools-for-developers-gkp</guid>
      <description>&lt;p&gt;I discovered some tools which you may find interesting. Here is the list.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Taskade
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foy92xrbpazqh8rxcjj98.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foy92xrbpazqh8rxcjj98.jpeg" alt="taskade" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Taskade&lt;/strong&gt; is a simple way to make task lists, capture your ideas, and stay organized. Instantly share your lists and collaborate with your friends, family, and teammates.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Link: &lt;a href="https://www.taskade.com" rel="noopener noreferrer"&gt;Taskade&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Postal
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fszmwssnj5iywkowhjace.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fszmwssnj5iywkowhjace.png" alt="postal" width="800" height="309"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Postal&lt;/strong&gt; is a open source and fully featured mail server for use by websites &amp;amp; web servers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Github: &lt;a href="https://github.com/atech/postal" rel="noopener noreferrer"&gt;Postal&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  3. React Sketch.app
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwp4b6ekd50a80hm9tfke.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwp4b6ekd50a80hm9tfke.png" alt="react" width="800" height="346"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;React Sketch.app&lt;/strong&gt; is a open source library that allows you to write React components that render to Sketch documents. It is a tool which built to help bridge the gap between designers and engineers working on design systems at scale.&lt;br&gt;
Read more: &lt;a href="https://airbnb.design/painting-with-code/" rel="noopener noreferrer"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Link: &lt;a href="http://airbnb.io/react-sketchapp/" rel="noopener noreferrer"&gt;React Sketch.app&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  4. fake{JSON}
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq8tcvnh52ylkru2dg6oa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq8tcvnh52ylkru2dg6oa.png" alt="fake" width="800" height="371"&gt;&lt;/a&gt;&lt;br&gt;
It is designed to be an always ready, always available, mock backend for your application. You can use the API for you frontend development, end to end testing, regression testing, rapid prototyping, data generation, and more. Use the API to iterate, update, and refresh your application for consistent and dependable mock data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Link: &lt;a href="https://fakejson.com/" rel="noopener noreferrer"&gt;fakeJSON&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Figma
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F85qhzzkpuimcxukjbvko.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F85qhzzkpuimcxukjbvko.png" alt="figma" width="800" height="324"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Figma&lt;/strong&gt; is the first interface design tool based in the browser, making it easier for teams to create software.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Link: &lt;a href="https://www.figma.com/" rel="noopener noreferrer"&gt;Figma&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Kur
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsq8bzu3n78vk63ty4pwn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsq8bzu3n78vk63ty4pwn.png" alt="kur" width="800" height="449"&gt;&lt;/a&gt;&lt;br&gt;
Kur is open source system for quickly building and applying state-of-the-art deep learning models to new and exciting problems. Kur builds on top of Keras to provide a descriptive framework for designing and running deep learning models.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Github: &lt;a href="https://github.com/deepgram/kur" rel="noopener noreferrer"&gt;Kur&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  7. Maildrop
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fll917ayv3qvrdimmtl8h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fll917ayv3qvrdimmtl8h.png" alt="img" width="800" height="333"&gt;&lt;/a&gt;&lt;br&gt;
MailDrop is an open-source, scalable, high-performance version of Mailinator, a "temporary inbox" that you can give out when you don't want to give out your real e-mail address. MailDrop inboxes are designed to be quick and disposable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Link: &lt;a href="https://maildrop.cc/" rel="noopener noreferrer"&gt;MailDrop&lt;/a&gt;&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Github: &lt;a href="https://github.com/m242/maildrop" rel="noopener noreferrer"&gt;Maildrop&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  8. Sizzy
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcwu3b8zw8d8t7dav7jxj.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcwu3b8zw8d8t7dav7jxj.gif" alt="gif" width="1024" height="1024"&gt;&lt;/a&gt;&lt;br&gt;
A tool for testing responsive websites crazy-fast.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Link: &lt;a href="https://sizzy.co/" rel="noopener noreferrer"&gt;https://sizzy.co/&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  9. Probot
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx2iszbrf7rqnpopmeamr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx2iszbrf7rqnpopmeamr.png" alt="img1" width="800" height="235"&gt;&lt;/a&gt;&lt;br&gt;
A framework for building GitHub Apps to automate and improve your workflow. GitHub Apps can listen to webhook events sent by a repository or organization. Probot uses its internal event emitter to perform actions based on those events.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Link: &lt;a href="https://probot.github.io/docs/" rel="noopener noreferrer"&gt;Probot&lt;/a&gt;&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Github: &lt;a href="https://github.com/probot/probot" rel="noopener noreferrer"&gt;Probot&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  10. Spell
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3vhzwnrfcsoffxrnmzn5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3vhzwnrfcsoffxrnmzn5.png" alt="spell" width="800" height="249"&gt;&lt;/a&gt;&lt;br&gt;
Infrastructure for AI and Deep Learning.&lt;br&gt;
Documentation: &lt;a href="https://spell.run/docs/home/" rel="noopener noreferrer"&gt;Spell&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Link: &lt;a href="https://spell.run/" rel="noopener noreferrer"&gt;spell.run&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  11. Safecopy
&lt;/h3&gt;

&lt;p&gt;It is a data recovery tool which tries to extract as much data as possible from a problematic (i.e. damaged sectors) source like floppy drives, hard disk partitions, CDs, tape devices, where other tools like dd would fail due to I/O errors.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Link: &lt;a href="http://safecopy.sourceforge.net/" rel="noopener noreferrer"&gt;Safecopy&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>tools</category>
      <category>developers</category>
    </item>
    <item>
      <title>How latency numbers changes from 1990 to 2020.</title>
      <dc:creator>Sahil Rajput</dc:creator>
      <pubDate>Fri, 23 Nov 2018 10:30:38 +0000</pubDate>
      <link>https://dev.to/sahilrajput/how-latency-numbers-changes-from-1990-to-2020-173n</link>
      <guid>https://dev.to/sahilrajput/how-latency-numbers-changes-from-1990-to-2020-173n</guid>
      <description>&lt;h2&gt;
  
  
  What is Latency
&lt;/h2&gt;

&lt;p&gt;In computing,"latency" describes some type of delay. It typically refers to delays in transmitting or processing data, which can be caused by a wide variety of reasons.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Note: 1 ns = 1 * 10^-9 sec&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;In 1990:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;L1 cache reference: 181 ns&lt;/li&gt;
&lt;li&gt;L2 cache reference: 784 ns&lt;/li&gt;
&lt;li&gt;Branch mispredict: 603 ns&lt;/li&gt;
&lt;li&gt;Main memory reference: 207 ns&lt;/li&gt;
&lt;li&gt;Compress 1K bytes with Zippy: 362,000 ns&lt;/li&gt;
&lt;li&gt;Send 2K bytes over commodity network: 1448 ns&lt;/li&gt;
&lt;li&gt;Read 1 MB sequentially from memory: 3038000 ns&lt;/li&gt;
&lt;li&gt;Round trip within same datacenter: 500,000 ns&lt;/li&gt;
&lt;li&gt;Disk seek: 20,000,000 ns&lt;/li&gt;
&lt;li&gt;Read 1 MB sequentially from disk: 640,000,000 ns&lt;/li&gt;
&lt;li&gt;Read 1 MB sequentially from SSD:  50,000,000 ns&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;In 2000:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;L1 cache reference: 6 ns&lt;/li&gt;
&lt;li&gt;L2 cache reference: 25 ns&lt;/li&gt;
&lt;li&gt;Branch mispredict: 19 ns&lt;/li&gt;
&lt;li&gt;Mutex lock/unlock: 94 ns&lt;/li&gt;
&lt;li&gt;Main memory reference: 100 ns&lt;/li&gt;
&lt;li&gt;Compress 1K bytes with Zippy: 11,000 ns&lt;/li&gt;
&lt;li&gt;Send 2K bytes over commodity network: 45,000 ns&lt;/li&gt;
&lt;li&gt;Read 1 MB sequentially from memory: 301,000 ns&lt;/li&gt;
&lt;li&gt;Round trip within same datacenter: 500,000 ns&lt;/li&gt;
&lt;li&gt;Disk seek: 10,000,000 ns&lt;/li&gt;
&lt;li&gt;Read 1 MB sequentially from disk: 20,000,000 ns&lt;/li&gt;
&lt;li&gt;Read 1 MB sequentially from SSD: 5,000,000 ns&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;In 2010:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;L1 cache reference: 1 ns&lt;/li&gt;
&lt;li&gt;L2 cache reference: 4 ns&lt;/li&gt;
&lt;li&gt;Branch mispredict: 3 ns&lt;/li&gt;
&lt;li&gt;Mutex lock/unlock: 17 ns&lt;/li&gt;
&lt;li&gt;Main memory reference: 100 ns&lt;/li&gt;
&lt;li&gt;Compress 1K bytes with Zippy: 2000 ns&lt;/li&gt;
&lt;li&gt;Send 2K bytes over commodity network: 1000 ns&lt;/li&gt;
&lt;li&gt;Read 1 MB sequentially from memory: 30,000 ns&lt;/li&gt;
&lt;li&gt;Round trip within same datacenter: 500,000 ns&lt;/li&gt;
&lt;li&gt;Disk seek: 5,000,000 ns&lt;/li&gt;
&lt;li&gt;Read 1 MB sequentially from disk: 3,000,000 ns&lt;/li&gt;
&lt;li&gt;Read 1 MB sequentially from SSD: 494,000 ns&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;In 2020:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;L1 cache reference: 1 ns&lt;/li&gt;
&lt;li&gt;L2 cache reference: 4 ns&lt;/li&gt;
&lt;li&gt;Branch mispredict: 3 ns&lt;/li&gt;
&lt;li&gt;Mutex lock/unlock: 17 ns&lt;/li&gt;
&lt;li&gt;Main memory reference: 100 ns&lt;/li&gt;
&lt;li&gt;Compress 1K bytes with Zippy: 2000 ns&lt;/li&gt;
&lt;li&gt;Send 2K bytes over commodity network: 44 ns&lt;/li&gt;
&lt;li&gt;Read 1 MB sequentially from memory: 3000 ns&lt;/li&gt;
&lt;li&gt;Round trip within same datacenter: 500,000 ns&lt;/li&gt;
&lt;li&gt;Disk seek: 2,000,000 ns&lt;/li&gt;
&lt;li&gt;Read 1 MB sequentially from disk: 825,000 ns&lt;/li&gt;
&lt;li&gt;Read 1 MB sequentially from SSD: 49000 ns&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Comparison of Cache Sizes
&lt;/h2&gt;


&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxleb3005e6rjow68swhw.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxleb3005e6rjow68swhw.jpg" alt="comparison" width="638" height="479"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;center&gt;Image source: &lt;a href="https://twitter.com/gumnos/status/1066058931036987392" rel="noopener noreferrer"&gt;Tweet by Tim Chase&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;/center&gt;
&lt;br&gt;&lt;br&gt;
Reference: &lt;a href="https://people.eecs.berkeley.edu/~rcs/research/interactive_latency.html" rel="noopener noreferrer"&gt;berkeley.edu&lt;/a&gt;

</description>
      <category>latency</category>
      <category>computing</category>
    </item>
    <item>
      <title>Build your first ChatBot in 5 minutes</title>
      <dc:creator>Sahil Rajput</dc:creator>
      <pubDate>Fri, 23 Nov 2018 06:56:14 +0000</pubDate>
      <link>https://dev.to/sahilrajput/build-your-first-chatbot-in-5-minutes--15e3</link>
      <guid>https://dev.to/sahilrajput/build-your-first-chatbot-in-5-minutes--15e3</guid>
      <description>&lt;p&gt;I was searching the internet on "How to build a Chatbot?" and I discovered &lt;a href="https://chatterbot.readthedocs.io/en/stable/" rel="noopener noreferrer"&gt;ChatterBot&lt;/a&gt; which is a machine learning, conversational dialog engine for creating chat bots&lt;/p&gt;

&lt;h3&gt;
  
  
  How ChatterBot works
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F20112458%2F48929710-3ce62b80-ef11-11e8-822b-bfff0167c2c6.png" class="article-body-image-wrapper"&gt;&lt;img alt="processdiagram" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F20112458%2F48929710-3ce62b80-ef11-11e8-822b-bfff0167c2c6.png" width="800" height="1039"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;center&gt;Image source: [ChatterBot](https://chatterbot.readthedocs.io/en/stable/#process-flow-diagram)&lt;/center&gt;

&lt;p&gt;In this article we will see how to build a chatbot with ChatterBot in just 5 minutes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Let's start
&lt;/h2&gt;

&lt;p&gt;First &lt;a href="https://pypi.org/project/ChatterBot/" rel="noopener noreferrer"&gt;Install ChatterBot&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;ChatterBot
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Create a file &lt;code&gt;chat.py&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#import ChatBot&lt;/span&gt;
from chatterbot import ChatBot
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Create a new chat bot with the name of your choice(I am using "Candice").&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;bot &lt;span class="o"&gt;=&lt;/span&gt; ChatBot&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Candice'&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Your bot is created but at this point your bot has no knowledge, for that you have to train it on some data.&lt;br&gt;
&lt;code&gt;Also, by default the ChatterBot library will create a sqlite database to build up statements of the chats.&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Train your bot
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#import ListTrainer&lt;/span&gt;
from chatterbot.trainers import ListTrainer

bot.set_trainer&lt;span class="o"&gt;(&lt;/span&gt;ListTrainer&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="c"&gt;# Training &lt;/span&gt;
bot.train&lt;span class="o"&gt;([&lt;/span&gt;&lt;span class="s1"&gt;'What is your name?'&lt;/span&gt;, &lt;span class="s1"&gt;'My name is Candice'&lt;/span&gt;&lt;span class="o"&gt;])&lt;/span&gt;
bot.train&lt;span class="o"&gt;([&lt;/span&gt;&lt;span class="s1"&gt;'Who are you?'&lt;/span&gt;, &lt;span class="s1"&gt;'I am a bot, created by you'&lt;/span&gt; &lt;span class="o"&gt;])&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Your bot is now trained on 2 statements. When you ask your bot "what is your name", it will reply back with "My name is Candice".&lt;/p&gt;

&lt;p&gt;You can also trained it on multiple statements like&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;bot.train&lt;span class="o"&gt;([&lt;/span&gt;&lt;span class="s1"&gt;'Do you know me?'&lt;/span&gt;, &lt;span class="s1"&gt;'Yes, you created me'&lt;/span&gt;, &lt;span class="s1"&gt;'No'&lt;/span&gt;, &lt;span class="s1"&gt;'Sahil?'&lt;/span&gt;, &lt;span class="s1"&gt;'No idea'&lt;/span&gt;&lt;span class="o"&gt;])&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;As you can see it is difficult to train the bot on every single statements. So, we will use &lt;code&gt;ChatterBotCorpusTrainer&lt;/code&gt; to train our bot on the large dataset.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;from chatterbot.trainers import ChatterBotCorpusTrainer
&lt;span class="c"&gt;# Create a new trainer for the chatbot&lt;/span&gt;
trainer &lt;span class="o"&gt;=&lt;/span&gt; ChatterBotCorpusTrainer&lt;span class="o"&gt;(&lt;/span&gt;bot&lt;span class="o"&gt;)&lt;/span&gt;

&lt;span class="c"&gt;# Train the chatbot based on the english corpus&lt;/span&gt;
trainer.train&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"chatterbot.corpus.english"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;

&lt;span class="c"&gt;# Get a response to an input statement&lt;/span&gt;
chatbot.get_response&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"Hello, how are you today?"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;or you can download the &lt;a href="https://github.com/gunthercox/chatterbot-corpus/tree/master/chatterbot_corpus/data" rel="noopener noreferrer"&gt;dataset of your language&lt;/a&gt; and train your bot in your language.&lt;/p&gt;

&lt;p&gt;I downloaded the &lt;a href="https://github.com/sahil-rajput/FileTransfer/files/2609894/english.zip" rel="noopener noreferrer"&gt;english language dataset&lt;/a&gt; and we can train our bot like this&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="k"&gt;for &lt;/span&gt;files &lt;span class="k"&gt;in &lt;/span&gt;os.listdir&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'./english/'&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;:
    &lt;span class="nv"&gt;data&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;open&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'./english/'&lt;/span&gt;+files,&lt;span class="s1"&gt;'r'&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;.readlines&lt;span class="o"&gt;()&lt;/span&gt;
    bot.train&lt;span class="o"&gt;(&lt;/span&gt;data&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;NOTE: Make sure the dataset and the program file is on same folder, otherwise edit the path.&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Chat feature
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# To exit say "Bye"&lt;/span&gt;
&lt;span class="k"&gt;while &lt;/span&gt;True:
        &lt;span class="c"&gt;# Input from user&lt;/span&gt;
    &lt;span class="nv"&gt;message&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;input&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'\t\t\tYou:'&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
        &lt;span class="c"&gt;#if message is not "Bye"&lt;/span&gt;
    &lt;span class="k"&gt;if &lt;/span&gt;message.strip&lt;span class="o"&gt;()!=&lt;/span&gt;&lt;span class="s1"&gt;'Bye'&lt;/span&gt;:
        &lt;span class="nv"&gt;reply&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;bot.get_response&lt;span class="o"&gt;(&lt;/span&gt;message&lt;span class="o"&gt;)&lt;/span&gt;
        print&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Candice:'&lt;/span&gt;,reply&lt;span class="o"&gt;)&lt;/span&gt;
        &lt;span class="c"&gt;# if message is "Bye"&lt;/span&gt;
    &lt;span class="k"&gt;if &lt;/span&gt;message.strip&lt;span class="o"&gt;()==&lt;/span&gt;&lt;span class="s1"&gt;'Bye'&lt;/span&gt;:
        print&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Candice: Bye'&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
        &lt;span class="nb"&gt;break&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To run it, Go to terminal&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python chat.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It will train your bot first and then you can start chatting.&lt;/p&gt;

&lt;h4&gt;
  
  
  Source code
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#import libraries&lt;/span&gt;
from chatterbot import ChatBot
from chatterbot.trainers import ListTrainer
import os

&lt;span class="c"&gt;#Create a chatbot&lt;/span&gt;
&lt;span class="nv"&gt;bot&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;ChatBot&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Candice'&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
bot.set_trainer&lt;span class="o"&gt;(&lt;/span&gt;ListTrainer&lt;span class="o"&gt;)&lt;/span&gt;

&lt;span class="c"&gt;#training on english dataset&lt;/span&gt;
&lt;span class="k"&gt;for &lt;/span&gt;files &lt;span class="k"&gt;in &lt;/span&gt;os.listdir&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'./english/'&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;:
    &lt;span class="nv"&gt;data&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;open&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'./english/'&lt;/span&gt;+files,&lt;span class="s1"&gt;'r'&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;.readlines&lt;span class="o"&gt;()&lt;/span&gt;
    bot.train&lt;span class="o"&gt;(&lt;/span&gt;data&lt;span class="o"&gt;)&lt;/span&gt;

&lt;span class="c"&gt;#chat feature&lt;/span&gt;
&lt;span class="k"&gt;while &lt;/span&gt;True:
    &lt;span class="nv"&gt;message&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;input&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'\t\t\tYou:'&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;if &lt;/span&gt;message.strip&lt;span class="o"&gt;()!=&lt;/span&gt;&lt;span class="s1"&gt;'Bye'&lt;/span&gt;:
        &lt;span class="nv"&gt;reply&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;bot.get_response&lt;span class="o"&gt;(&lt;/span&gt;message&lt;span class="o"&gt;)&lt;/span&gt;
        print&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Candice:'&lt;/span&gt;,reply&lt;span class="o"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;if &lt;/span&gt;message.strip&lt;span class="o"&gt;()==&lt;/span&gt;&lt;span class="s1"&gt;'Bye'&lt;/span&gt;:
        print&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Candice: Bye'&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
        &lt;span class="nb"&gt;break&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>chatbot</category>
      <category>python</category>
      <category>easy</category>
    </item>
    <item>
      <title>Useful resources for programmers.</title>
      <dc:creator>Sahil Rajput</dc:creator>
      <pubDate>Mon, 19 Nov 2018 06:17:04 +0000</pubDate>
      <link>https://dev.to/sahilrajput/useful-websites-for-programmers-36k</link>
      <guid>https://dev.to/sahilrajput/useful-websites-for-programmers-36k</guid>
      <description>&lt;p&gt;List of some useful resources.&lt;/p&gt;

&lt;h2&gt;
  
  
  Table of Content
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Websites&lt;/li&gt;
&lt;li&gt;Python&lt;/li&gt;
&lt;li&gt;JavaScript&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Websites
&lt;/h2&gt;

&lt;p&gt;Lists of some useful websites for programmers&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;INDEX&lt;/strong&gt;&lt;br&gt;
    1. &lt;a href="https://github.com/sdmg15/Best-websites-a-programmer-should-visit#when-you-get-stuck" rel="noopener noreferrer"&gt;When you get stuck&lt;/a&gt;&lt;br&gt;
    2. &lt;a href="https://github.com/sdmg15/Best-websites-a-programmer-should-visit#news" rel="noopener noreferrer"&gt;News&lt;/a&gt;&lt;br&gt;
    3. &lt;a href="https://github.com/sdmg15/Best-websites-a-programmer-should-visit#magazines" rel="noopener noreferrer"&gt;Magazines&lt;/a&gt;&lt;br&gt;
    4. &lt;a href="https://github.com/sdmg15/Best-websites-a-programmer-should-visit#coding-practice-for-beginners" rel="noopener noreferrer"&gt;Coding practice for beginners&lt;/a&gt;&lt;br&gt;
    5. &lt;a href="https://github.com/sdmg15/Best-websites-a-programmer-should-visit#cryptocurrency" rel="noopener noreferrer"&gt;Cryptocurrency&lt;/a&gt;&lt;br&gt;
    6. &lt;a href="https://github.com/sdmg15/Best-websites-a-programmer-should-visit#for-those-who-want-to-start-a-small-project-but-cant-find-the-ideas" rel="noopener noreferrer"&gt;For those who want to start a small project but can't find the ideas&lt;/a&gt;&lt;br&gt;
    7. &lt;a href="https://github.com/sdmg15/Best-websites-a-programmer-should-visit#general-coding-advice" rel="noopener noreferrer"&gt;General Coding advice&lt;/a&gt;&lt;br&gt;
    8. &lt;a href="https://github.com/sdmg15/Best-websites-a-programmer-should-visit#coding-style" rel="noopener noreferrer"&gt;Coding Style&lt;/a&gt;&lt;br&gt;
    9. &lt;a href="https://github.com/sdmg15/Best-websites-a-programmer-should-visit#general-tools" rel="noopener noreferrer"&gt;General Tools&lt;/a&gt;&lt;br&gt;
    10. &lt;a href="https://github.com/sdmg15/Best-websites-a-programmer-should-visit#interview-preparation" rel="noopener noreferrer"&gt;Interview Preparation&lt;/a&gt;&lt;br&gt;
    11. &lt;a href="https://github.com/sdmg15/Best-websites-a-programmer-should-visit#documentaries" rel="noopener noreferrer"&gt;Documentaries&lt;/a&gt;&lt;br&gt;
    12. &lt;a href="https://github.com/sdmg15/Best-websites-a-programmer-should-visit#moocs-for-learning-something-new" rel="noopener noreferrer"&gt;MOOCs for learning something new&lt;/a&gt;&lt;br&gt;
    13. &lt;a href="https://github.com/sdmg15/Best-websites-a-programmer-should-visit#sites-related-to-your-preferred-programming-language-for-me-java" rel="noopener noreferrer"&gt;Sites related to your preferred programming language (For me Java)&lt;/a&gt;&lt;br&gt;
    14. &lt;a href="https://github.com/sdmg15/Best-websites-a-programmer-should-visit#learn-ai" rel="noopener noreferrer"&gt;Learn AI&lt;/a&gt;&lt;br&gt;
    15. &lt;a href="https://github.com/sdmg15/Best-websites-a-programmer-should-visit#seminar--research-writing--talks-etc" rel="noopener noreferrer"&gt;Seminar , research writing , talks etc&lt;/a&gt;&lt;br&gt;
    16. &lt;a href="https://github.com/sdmg15/Best-websites-a-programmer-should-visit#everything-in-one-place" rel="noopener noreferrer"&gt;Everything in one place&lt;/a&gt;&lt;br&gt;
    17. &lt;a href="https://github.com/sdmg15/Best-websites-a-programmer-should-visit#youtube-channels" rel="noopener noreferrer"&gt;YouTube Channels&lt;/a&gt;&lt;br&gt;
    18. &lt;a href="https://github.com/sdmg15/Best-websites-a-programmer-should-visit#good-articles" rel="noopener noreferrer"&gt;Good Articles&lt;/a&gt;&lt;br&gt;
    19. &lt;a href="https://github.com/sdmg15/Best-websites-a-programmer-should-visit#bash-and-shell-scripting" rel="noopener noreferrer"&gt;Bash and Shell scripting&lt;/a&gt;&lt;br&gt;
    20. &lt;a href="https://github.com/sdmg15/Best-websites-a-programmer-should-visit#podcasts" rel="noopener noreferrer"&gt;Podcasts&lt;/a&gt;&lt;br&gt;
    21. &lt;a href="https://github.com/sdmg15/Best-websites-a-programmer-should-visit#building-a-simple-compilerinterpreter" rel="noopener noreferrer"&gt;Building a Simple Compiler/Interpreter&lt;/a&gt;&lt;br&gt;
    22. &lt;a href="https://github.com/sdmg15/Best-websites-a-programmer-should-visit#watch-others-code" rel="noopener noreferrer"&gt;Watch others code&lt;/a&gt;&lt;br&gt;
       - &lt;a href="https://www.twitch.tv/pedropcruz" rel="noopener noreferrer"&gt;Pedro Cruz&lt;/a&gt; : Online coding tutorials on Twitch&lt;br&gt;
    23. &lt;a href="https://github.com/sdmg15/Best-websites-a-programmer-should-visit#tutorials" rel="noopener noreferrer"&gt;Tutorials&lt;/a&gt;&lt;br&gt;
    24. &lt;a href="https://github.com/sdmg15/Best-websites-a-programmer-should-visit#what-should-a-programmer-know" rel="noopener noreferrer"&gt;What should a programmer know&lt;/a&gt;&lt;br&gt;
    25. &lt;a href="https://github.com/sdmg15/Best-websites-a-programmer-should-visit#competitive-programming" rel="noopener noreferrer"&gt;Competitive programming&lt;/a&gt;&lt;br&gt;
    26. &lt;a href="https://github.com/sdmg15/Best-websites-a-programmer-should-visit#computer-books" rel="noopener noreferrer"&gt;Computer Books&lt;/a&gt;&lt;br&gt;
    27. &lt;a href="https://github.com/sdmg15/Best-websites-a-programmer-should-visit#video-tutorials" rel="noopener noreferrer"&gt;Video Tutorials&lt;/a&gt;&lt;br&gt;
    28. &lt;a href="https://github.com/sdmg15/Best-websites-a-programmer-should-visit#online-compiler-and-sharing-code-snippets" rel="noopener noreferrer"&gt;Online Compiler and Sharing Code snippets&lt;/a&gt;&lt;br&gt;
    29. &lt;a href="https://github.com/sdmg15/Best-websites-a-programmer-should-visit#blogs-of-developers" rel="noopener noreferrer"&gt;Blogs of Developers&lt;/a&gt;&lt;br&gt;
    30. &lt;a href="https://github.com/sdmg15/Best-websites-a-programmer-should-visit#for-improving-your-english" rel="noopener noreferrer"&gt;For improving your English&lt;/a&gt;&lt;br&gt;
    31. &lt;a href="https://github.com/sdmg15/Best-websites-a-programmer-should-visit#when-you-get-bored-from-cs-related-stuff" rel="noopener noreferrer"&gt;When you get bored from CS related stuff&lt;/a&gt;&lt;br&gt;
    32. &lt;a href="https://github.com/sdmg15/Best-websites-a-programmer-should-visit#open-source-websites" rel="noopener noreferrer"&gt;Open Source Websites&lt;/a&gt;&lt;br&gt;
    33. &lt;a href="https://github.com/sdmg15/Best-websites-a-programmer-should-visit#internships" rel="noopener noreferrer"&gt;Internships&lt;/a&gt;&lt;br&gt;
    34. &lt;a href="https://github.com/sdmg15/Best-websites-a-programmer-should-visit#jobs" rel="noopener noreferrer"&gt;Jobs&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Source: &lt;a href="https://github.com/sdmg15/Best-websites-a-programmer-should-visit#when-you-get-stuck" rel="noopener noreferrer"&gt;Github by sdmg15&lt;/a&gt;&lt;br&gt;
Repo License: &lt;a href="https://github.com/sdmg15/Best-websites-a-programmer-should-visit/blob/master/LICENSE" rel="noopener noreferrer"&gt;MIT&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Python
&lt;/h2&gt;

&lt;p&gt;List of Python frameworks, libraries, software and resources.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;INDEX&lt;/strong&gt;&lt;br&gt;
    1. &lt;a href="https://github.com/vinta/awesome-python#admin-panels" rel="noopener noreferrer"&gt;Admin Panels&lt;/a&gt;&lt;br&gt;
    2. &lt;a href="https://github.com/vinta/awesome-python#algorithms-and-design-patterns" rel="noopener noreferrer"&gt;Algorithms and Design Patterns&lt;/a&gt;&lt;br&gt;
    3. &lt;a href="https://github.com/vinta/awesome-python#anti-spam" rel="noopener noreferrer"&gt;Anti-spam&lt;/a&gt;&lt;br&gt;
    4. &lt;a href="https://github.com/vinta/awesome-python#asset-management" rel="noopener noreferrer"&gt;Asset Management&lt;/a&gt;&lt;br&gt;
    5. &lt;a href="https://github.com/vinta/awesome-python#audio" rel="noopener noreferrer"&gt;Audio&lt;/a&gt;&lt;br&gt;
    6. &lt;a href="https://github.com/vinta/awesome-python#authentication" rel="noopener noreferrer"&gt;Authentication&lt;/a&gt;&lt;br&gt;
    7. &lt;a href="https://github.com/vinta/awesome-python#build-tools" rel="noopener noreferrer"&gt;Build Tools&lt;/a&gt;&lt;br&gt;
    8. &lt;a href="https://github.com/vinta/awesome-python#built-in-classes-enhancement" rel="noopener noreferrer"&gt;Built-in Classes Enhancement&lt;/a&gt;&lt;br&gt;
    9. &lt;a href="https://github.com/vinta/awesome-python#caching" rel="noopener noreferrer"&gt;Caching&lt;/a&gt;&lt;br&gt;
    10. &lt;a href="https://github.com/vinta/awesome-python#chatops-tools" rel="noopener noreferrer"&gt;ChatOps Tools&lt;/a&gt;&lt;br&gt;
    11. &lt;a href="https://github.com/vinta/awesome-python#cluster-computing" rel="noopener noreferrer"&gt;Cluster Computing&lt;/a&gt;&lt;br&gt;
    12. &lt;a href="https://github.com/vinta/awesome-python#cms" rel="noopener noreferrer"&gt;CMS&lt;/a&gt;&lt;br&gt;
    13. &lt;a href="https://github.com/vinta/awesome-python#code-analysis" rel="noopener noreferrer"&gt;Code Analysis&lt;/a&gt;&lt;br&gt;
    14. &lt;a href="https://github.com/vinta/awesome-python#command-line-tools" rel="noopener noreferrer"&gt;Command-line Tools&lt;/a&gt;&lt;br&gt;
    15. &lt;a href="https://github.com/vinta/awesome-python#compatibility" rel="noopener noreferrer"&gt;Compatibility&lt;/a&gt;&lt;br&gt;
    16. &lt;a href="https://github.com/vinta/awesome-pythonhttps://github.com/vinta/awesome-python#computer-vision" rel="noopener noreferrer"&gt;Computer Vision&lt;/a&gt;&lt;br&gt;
    17. &lt;a href="https://github.com/vinta/awesome-python#concurrency-and-parallelism" rel="noopener noreferrer"&gt;Concurrency and Parallelism&lt;/a&gt;&lt;br&gt;
    18. &lt;a href="https://github.com/vinta/awesome-python#configuration" rel="noopener noreferrer"&gt;Configuration&lt;/a&gt;&lt;br&gt;
    19. &lt;a href="https://github.com/vinta/awesome-python#cryptography" rel="noopener noreferrer"&gt;Cryptography&lt;/a&gt;&lt;br&gt;
    20. &lt;a href="https://github.com/vinta/awesome-python#data-analysis" rel="noopener noreferrer"&gt;Data Analysis&lt;/a&gt;&lt;br&gt;
    21. &lt;a href="https://github.com/vinta/awesome-python#data-validation" rel="noopener noreferrer"&gt;Data Validation&lt;/a&gt;&lt;br&gt;
    22. &lt;a href="https://github.com/vinta/awesome-python#data-visualization" rel="noopener noreferrer"&gt;Data Visualization&lt;/a&gt;&lt;br&gt;
    23. &lt;a href="https://github.com/vinta/awesome-python#database-drivers" rel="noopener noreferrer"&gt;Database Drivers&lt;/a&gt;&lt;br&gt;
    24. &lt;a href="https://github.com/vinta/awesome-python#database" rel="noopener noreferrer"&gt;Database&lt;/a&gt;&lt;br&gt;
    25. &lt;a href="https://github.com/vinta/awesome-python#date-and-time" rel="noopener noreferrer"&gt;Date and Time&lt;/a&gt;&lt;br&gt;
    26. &lt;a href="https://github.com/vinta/awesome-python#debugging-tools" rel="noopener noreferrer"&gt;Debugging Tools&lt;/a&gt;&lt;br&gt;
    27. &lt;a href="https://github.com/vinta/awesome-python#deep-learning" rel="noopener noreferrer"&gt;Deep Learning&lt;/a&gt;&lt;br&gt;
    28. &lt;a href="https://github.com/vinta/awesome-python#devops-tools" rel="noopener noreferrer"&gt;DevOps Tools&lt;/a&gt;&lt;br&gt;
    29. &lt;a href="https://github.com/vinta/awesome-python#distribution" rel="noopener noreferrer"&gt;Distribution&lt;/a&gt;&lt;br&gt;
    30. &lt;a href="https://github.com/vinta/awesome-python#documentation" rel="noopener noreferrer"&gt;Documentation&lt;/a&gt;&lt;br&gt;
    31. &lt;a href="https://github.com/vinta/awesome-python#downloader" rel="noopener noreferrer"&gt;Downloader&lt;/a&gt;&lt;br&gt;
    32. &lt;a href="https://github.com/vinta/awesome-python#e-commerce" rel="noopener noreferrer"&gt;E-commerce&lt;/a&gt;&lt;br&gt;
    33. &lt;a href="https://github.com/vinta/awesome-python#editor-plugins-and-ides" rel="noopener noreferrer"&gt;Editor Plugins and IDEs&lt;/a&gt;&lt;br&gt;
    34. &lt;a href="https://github.com/vinta/awesome-python#email" rel="noopener noreferrer"&gt;Email&lt;/a&gt;&lt;br&gt;
    35. &lt;a href="https://github.com/vinta/awesome-python#environment-management" rel="noopener noreferrer"&gt;Environment Management&lt;/a&gt;&lt;br&gt;
    36. &lt;a href="https://github.com/vinta/awesome-python#files" rel="noopener noreferrer"&gt;Files&lt;/a&gt;&lt;br&gt;
    37. &lt;a href="https://github.com/vinta/awesome-python#foreign-function-interface" rel="noopener noreferrer"&gt;Foreign Function Interface&lt;/a&gt;&lt;br&gt;
    38. &lt;a href="https://github.com/vinta/awesome-python#forms" rel="noopener noreferrer"&gt;Forms&lt;/a&gt;&lt;br&gt;
    39. &lt;a href="https://github.com/vinta/awesome-python#functional-programming" rel="noopener noreferrer"&gt;Functional Programming&lt;/a&gt;&lt;br&gt;
    40. &lt;a href="https://github.com/vinta/awesome-python#game-development" rel="noopener noreferrer"&gt;Game Development&lt;/a&gt;&lt;br&gt;
    41. &lt;a href="https://github.com/vinta/awesome-python#geolocation" rel="noopener noreferrer"&gt;Geolocation&lt;/a&gt;&lt;br&gt;
    42. &lt;a href="https://github.com/vinta/awesome-python#gui" rel="noopener noreferrer"&gt;GUI&lt;/a&gt;&lt;br&gt;
    43. &lt;a href="https://github.com/vinta/awesome-python#hardware" rel="noopener noreferrer"&gt;Hardware&lt;/a&gt;&lt;br&gt;
    44. &lt;a href="https://github.com/vinta/awesome-python#html-manipulation" rel="noopener noreferrer"&gt;HTML Manipulation&lt;/a&gt;&lt;br&gt;
    45. &lt;a href="https://github.com/vinta/awesome-python#http" rel="noopener noreferrer"&gt;HTTP&lt;/a&gt;&lt;br&gt;
    46. &lt;a href="https://github.com/vinta/awesome-python#image-processing" rel="noopener noreferrer"&gt;Image Processing&lt;/a&gt;&lt;br&gt;
    47. &lt;a href="https://github.com/vinta/awesome-pythonhttps://github.com/vinta/awesome-python#implementations" rel="noopener noreferrer"&gt;Implementations&lt;/a&gt;&lt;br&gt;
    48. Interactive Interpreter&lt;br&gt;
    49. &lt;a href="https://github.com/vinta/awesome-python#internationalization" rel="noopener noreferrer"&gt;Internationalization&lt;/a&gt;&lt;br&gt;
    50. &lt;a href="https://github.com/vinta/awesome-python#job-scheduler" rel="noopener noreferrer"&gt;Job Scheduler&lt;/a&gt;&lt;br&gt;
    51. &lt;a href="https://github.com/vinta/awesome-python#logging" rel="noopener noreferrer"&gt;Logging&lt;/a&gt;&lt;br&gt;
    52. &lt;a href="https://github.com/vinta/awesome-python#machine-learning" rel="noopener noreferrer"&gt;Machine Learning&lt;/a&gt;&lt;br&gt;
    53. &lt;a href="https://github.com/vinta/awesome-python#miscellaneous" rel="noopener noreferrer"&gt;Miscellaneous&lt;/a&gt;&lt;br&gt;
    54. &lt;a href="https://github.com/vinta/awesome-python#natural-language-processing" rel="noopener noreferrer"&gt;Natural Language Processing&lt;/a&gt;&lt;br&gt;
    55. &lt;a href="https://github.com/vinta/awesome-python#network-virtualization" rel="noopener noreferrer"&gt;Network Virtualization&lt;/a&gt;&lt;br&gt;
    56. &lt;a href="https://github.com/vinta/awesome-python#networking" rel="noopener noreferrer"&gt;Networking&lt;/a&gt;&lt;br&gt;
    57. &lt;a href="https://github.com/vinta/awesome-python#news-feed" rel="noopener noreferrer"&gt;News Feed&lt;/a&gt;&lt;br&gt;
    58. &lt;a href="https://github.com/vinta/awesome-python#orm" rel="noopener noreferrer"&gt;ORM&lt;/a&gt;&lt;br&gt;
    59. &lt;a href="https://github.com/vinta/awesome-python#package-management" rel="noopener noreferrer"&gt;Package Management&lt;/a&gt;&lt;br&gt;
    60. &lt;a href="https://github.com/vinta/awesome-python#package-repositories" rel="noopener noreferrer"&gt;Package Repositories&lt;/a&gt;&lt;br&gt;
    61. &lt;a href="https://github.com/vinta/awesome-python#permissions" rel="noopener noreferrer"&gt;Permissions&lt;/a&gt;&lt;br&gt;
    62. &lt;a href="https://github.com/vinta/awesome-python#processes" rel="noopener noreferrer"&gt;Processes&lt;/a&gt;&lt;br&gt;
    63. &lt;a href="https://github.com/vinta/awesome-python#queue" rel="noopener noreferrer"&gt;Queue&lt;/a&gt;&lt;br&gt;
    64. &lt;a href="https://github.com/vinta/awesome-python#recommender-systems" rel="noopener noreferrer"&gt;Recommender Systems&lt;/a&gt;&lt;br&gt;
    65. &lt;a href="https://github.com/vinta/awesome-python#restful-api" rel="noopener noreferrer"&gt;RESTful API&lt;/a&gt;&lt;br&gt;
    66. &lt;a href="https://github.com/vinta/awesome-python#robotics" rel="noopener noreferrer"&gt;Robotics&lt;/a&gt;&lt;br&gt;
    67. &lt;a href="https://github.com/vinta/awesome-python#rpc-servers" rel="noopener noreferrer"&gt;RPC Servers&lt;/a&gt;&lt;br&gt;
    68. &lt;a href="https://github.com/vinta/awesome-python#science" rel="noopener noreferrer"&gt;Science&lt;/a&gt;&lt;br&gt;
    69. &lt;a href="https://github.com/vinta/awesome-python#search" rel="noopener noreferrer"&gt;Search&lt;/a&gt;&lt;br&gt;
    70. &lt;a href="https://github.com/vinta/awesome-python#serialization" rel="noopener noreferrer"&gt;Serialization&lt;/a&gt;&lt;br&gt;
    71. &lt;a href="https://github.com/vinta/awesome-python#serverless-frameworks" rel="noopener noreferrer"&gt;Serverless Frameworks&lt;/a&gt;&lt;br&gt;
    72. &lt;a href="https://github.com/vinta/awesome-python#specific-formats-processing" rel="noopener noreferrer"&gt;Specific Formats Processing&lt;/a&gt;&lt;br&gt;
    73. &lt;a href="https://github.com/vinta/awesome-python#static-site-generator" rel="noopener noreferrer"&gt;Static Site Generator&lt;/a&gt;&lt;br&gt;
    74. &lt;a href="https://github.com/vinta/awesome-python#tagging" rel="noopener noreferrer"&gt;Tagging&lt;/a&gt;&lt;br&gt;
    75. &lt;a href="https://github.com/vinta/awesome-python#template-engine" rel="noopener noreferrer"&gt;Template Engine&lt;/a&gt;&lt;br&gt;
    76. &lt;a href="https://github.com/vinta/awesome-python#testing" rel="noopener noreferrer"&gt;Testing&lt;/a&gt;&lt;br&gt;
    77. &lt;a href="https://github.com/vinta/awesome-python#text-processing" rel="noopener noreferrer"&gt;Text Processing&lt;/a&gt;&lt;br&gt;
    78. &lt;a href="https://github.com/vinta/awesome-python#third-party-apis" rel="noopener noreferrer"&gt;Third-party APIs&lt;/a&gt;&lt;br&gt;
    79. &lt;a href="https://github.com/vinta/awesome-python#url-manipulation" rel="noopener noreferrer"&gt;URL Manipulation&lt;/a&gt;&lt;br&gt;
    80. &lt;a href="https://github.com/vinta/awesome-python#video" rel="noopener noreferrer"&gt;Video&lt;/a&gt;&lt;br&gt;
    81. &lt;a href="https://github.com/vinta/awesome-python#web-content-extracting" rel="noopener noreferrer"&gt;Web Content Extracting&lt;/a&gt;&lt;br&gt;
    82. &lt;a href="https://github.com/vinta/awesome-python#web-crawling--web-scraping" rel="noopener noreferrer"&gt;Web Crawling &amp;amp; Web Scraping&lt;/a&gt;&lt;br&gt;
    83. &lt;a href="https://github.com/vinta/awesome-python#web-frameworks" rel="noopener noreferrer"&gt;Web Frameworks&lt;/a&gt;&lt;br&gt;
    84. &lt;a href="https://github.com/vinta/awesome-python#websocket" rel="noopener noreferrer"&gt;WebSocket&lt;/a&gt;&lt;br&gt;
    85. &lt;a href="https://github.com/vinta/awesome-python#wsgi-servers" rel="noopener noreferrer"&gt;WSGI Servers&lt;/a&gt;&lt;br&gt;
    86. &lt;a href="https://github.com/vinta/awesome-python#services" rel="noopener noreferrer"&gt;Services&lt;/a&gt;&lt;br&gt;
              86.1 &lt;a href="https://github.com/vinta/awesome-python#code-quality" rel="noopener noreferrer"&gt;Code Quality&lt;/a&gt;&lt;br&gt;
              86.2 &lt;a href="https://github.com/vinta/awesome-python#continuous-integration" rel="noopener noreferrer"&gt;Continuous Integration&lt;/a&gt;&lt;br&gt;
    87. &lt;a href="https://github.com/vinta/awesome-python#resources" rel="noopener noreferrer"&gt;Resources&lt;/a&gt;&lt;br&gt;
              87.1 &lt;a href="https://github.com/vinta/awesome-python#podcasts" rel="noopener noreferrer"&gt;Podcasts&lt;/a&gt;&lt;br&gt;
              87.2 &lt;a href="https://github.com/vinta/awesome-python#twitter" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;&lt;br&gt;
              87.3 &lt;a href="https://github.com/vinta/awesome-python#websites" rel="noopener noreferrer"&gt;Websites&lt;/a&gt;&lt;br&gt;
              87.4 &lt;a href="https://github.com/vinta/awesome-python#weekly" rel="noopener noreferrer"&gt;Weekly&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Source: &lt;a href="https://github.com/vinta/awesome-python" rel="noopener noreferrer"&gt;Github by vinta&lt;/a&gt;&lt;br&gt;
Repo License: &lt;a href="https://creativecommons.org/licenses/by/4.0/" rel="noopener noreferrer"&gt;Attribution 4.0 International&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  JavaScript
&lt;/h2&gt;

&lt;p&gt;A collection of browser-side &lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript" rel="noopener noreferrer"&gt;JavaScript&lt;/a&gt; libraries and resources.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;INDEX&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://github.com/sorrycc/awesome-javascript#package-managers" rel="noopener noreferrer"&gt;Package Managers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/sorrycc/awesome-javascript#loaders" rel="noopener noreferrer"&gt;Loaders&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/sorrycc/awesome-javascript#bundlers" rel="noopener noreferrer"&gt;Bundlers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/sorrycc/awesome-javascript#testing-frameworks" rel="noopener noreferrer"&gt;Testing Frameworks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/sorrycc/awesome-javascript#qa-tools" rel="noopener noreferrer"&gt;QA Tools&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/sorrycc/awesome-javascript#mvc-frameworks-and-libraries" rel="noopener noreferrer"&gt;MVC Frameworks and Libraries&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/sorrycc/awesome-javascript#node-powered-cms-frameworks" rel="noopener noreferrer"&gt;Node-Powered CMS Frameworks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/sorrycc/awesome-javascript#templating-engines" rel="noopener noreferrer"&gt;Templating Engines&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/sorrycc/awesome-javascript#articles-and-posts" rel="noopener noreferrer"&gt;Articles/Posts&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/sorrycc/awesome-javascript#data-visualization" rel="noopener noreferrer"&gt;Data Visualization&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;       10.1 &lt;a href="https://github.com/sorrycc/awesome-javascript#timeline" rel="noopener noreferrer"&gt;Timeline&lt;/a&gt;&lt;br&gt;
       10.2 &lt;a href="https://github.com/sorrycc/awesome-javascript#spreadsheet" rel="noopener noreferrer"&gt;Spreadsheet&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://github.com/sorrycc/awesome-javascript#editors" rel="noopener noreferrer"&gt;Editors&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://github.com/sorrycc/awesome-javascript#documentation" rel="noopener noreferrer"&gt;Documentation&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Utilities&lt;/p&gt;

&lt;p&gt;       13.1 &lt;a href="https://github.com/sorrycc/awesome-javascript#files" rel="noopener noreferrer"&gt;Files&lt;/a&gt;&lt;br&gt;
       13.2&lt;a href="https://github.com/sorrycc/awesome-javascript#functional-programming" rel="noopener noreferrer"&gt;Functional Programming&lt;/a&gt;&lt;br&gt;
      13.3 &lt;a href="https://github.com/sorrycc/awesome-javascript#reactive-programming" rel="noopener noreferrer"&gt;Reactive Programming&lt;/a&gt;&lt;br&gt;
      13.4 &lt;a href="https://github.com/sorrycc/awesome-javascript#data-structure" rel="noopener noreferrer"&gt;Data Structure&lt;/a&gt;&lt;br&gt;
      13.5 &lt;a href="https://github.com/sorrycc/awesome-javascript#date" rel="noopener noreferrer"&gt;Date&lt;/a&gt;&lt;br&gt;
      13.6 &lt;a href="https://github.com/sorrycc/awesome-javascript#string" rel="noopener noreferrer"&gt;String&lt;/a&gt;&lt;br&gt;
      13.7 &lt;a href="https://github.com/sorrycc/awesome-javascript#number" rel="noopener noreferrer"&gt;Number&lt;/a&gt;&lt;br&gt;
      13.8 &lt;a href="https://github.com/sorrycc/awesome-javascript#storage" rel="noopener noreferrer"&gt;Storage&lt;/a&gt;&lt;br&gt;
      13.9 &lt;a href="https://github.com/sorrycc/awesome-javascript#color" rel="noopener noreferrer"&gt;Color&lt;/a&gt;&lt;br&gt;
      13.10 &lt;a href="https://github.com/sorrycc/awesome-javascript#i18n-and-l10n" rel="noopener noreferrer"&gt;I18n And L10n&lt;/a&gt;&lt;br&gt;
      13.11 &lt;a href="https://github.com/sorrycc/awesome-javascript#control-flow" rel="noopener noreferrer"&gt;Control Flow&lt;/a&gt;&lt;br&gt;
      13.12 &lt;a href="https://github.com/sorrycc/awesome-javascript#routing" rel="noopener noreferrer"&gt;Routing&lt;/a&gt;&lt;br&gt;
      13.13 &lt;a href="https://github.com/sorrycc/awesome-javascript#security" rel="noopener noreferrer"&gt;Security&lt;/a&gt;&lt;br&gt;
      13.14 &lt;a href="https://github.com/sorrycc/awesome-javascript#log" rel="noopener noreferrer"&gt;Log&lt;/a&gt;&lt;br&gt;
      13.15 &lt;a href="https://github.com/sorrycc/awesome-javascript#regexp" rel="noopener noreferrer"&gt;RegExp&lt;/a&gt;&lt;br&gt;
      13.16 &lt;a href="https://github.com/sorrycc/awesome-javascript#media" rel="noopener noreferrer"&gt;Media&lt;/a&gt;&lt;br&gt;
      13.17 &lt;a href="https://github.com/sorrycc/awesome-javascript#voice-command" rel="noopener noreferrer"&gt;Voice Command&lt;/a&gt;&lt;br&gt;
      13.18 &lt;a href="https://github.com/sorrycc/awesome-javascript#api" rel="noopener noreferrer"&gt;API&lt;/a&gt;&lt;br&gt;
            - &lt;a href="https://fakejson.com/" rel="noopener noreferrer"&gt;fakeJSON&lt;/a&gt; -You can use the API for you frontend development, end to end testing, regression testing, rapid prototyping, data generation, and more.&lt;br&gt;
      13.19 &lt;a href="https://github.com/sorrycc/awesome-javascript#streaming" rel="noopener noreferrer"&gt;Streaming&lt;/a&gt;&lt;br&gt;
      13.20 &lt;a href="https://github.com/sorrycc/awesome-javascript#vision-detection" rel="noopener noreferrer"&gt;Vision Detection&lt;/a&gt;&lt;br&gt;
      13.21 &lt;a href="https://github.com/sorrycc/awesome-javascript#browser-detection" rel="noopener noreferrer"&gt;Browser Detection&lt;/a&gt;&lt;br&gt;
      13.22 &lt;a href="https://github.com/sorrycc/awesome-javascript#benchmark" rel="noopener noreferrer"&gt;Benchmark&lt;/a&gt;&lt;br&gt;
      13.23 &lt;a href="https://github.com/sorrycc/awesome-javascript#machine-learning" rel="noopener noreferrer"&gt;Machine Learning&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;UI&lt;/p&gt;

&lt;p&gt;      14.1 &lt;a href="https://github.com/sorrycc/awesome-javascript#code-highlighting" rel="noopener noreferrer"&gt;Code Highlighting&lt;/a&gt;&lt;br&gt;
      14.2 &lt;a href="https://github.com/sorrycc/awesome-javascript#loading-status" rel="noopener noreferrer"&gt;Loading Status&lt;/a&gt;&lt;br&gt;
      14.3 &lt;a href="https://github.com/sorrycc/awesome-javascript#validation" rel="noopener noreferrer"&gt;Validation&lt;/a&gt;&lt;br&gt;
      14.4 &lt;a href="https://github.com/sorrycc/awesome-javascript#keyboard-wrappers" rel="noopener noreferrer"&gt;Keyboard Wrappers&lt;/a&gt;&lt;br&gt;
      14.5 &lt;a href="https://github.com/sorrycc/awesome-javascript#tours-and-guides" rel="noopener noreferrer"&gt;Tours And Guides&lt;/a&gt;&lt;br&gt;
      14.6 &lt;a href="https://github.com/sorrycc/awesome-javascript#notifications" rel="noopener noreferrer"&gt;Notifications&lt;/a&gt;&lt;br&gt;
      14.7 &lt;a href="https://github.com/sorrycc/awesome-javascript#sliders" rel="noopener noreferrer"&gt;Sliders&lt;/a&gt;&lt;br&gt;
      14.8 &lt;a href="https://github.com/sorrycc/awesome-javascript#range-sliders" rel="noopener noreferrer"&gt;Range Sliders&lt;/a&gt;&lt;br&gt;
      14.9 &lt;a href="https://github.com/sorrycc/awesome-javascript#form-widgets" rel="noopener noreferrer"&gt;Form Widgets&lt;/a&gt;&lt;br&gt;
      14.10 &lt;a href="https://github.com/sorrycc/awesome-javascript#tips" rel="noopener noreferrer"&gt;Tips&lt;/a&gt;&lt;br&gt;
      14.11 &lt;a href="https://github.com/sorrycc/awesome-javascript#modals-and-popups" rel="noopener noreferrer"&gt;Modals and Popups&lt;/a&gt;&lt;br&gt;
      14.12 &lt;a href="https://github.com/sorrycc/awesome-javascript#scroll" rel="noopener noreferrer"&gt;Scroll&lt;/a&gt;&lt;br&gt;
      14.13 &lt;a href="https://github.com/sorrycc/awesome-javascript#menu" rel="noopener noreferrer"&gt;Menu&lt;/a&gt;&lt;br&gt;
      14.14 &lt;a href="https://github.com/sorrycc/awesome-javascript#tablegrid" rel="noopener noreferrer"&gt;Table/Grid&lt;/a&gt;&lt;br&gt;
      14.15 &lt;a href="https://github.com/sorrycc/awesome-javascript#frameworks-1" rel="noopener noreferrer"&gt;Frameworks&lt;/a&gt;&lt;br&gt;
      14.16 &lt;a href="https://github.com/sorrycc/awesome-javascript#boilerplates" rel="noopener noreferrer"&gt;Boilerplates&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://github.com/sorrycc/awesome-javascript#gesture" rel="noopener noreferrer"&gt;Gesture&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://github.com/sorrycc/awesome-javascript#maps" rel="noopener noreferrer"&gt;Maps&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://github.com/sorrycc/awesome-javascript#typography" rel="noopener noreferrer"&gt;Typography&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://github.com/sorrycc/awesome-javascript#animations" rel="noopener noreferrer"&gt;Animations&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://github.com/sorrycc/awesome-javascript#image-processing" rel="noopener noreferrer"&gt;Image processing&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://github.com/sorrycc/awesome-javascript#es6" rel="noopener noreferrer"&gt;ES6&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://github.com/sorrycc/awesome-javascript#sdk" rel="noopener noreferrer"&gt;SDK&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://github.com/sorrycc/awesome-javascript#misc" rel="noopener noreferrer"&gt;Misc&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://github.com/sorrycc/awesome-javascript#podcasts" rel="noopener noreferrer"&gt;Podcasts&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://github.com/sorrycc/awesome-javascript#worth-reading" rel="noopener noreferrer"&gt;Worth Reading&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Source: &lt;a href="https://github.com/sorrycc/awesome-javascript" rel="noopener noreferrer"&gt;Github by sorrycc&lt;/a&gt;&lt;br&gt;
Repo License: &lt;a href="https://creativecommons.org/publicdomain/zero/1.0/" rel="noopener noreferrer"&gt;Public Domain Dedication&lt;/a&gt;&lt;/p&gt;

</description>
      <category>programmers</category>
      <category>useful</category>
      <category>lists</category>
      <category>resources</category>
    </item>
    <item>
      <title>Create your own file organiser in Python</title>
      <dc:creator>Sahil Rajput</dc:creator>
      <pubDate>Wed, 14 Nov 2018 11:01:42 +0000</pubDate>
      <link>https://dev.to/sahilrajput/create-your-own-file-organiser-in-python-507i</link>
      <guid>https://dev.to/sahilrajput/create-your-own-file-organiser-in-python-507i</guid>
      <description>&lt;p&gt;In macOS Mojave, there is a feature called "Use Stacks" which organise your desktop files.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F20112458%2F48477125-c36e7f00-e826-11e8-855e-80ac048ce39b.png" class="article-body-image-wrapper"&gt;&lt;img alt="1" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F20112458%2F48477125-c36e7f00-e826-11e8-855e-80ac048ce39b.png" width="500" height="428"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I love this feature but you can only use this feature to organise files on your desktop and not in every folder. &lt;br&gt;
So, I decided to make a python program which will organise my files in any folder.&lt;/p&gt;

&lt;p&gt;Create a file &lt;code&gt;organise.py&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#import libraries&lt;/span&gt;
import os
from pathlib import Path
&lt;span class="c"&gt;#Dictionary (Add more if you want)&lt;/span&gt;
DIRECTORIES &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="s2"&gt;"HTML"&lt;/span&gt;: &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;".html5"&lt;/span&gt;, &lt;span class="s2"&gt;".html"&lt;/span&gt;, &lt;span class="s2"&gt;".htm"&lt;/span&gt;, &lt;span class="s2"&gt;".xhtml"&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;,
    &lt;span class="s2"&gt;"IMAGES"&lt;/span&gt;: &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;".jpeg"&lt;/span&gt;, &lt;span class="s2"&gt;".jpg"&lt;/span&gt;, &lt;span class="s2"&gt;".tiff"&lt;/span&gt;, &lt;span class="s2"&gt;".gif"&lt;/span&gt;, &lt;span class="s2"&gt;".bmp"&lt;/span&gt;, &lt;span class="s2"&gt;".png"&lt;/span&gt;, &lt;span class="s2"&gt;".bpg"&lt;/span&gt;, &lt;span class="s2"&gt;"svg"&lt;/span&gt;,
               &lt;span class="s2"&gt;".heif"&lt;/span&gt;, &lt;span class="s2"&gt;".psd"&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;,
    &lt;span class="s2"&gt;"VIDEOS"&lt;/span&gt;: &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;".avi"&lt;/span&gt;, &lt;span class="s2"&gt;".flv"&lt;/span&gt;, &lt;span class="s2"&gt;".wmv"&lt;/span&gt;, &lt;span class="s2"&gt;".mov"&lt;/span&gt;, &lt;span class="s2"&gt;".mp4"&lt;/span&gt;, &lt;span class="s2"&gt;".webm"&lt;/span&gt;, &lt;span class="s2"&gt;".vob"&lt;/span&gt;, &lt;span class="s2"&gt;".mng"&lt;/span&gt;,
               &lt;span class="s2"&gt;".qt"&lt;/span&gt;, &lt;span class="s2"&gt;".mpg"&lt;/span&gt;, &lt;span class="s2"&gt;".mpeg"&lt;/span&gt;, &lt;span class="s2"&gt;".3gp"&lt;/span&gt;, &lt;span class="s2"&gt;".mkv"&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;,
    &lt;span class="s2"&gt;"DOCUMENTS"&lt;/span&gt;: &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;".oxps"&lt;/span&gt;, &lt;span class="s2"&gt;".epub"&lt;/span&gt;, &lt;span class="s2"&gt;".pages"&lt;/span&gt;, &lt;span class="s2"&gt;".docx"&lt;/span&gt;, &lt;span class="s2"&gt;".doc"&lt;/span&gt;, &lt;span class="s2"&gt;".fdf"&lt;/span&gt;, &lt;span class="s2"&gt;".ods"&lt;/span&gt;,
                  &lt;span class="s2"&gt;".odt"&lt;/span&gt;, &lt;span class="s2"&gt;".pwi"&lt;/span&gt;, &lt;span class="s2"&gt;".xsn"&lt;/span&gt;, &lt;span class="s2"&gt;".xps"&lt;/span&gt;, &lt;span class="s2"&gt;".dotx"&lt;/span&gt;, &lt;span class="s2"&gt;".docm"&lt;/span&gt;, &lt;span class="s2"&gt;".dox"&lt;/span&gt;,
                  &lt;span class="s2"&gt;".rvg"&lt;/span&gt;, &lt;span class="s2"&gt;".rtf"&lt;/span&gt;, &lt;span class="s2"&gt;".rtfd"&lt;/span&gt;, &lt;span class="s2"&gt;".wpd"&lt;/span&gt;, &lt;span class="s2"&gt;".xls"&lt;/span&gt;, &lt;span class="s2"&gt;".xlsx"&lt;/span&gt;, &lt;span class="s2"&gt;".ppt"&lt;/span&gt;,
                  &lt;span class="s2"&gt;"pptx"&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;,
    &lt;span class="s2"&gt;"ARCHIVES"&lt;/span&gt;: &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;".a"&lt;/span&gt;, &lt;span class="s2"&gt;".ar"&lt;/span&gt;, &lt;span class="s2"&gt;".cpio"&lt;/span&gt;, &lt;span class="s2"&gt;".iso"&lt;/span&gt;, &lt;span class="s2"&gt;".tar"&lt;/span&gt;, &lt;span class="s2"&gt;".gz"&lt;/span&gt;, &lt;span class="s2"&gt;".rz"&lt;/span&gt;, &lt;span class="s2"&gt;".7z"&lt;/span&gt;,
                 &lt;span class="s2"&gt;".dmg"&lt;/span&gt;, &lt;span class="s2"&gt;".rar"&lt;/span&gt;, &lt;span class="s2"&gt;".xar"&lt;/span&gt;, &lt;span class="s2"&gt;".zip"&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;,
    &lt;span class="s2"&gt;"AUDIO"&lt;/span&gt;: &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;".aac"&lt;/span&gt;, &lt;span class="s2"&gt;".aa"&lt;/span&gt;, &lt;span class="s2"&gt;".aac"&lt;/span&gt;, &lt;span class="s2"&gt;".dvf"&lt;/span&gt;, &lt;span class="s2"&gt;".m4a"&lt;/span&gt;, &lt;span class="s2"&gt;".m4b"&lt;/span&gt;, &lt;span class="s2"&gt;".m4p"&lt;/span&gt;, &lt;span class="s2"&gt;".mp3"&lt;/span&gt;,
              &lt;span class="s2"&gt;".msv"&lt;/span&gt;, &lt;span class="s2"&gt;"ogg"&lt;/span&gt;, &lt;span class="s2"&gt;"oga"&lt;/span&gt;, &lt;span class="s2"&gt;".raw"&lt;/span&gt;, &lt;span class="s2"&gt;".vox"&lt;/span&gt;, &lt;span class="s2"&gt;".wav"&lt;/span&gt;, &lt;span class="s2"&gt;".wma"&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;,
    &lt;span class="s2"&gt;"PLAINTEXT"&lt;/span&gt;: &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;".txt"&lt;/span&gt;, &lt;span class="s2"&gt;".in"&lt;/span&gt;, &lt;span class="s2"&gt;".out"&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;,
    &lt;span class="s2"&gt;"PDF"&lt;/span&gt;: &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;".pdf"&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;,
    &lt;span class="s2"&gt;"PYTHON"&lt;/span&gt;: &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;".py"&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;,
    &lt;span class="s2"&gt;"XML"&lt;/span&gt;: &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;".xml"&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;,
    &lt;span class="s2"&gt;"EXE"&lt;/span&gt;: &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;".exe"&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;,
    &lt;span class="s2"&gt;"SHELL"&lt;/span&gt;: &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;".sh"&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

FILE_FORMATS &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;file_format: directory
                &lt;span class="k"&gt;for &lt;/span&gt;directory, file_formats &lt;span class="k"&gt;in &lt;/span&gt;DIRECTORIES.items&lt;span class="o"&gt;()&lt;/span&gt;
                &lt;span class="k"&gt;for &lt;/span&gt;file_format &lt;span class="k"&gt;in &lt;/span&gt;file_formats&lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="c"&gt;#This will organise your files&lt;/span&gt;
def organize&lt;span class="o"&gt;()&lt;/span&gt;:
    &lt;span class="k"&gt;for &lt;/span&gt;entry &lt;span class="k"&gt;in &lt;/span&gt;os.scandir&lt;span class="o"&gt;()&lt;/span&gt;:
        &lt;span class="k"&gt;if &lt;/span&gt;entry.is_dir&lt;span class="o"&gt;()&lt;/span&gt;:
            &lt;span class="k"&gt;continue
        &lt;/span&gt;file_path &lt;span class="o"&gt;=&lt;/span&gt; Path&lt;span class="o"&gt;(&lt;/span&gt;entry.name&lt;span class="o"&gt;)&lt;/span&gt;
        file_format &lt;span class="o"&gt;=&lt;/span&gt; file_path.suffix.lower&lt;span class="o"&gt;()&lt;/span&gt;
        &lt;span class="k"&gt;if &lt;/span&gt;file_format &lt;span class="k"&gt;in &lt;/span&gt;FILE_FORMATS:
            directory_path &lt;span class="o"&gt;=&lt;/span&gt; Path&lt;span class="o"&gt;(&lt;/span&gt;FILE_FORMATS[file_format]&lt;span class="o"&gt;)&lt;/span&gt;
            directory_path.mkdir&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;exist_ok&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;True&lt;span class="o"&gt;)&lt;/span&gt;
            file_path.rename&lt;span class="o"&gt;(&lt;/span&gt;directory_path.joinpath&lt;span class="o"&gt;(&lt;/span&gt;file_path&lt;span class="o"&gt;))&lt;/span&gt;
   &lt;span class="c"&gt;#if extension not present in the dctionary than create a folder name "OTHER"&lt;/span&gt;
    try:
        os.mkdir&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"OTHER"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
    except:
        pass
    &lt;span class="k"&gt;for &lt;/span&gt;&lt;span class="nb"&gt;dir &lt;/span&gt;&lt;span class="k"&gt;in &lt;/span&gt;os.scandir&lt;span class="o"&gt;()&lt;/span&gt;:
        try:
            &lt;span class="k"&gt;if &lt;/span&gt;dir.is_dir&lt;span class="o"&gt;()&lt;/span&gt;:
                os.rmdir&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;dir&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
            &lt;span class="k"&gt;else&lt;/span&gt;:
                os.rename&lt;span class="o"&gt;(&lt;/span&gt;os.getcwd&lt;span class="o"&gt;()&lt;/span&gt; + &lt;span class="s1"&gt;'/'&lt;/span&gt; + str&lt;span class="o"&gt;(&lt;/span&gt;Path&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;dir&lt;/span&gt;&lt;span class="o"&gt;))&lt;/span&gt;, os.getcwd&lt;span class="o"&gt;()&lt;/span&gt; + &lt;span class="s1"&gt;'/OTHER/'&lt;/span&gt; + str&lt;span class="o"&gt;(&lt;/span&gt;Path&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;dir&lt;/span&gt;&lt;span class="o"&gt;)))&lt;/span&gt;
        except:
            pass
&lt;span class="k"&gt;if &lt;/span&gt;__name__ &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s2"&gt;"__main__"&lt;/span&gt;:
    organize&lt;span class="o"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To run this program open terminal and write&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ python organise.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;My desktop before running this program:&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F20112458%2F48477126-c49fac00-e826-11e8-96eb-20babcc0d7c6.png" class="article-body-image-wrapper"&gt;&lt;img alt="2" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F20112458%2F48477126-c49fac00-e826-11e8-96eb-20babcc0d7c6.png" width="800" height="1154"&gt;&lt;/a&gt;&lt;br&gt;
&lt;br&gt;&lt;br&gt;
After running this program:&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F20112458%2F48478450-55c45200-e82a-11e8-97a6-4e5d2c8b0ef4.png" class="article-body-image-wrapper"&gt;&lt;img alt="screenshot 2018-11-14 at 4 28 26 pm" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F20112458%2F48478450-55c45200-e82a-11e8-97a6-4e5d2c8b0ef4.png" width="800" height="1329"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>python</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Why Python is called "Python"?</title>
      <dc:creator>Sahil Rajput</dc:creator>
      <pubDate>Wed, 14 Nov 2018 10:24:03 +0000</pubDate>
      <link>https://dev.to/sahilrajput/why-python-is-called-python-38mf</link>
      <guid>https://dev.to/sahilrajput/why-python-is-called-python-38mf</guid>
      <description>&lt;p&gt;Did you ever wonder why the programming language Python is called "Python"?&lt;br&gt;
&lt;a title="Daniel Stroud [CC BY-SA 4.0 (https://creativecommons.org/licenses/by-sa/4.0)], via Wikimedia Commons" href="https://commons.wikimedia.org/wiki/File:Guido-portrait-2014-curvves.jpg" rel="noopener noreferrer"&gt;&lt;img alt="Guido-portrait-2014-curvves" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fupload.wikimedia.org%2Fwikipedia%2Fcommons%2Fthumb%2Fd%2Fd0%2FGuido-portrait-2014-curvves.jpg%2F512px-Guido-portrait-2014-curvves.jpg" width="512" height="341"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://en.wikipedia.org/wiki/Guido_van_Rossum" rel="noopener noreferrer"&gt;Guido van Rossum&lt;/a&gt;, the author of Python Programming Language was reading the published scripts from &lt;strong&gt;“&lt;a href="https://en.wikipedia.org/wiki/Monty_Python%27s_Flying_Circus" rel="noopener noreferrer"&gt;Monty Python’s Flying Circus&lt;/a&gt;”&lt;/strong&gt;, a BBC comedy series from the 1970s. Van Rossum thought he needed a name that was short, unique, and slightly mysterious, so he decided to call the language &lt;strong&gt;Python&lt;/strong&gt;.&lt;br&gt;
In the &lt;a href="https://docs.python.org/3/faq/general.html#why-is-it-called-python" rel="noopener noreferrer"&gt;faq&lt;/a&gt;, he continued saying that there is no compulsion to love Monty Python to use the Python programming language and the love can be mutually exclusive.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Source:&lt;a href="https://docs.python.org/3/faq/general.html#why-is-it-called-python" rel="noopener noreferrer"&gt;General Python FAQ&lt;/a&gt;&lt;/p&gt;

</description>
      <category>funfact</category>
      <category>python</category>
    </item>
  </channel>
</rss>
