<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Arijit Roy</title>
    <description>The latest articles on Forem by Arijit Roy (@radioactive11).</description>
    <link>https://forem.com/radioactive11</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%2F504975%2F030dbf65-238f-4727-b1a1-fbac6f784e80.png</url>
      <title>Forem: Arijit Roy</title>
      <link>https://forem.com/radioactive11</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/radioactive11"/>
    <language>en</language>
    <item>
      <title>Shulker - An YouTube Companion App for Education</title>
      <dc:creator>Arijit Roy</dc:creator>
      <pubDate>Tue, 08 Mar 2022 23:53:35 +0000</pubDate>
      <link>https://forem.com/radioactive11/shulker-an-youtube-companion-app-for-education-47ld</link>
      <guid>https://forem.com/radioactive11/shulker-an-youtube-companion-app-for-education-47ld</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--qJhlGahj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0ng61e62611g5j3bevcq.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qJhlGahj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0ng61e62611g5j3bevcq.jpeg" alt="Image description" width="880" height="495"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Overview of My Submission
&lt;/h3&gt;

&lt;p&gt;As students all over the world were forced to attend online classes, YouTube became a popular go-to option for a lot of students (like me 😬) who were unable to understand online lectures.&lt;/p&gt;

&lt;p&gt;While studying via YouTube videos, I often found myself getting distracted (by Minecraft videos 😅) and wasted a good number of hours trapped in the recommended videos.&lt;/p&gt;

&lt;p&gt;To overcome that we came up with this idea of having a companion application where you can create categories and add a bunch of channels which will allow you to focus on content which is necessary and avoid unnecessary distractions.&lt;/p&gt;

&lt;p&gt;To make the application more useful, we integrated Azure's Cognitive Services for &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Speech to Text for generating transcriptions&lt;/li&gt;
&lt;li&gt;Sentiment Analysis and Opinion Mining for rating the video (because YouTube removed dislike counts ☹️)&lt;/li&gt;
&lt;li&gt;Azure ML to train an AI powered Quiz Generator&lt;/li&gt;
&lt;li&gt;Summary of the video in text format (so that you do not waste time on the wrong video 🤓)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Submission Category:
&lt;/h3&gt;

&lt;h5&gt;
  
  
  AI Aces
&lt;/h5&gt;

&lt;h3&gt;
  
  
  Link to Code on GitHub
&lt;/h3&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--566lAguM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/0xCompyler"&gt;
        0xCompyler
      &lt;/a&gt; / &lt;a href="https://github.com/0xCompyler/shulker"&gt;
        shulker
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    


&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/0xCompyler/shulker"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;h3&gt;
  
  
  Additional Resources / Info
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--UpSqV-CO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ki08f6hplci55xp6o6h6.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--UpSqV-CO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ki08f6hplci55xp6o6h6.jpeg" alt="Image description" width="880" height="495"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--hIOy0VnM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zvbm8xpn4b8ecwmrlhx8.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--hIOy0VnM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zvbm8xpn4b8ecwmrlhx8.jpeg" alt="Image description" width="880" height="495"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--p75ruSWK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/uohndfm25iz6i57vkota.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--p75ruSWK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/uohndfm25iz6i57vkota.jpeg" alt="Image description" width="880" height="495"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--lDqlaztw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/syfd7lu8qv75fdetc4tk.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--lDqlaztw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/syfd7lu8qv75fdetc4tk.jpeg" alt="Image description" width="880" height="495"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--vwUZoQyN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3ib9f5x5d6bqw5a961uf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vwUZoQyN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3ib9f5x5d6bqw5a961uf.png" alt="Image description" width="880" height="495"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Link to website: &lt;a href="https://betteryoutubeclient.vercel.app/"&gt;https://betteryoutubeclient.vercel.app/&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Built By 😎
&lt;/h4&gt;

&lt;p&gt;Arijit Roy - &lt;a href="https://github.com/0xCompyler"&gt;GitHub&lt;/a&gt; - &lt;a class="mentioned-user" href="https://dev.to/radioactive11"&gt;@radioactive11&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Kartik Goel - &lt;a href="https://github.com/kg-kartik"&gt;GitHub&lt;/a&gt; - &lt;a class="mentioned-user" href="https://dev.to/kgkartik"&gt;@kgkartik&lt;/a&gt; &lt;br&gt;
Boidushya Bhattacharyay - &lt;a href="https://github.com/boidushya"&gt;GitHub&lt;/a&gt; - &lt;a class="mentioned-user" href="https://dev.to/boidushya"&gt;@boidushya&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Yashwin Saini - &lt;a href="https://github.com/yash-wins"&gt;GitHub&lt;/a&gt; - &lt;a class="mentioned-user" href="https://dev.to/yashwinsaini"&gt;@yashwinsaini&lt;/a&gt; &lt;/p&gt;

</description>
      <category>azuretrialhack</category>
      <category>python</category>
      <category>react</category>
      <category>azure</category>
    </item>
    <item>
      <title>Introducing AQUA: Digital Education Made Simple</title>
      <dc:creator>Arijit Roy</dc:creator>
      <pubDate>Wed, 12 Jan 2022 21:42:19 +0000</pubDate>
      <link>https://forem.com/radioactive11/introducing-aqua-digital-education-made-simple-3b0o</link>
      <guid>https://forem.com/radioactive11/introducing-aqua-digital-education-made-simple-3b0o</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--XaGYYo_s--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1g39034uw1begml74f9i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--XaGYYo_s--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1g39034uw1begml74f9i.png" alt="Landing Page" width="880" height="593"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Overview of My Submission
&lt;/h3&gt;

&lt;p&gt;A few months back when the pandemic was at its peak in India and there was chaos all around, the education system got hit hard too and as tensions rose among the students so did the discord among different departments in our universities.&lt;/p&gt;

&lt;p&gt;Clashing deadlines for assignments, last-minute rushed quizzes. The pressure was enormous and the environment around us was even scarier. So this specific problem of deadlines gave us an idea that could in general help us create a streamlined environment for evaluation and assessment.&lt;/p&gt;

&lt;p&gt;Online classes have not only increased the burden on students but on educators equally. Evaluating hundreds of pages worth of handwritten assignments is tiring and boring. On discussing further we came to know that &lt;strong&gt;teachers spend more time on checking and evaluating our assignments than actually preparing coursework and teaching&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This is what inspired us to build AQUA, which is short for Assignments Quizzes Utility Application, a product to reduce the workload on both students and teachers. Thanks to MongoDB's simple yet powerful &lt;a href="https://docs.mongodb.com/realm/functions/"&gt;Realm Functions&lt;/a&gt;, we were able to automate most of the manual tasks of the evaluation process easily&lt;/p&gt;

&lt;h4&gt;
  
  
  So... What is AQUA? 👩‍🏫
&lt;/h4&gt;

&lt;p&gt;We came up with a platform where teachers, or in general, any educator can upload the assignment, choose a due date and publish it for the students. But here comes the catch. No two assignments can be created such that they have a deadline within 24 hours of each other, giving students ample time to solve the questions.&lt;/p&gt;

&lt;h4&gt;
  
  
  Automated Keyword Checker ✅
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--1ovG4R9n--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lykdba9wqtg64cdn0kpx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1ovG4R9n--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lykdba9wqtg64cdn0kpx.png" alt="Image description" width="880" height="593"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Most of the time, teachers look for the presence of certain keywords in the answer scripts and mark students accordingly. This might be an easy and effective way of evaluation but is time-consuming, especially when you consider the volume of answer sheets that needed to be checked after the submission of one assignment.&lt;/p&gt;

&lt;p&gt;Here in India, almost all schools and colleges want the assignments to be submitted in handwritten format. This makes checking them even more difficult. So we decided to build a pipeline that will feed all the handwritten documents from the Blob Storage to an OCR engine which basically converts the handwritten text to digital format for further processing.&lt;/p&gt;

&lt;p&gt;We live by the rule: "Automate the Boring Stuff". Hence we decided that we need to come up with a system that will automatically detect the presence of keywords, that the teacher wants, to be checked and flagged. Marks can be then allotted accordingly.&lt;/p&gt;

&lt;p&gt;We used MongoDB realm trigger functions to automatically run trigger function as soon as a student submits an assignments which in response calls the keyword checker api and checks the assignment against the keywords already provided by the teacher at the time of creation of assignment.&lt;br&gt;
The result gets saved in the database which can be then accordingly fetched.&lt;/p&gt;
&lt;h4&gt;
  
  
  Plagiarism Detection 👀
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--4up_YOA6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lj887mvzpg77aca7ncmf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4up_YOA6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lj887mvzpg77aca7ncmf.png" alt="Image description" width="880" height="593"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;You can copy my homework, but don't make it look obvious&lt;/em&gt; is a line that almost all student has either said or heard in their life. Well, plagiarism is an age-old problem that still hasn't been solved. We tried to tackle this issue by checking the similarity between all the documents and returning the similarity score. If it exceeds a particular threshold (which is set by the evaluator), it will be flagged as plagiarized and appropriate actions can be taken.&lt;/p&gt;

&lt;p&gt;We are doing same here as we did for keyword checker, as soon as a student submit an assignment, his/her assignment is checked for plagiarism by sending request to the plagiarism API in response to change in the database, with the help of realm trigger function.&lt;/p&gt;

&lt;p&gt;The response is then saved in the database, making it easier for the teacher not to wait for the API (doing heavy computation on backend side) to fetch results.&lt;/p&gt;
&lt;h3&gt;
  
  
  Submission Category:
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Action Star&lt;/strong&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Link to Code 🔗
&lt;/h3&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--566lAguM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/0xCompyler"&gt;
        0xCompyler
      &lt;/a&gt; / &lt;a href="https://github.com/0xCompyler/aqua"&gt;
        aqua
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Assignments Quizzes Utility Application
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;

&lt;p&gt;&lt;a href="https://forthebadge.com" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/7998890254268d8ed476c9f66d3fa59d21dd354d2090036083c82af4cda2a0eb/68747470733a2f2f666f7274686562616467652e636f6d2f696d616765732f6261646765732f6275696c742d776974682d6c6f76652e737667" alt="forthebadge"&gt;&lt;/a&gt;
&lt;a href="https://forthebadge.com" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/3cdf9577401a2c7dceac655bbd37fb2f3ee273a457bf1f2169c602fb80ca56f8/68747470733a2f2f666f7274686562616467652e636f6d2f696d616765732f6261646765732f6d6164652d776974682d707974686f6e2e737667" alt="forthebadge"&gt;&lt;/a&gt;
&lt;a href="https://forthebadge.com" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/bf160c4d8bd34965398250eb1cfffcc099fef4c3be1610e932116b166f472180/68747470733a2f2f666f7274686562616467652e636f6d2f696d616765732f6261646765732f757365732d6a732e737667" alt="forthebadge"&gt;&lt;/a&gt;
&lt;a href="https://forthebadge.com" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/8ace38ba3196d3dbc3996a906819fc3e4907364ba189553b70dc0cea1a66edfc/68747470733a2f2f666f7274686562616467652e636f6d2f696d616765732f6261646765732f706f77657265642d62792d636f666665652e737667" alt="forthebadge"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;br&gt;
&lt;p&gt;
  &lt;a href="https://github.com/0xCompyler/aqua"&gt;
    &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ZkvOKrJN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/0xCompyler/aquaSTATIC/landing.png" alt="Logo"&gt;
  &lt;/a&gt;
  &lt;/p&gt;
&lt;h1&gt;
Project AQUA&lt;/h1&gt;
  &lt;p&gt;
    &lt;strong&gt;A&lt;/strong&gt;ssignment &lt;strong&gt;Q&lt;/strong&gt;uizzes &lt;strong&gt;U&lt;/strong&gt;tility &lt;strong&gt;A&lt;/strong&gt;pplication
    &lt;br&gt;
    &lt;a href="https://aqua-eta.vercel.app" rel="nofollow"&gt;&lt;strong&gt;Visit the website »&lt;/strong&gt;&lt;/a&gt;
    &lt;br&gt;
    &lt;br&gt;
    &lt;a href="https://aqua-eta.vercel.app/" rel="nofollow"&gt;View Demo&lt;/a&gt;
    ·
    &lt;a href="https://github.com/0xCompyler/aqua/issues"&gt;Report Bug&lt;/a&gt;
    ·
    &lt;a href="https://github.com/0xCompyler/aqua/issues"&gt;Request Feature&lt;/a&gt;
  &lt;/p&gt;
&lt;h2&gt;
Table of Contents&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/0xCompyler/aqua#about-the-project"&gt;About the Project&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/0xCompyler/aqua#plagiarism-detector"&gt;Plagiarism Detector&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/0xCompyler/aqua#keyword-checker"&gt;Keyword Checker&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/0xCompyler/aqua#handwriting-to-text-conversion"&gt;Handwriting to Text&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/0xCompyler/aqua#anti-burden-system"&gt;Anti Burden System&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/0xCompyler/aqua#built-with"&gt;Built With&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/0xCompyler/aqua#getting-started"&gt;Getting Started&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/0xCompyler/aqua#prerequisites"&gt;Prerequisites&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/0xCompyler/aqua#installation"&gt;Installation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/0xCompyler/aqua#Product-Screenshots"&gt;Product Screenshots&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/0xCompyler/aqua#roadmap"&gt;Roadmap&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/0xCompyler/aqua#contributing"&gt;Contributing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/0xCompyler/aqua#contact"&gt;Contact&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
About The Project&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://aqua-eta.vercel.app" rel="nofollow"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--OHQjdFKU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/0xCompyler/aquaSTATIC/Landing.png" alt="Product Name Screen Shot"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Project &lt;strong&gt;aqua&lt;/strong&gt; is a &lt;strong&gt;Digital Evaluation Platform&lt;/strong&gt; which leverages the power of leading-edge frameworks paired with state of the art artificial intelligence algorithms to provide an seamless and organized experience both for educators and students alike.&lt;/p&gt;
&lt;br&gt;
&lt;p&gt;👩‍🏫 &lt;strong&gt;We provide the following services&lt;/strong&gt;:&lt;/p&gt;
&lt;p&gt;🤓 Plagiarism Checker&lt;/p&gt;
&lt;p&gt;🔖 Notice Board&lt;/p&gt;
&lt;p&gt;☁️ Assignment Upload/Download Portal&lt;/p&gt;
&lt;p&gt;🙃 Anti Burden System&lt;/p&gt;
&lt;br&gt;
&lt;h2&gt;
Plagiarism Detector&lt;/h2&gt;
&lt;p&gt;Often, one educator is responsible for evaluating assignments of around 120 students (2 batches of 60 students). In such cases, detecting plagiarism by a human is a up hill task which also requires a lot of time. In order…&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/0xCompyler/aqua"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h3&gt;
  
  
  Additional Resources / Info
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Built With 🛠
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ZvS-W_ZK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://img.shields.io/badge/Azure-0089D6%3Fstyle%3Dfor-the-badge%26logo%3Dmicrosoft-azure%26logoColor%3Dwhite" class="article-body-image-wrapper"&gt;&lt;img alt="TF" src="https://res.cloudinary.com/practicaldev/image/fetch/s--ZvS-W_ZK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://img.shields.io/badge/Azure-0089D6%3Fstyle%3Dfor-the-badge%26logo%3Dmicrosoft-azure%26logoColor%3Dwhite" width="87" height="28"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--lijILSR0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://img.shields.io/badge/Pytorch-D00000%3Fstyle%3Dfor-the-badge%26logo%3Dpytorch%26logoColor%3Dwhite" class="article-body-image-wrapper"&gt;&lt;img alt="PyTorch" src="https://res.cloudinary.com/practicaldev/image/fetch/s--lijILSR0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://img.shields.io/badge/Pytorch-D00000%3Fstyle%3Dfor-the-badge%26logo%3Dpytorch%26logoColor%3Dwhite" width="106" height="28"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--zhdyu5nC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://img.shields.io/badge/SciKit%2520Learn-F7931E%3Fstyle%3Dfor-the-badge%26logo%3Dscikit-learn%26logoColor%3Dwhite" class="article-body-image-wrapper"&gt;&lt;img alt="SkL" src="https://res.cloudinary.com/practicaldev/image/fetch/s--zhdyu5nC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://img.shields.io/badge/SciKit%2520Learn-F7931E%3Fstyle%3Dfor-the-badge%26logo%3Dscikit-learn%26logoColor%3Dwhite" width="139" height="28"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--1kIxTmDr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://img.shields.io/badge/MongoDB-47A248%3Fstyle%3Dfor-the-badge%26logo%3DmongoDB%26logoColor%3Dwhite" class="article-body-image-wrapper"&gt;&lt;img alt="SkL" src="https://res.cloudinary.com/practicaldev/image/fetch/s--1kIxTmDr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://img.shields.io/badge/MongoDB-47A248%3Fstyle%3Dfor-the-badge%26logo%3DmongoDB%26logoColor%3Dwhite" width="111" height="28"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--h2EhAtY5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://img.shields.io/badge/express-000000%3Fstyle%3Dfor-the-badge%26logo%3Dexpress%26logoColor%3Dwhite" class="article-body-image-wrapper"&gt;&lt;img alt="SkL" src="https://res.cloudinary.com/practicaldev/image/fetch/s--h2EhAtY5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://img.shields.io/badge/express-000000%3Fstyle%3Dfor-the-badge%26logo%3Dexpress%26logoColor%3Dwhite" width="103" height="28"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--vdfa-3if--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://img.shields.io/badge/react-61DAFB%3Fstyle%3Dfor-the-badge%26logo%3Dreact%26logoColor%3Dblack" class="article-body-image-wrapper"&gt;&lt;img alt="SkL" src="https://res.cloudinary.com/practicaldev/image/fetch/s--vdfa-3if--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://img.shields.io/badge/react-61DAFB%3Fstyle%3Dfor-the-badge%26logo%3Dreact%26logoColor%3Dblack" width="86" height="28"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--XfglHzK4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://img.shields.io/badge/node.js-339933%3Fstyle%3Dfor-the-badge%26logo%3Dnode.js%26logoColor%3Dwhite" class="article-body-image-wrapper"&gt;&lt;img alt="SkL" src="https://res.cloudinary.com/practicaldev/image/fetch/s--XfglHzK4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://img.shields.io/badge/node.js-339933%3Fstyle%3Dfor-the-badge%26logo%3Dnode.js%26logoColor%3Dwhite" width="101" height="28"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--tGJfHtRI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://img.shields.io/badge/flask-000000%3Fstyle%3Dfor-the-badge%26logo%3Dflask%26logoColor%3Dwhite" class="article-body-image-wrapper"&gt;&lt;img alt="SkL" src="https://res.cloudinary.com/practicaldev/image/fetch/s--tGJfHtRI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://img.shields.io/badge/flask-000000%3Fstyle%3Dfor-the-badge%26logo%3Dflask%26logoColor%3Dwhite" width="81" height="28"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ARFfNEK5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://img.shields.io/badge/nginx-009639%3Fstyle%3Dfor-the-badge%26logo%3Dnginx%26logoColor%3Dwhite" class="article-body-image-wrapper"&gt;&lt;img alt="SkL" src="https://res.cloudinary.com/practicaldev/image/fetch/s--ARFfNEK5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://img.shields.io/badge/nginx-009639%3Fstyle%3Dfor-the-badge%26logo%3Dnginx%26logoColor%3Dwhite" width="88" height="28"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Built By 😎
&lt;/h4&gt;

&lt;p&gt;Arijit Roy - &lt;a href="https://github.com/0xCompyler"&gt;GitHub&lt;/a&gt; - &lt;a class="mentioned-user" href="https://dev.to/radioactive11"&gt;@radioactive11&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Kartik Goel - &lt;a href="https://github.com/kg-kartik"&gt;GitHub&lt;/a&gt; - &lt;a class="mentioned-user" href="https://dev.to/kgkartik"&gt;@kgkartik&lt;/a&gt; &lt;br&gt;
Boidushya Bhattacharyay - &lt;a href="https://github.com/boidushya"&gt;GitHub&lt;/a&gt; - &lt;a class="mentioned-user" href="https://dev.to/boidushya"&gt;@boidushya&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Yashwin Saini - &lt;a href="https://github.com/yash-wins"&gt;GitHub&lt;/a&gt; - &lt;a class="mentioned-user" href="https://dev.to/yashwinsaini"&gt;@yashwinsaini&lt;/a&gt; &lt;/p&gt;

&lt;h4&gt;
  
  
  Link to platform ✨
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://aqua-eta.vercel.app"&gt;https://aqua-eta.vercel.app&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Screenshots 📸
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--WBKmXpKp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/us1y5qp2136hisa1840y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--WBKmXpKp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/us1y5qp2136hisa1840y.png" alt="Image description" width="880" height="593"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--MpDjDfIA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ybcxpxqyvsnbtzway8in.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--MpDjDfIA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ybcxpxqyvsnbtzway8in.png" alt="Image description" width="880" height="593"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--iYCPFFxh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ely5lamfaiy0txumfim3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--iYCPFFxh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ely5lamfaiy0txumfim3.png" alt="Image description" width="880" height="593"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>atlashackathon</category>
      <category>mongodb</category>
      <category>react</category>
      <category>python</category>
    </item>
    <item>
      <title>Real-Time Interactive Plotting (using Sockets, Python &amp; Plotly)</title>
      <dc:creator>Arijit Roy</dc:creator>
      <pubDate>Fri, 09 Jul 2021 17:23:52 +0000</pubDate>
      <link>https://forem.com/radioactive11/real-time-interactive-plotting-using-sockets-python-plotly-297g</link>
      <guid>https://forem.com/radioactive11/real-time-interactive-plotting-using-sockets-python-plotly-297g</guid>
      <description>&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%2Fx4lirjpzy821xg34wngy.gif" 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%2Fx4lirjpzy821xg34wngy.gif" alt="GIF showing result"&gt;&lt;/a&gt;&lt;br&gt;
There might be times where you need to plot a graph of stock prices of a company, data from a sensor, or even CPU usage of your computer. All these are examples of real-time data where there is little to no delay between data collection and retrieval.&lt;/p&gt;

&lt;p&gt;In this article, I will explain the server-side implementation of a real-time plotting system. For the client-side, pleaser refer to &lt;a href="https://dev.to/boidushya/real-time-interactive-plotting-client-side-using-sockets-react-hooks-plotly-1291"&gt;this article&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;The real-time communication between the server and client is achieved by using WebSockets. You can learn more about web sockets &lt;a href="https://www.w3.org/TR/websockets/" rel="noopener noreferrer"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I'll be using the following libraries/frameworks and languages:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Python&lt;/li&gt;
&lt;li&gt;React&lt;/li&gt;
&lt;li&gt;Python-SocketIO&lt;/li&gt;
&lt;li&gt;Plotly (Python)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I have also used Pandas &amp;amp; YFinance to fetch stock details but you can plug in your own data source.&lt;/p&gt;
&lt;h3&gt;
  
  
  Project setup
&lt;/h3&gt;

&lt;p&gt;Create a python virtual environment and activate it&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;

python3 &lt;span class="nt"&gt;-m&lt;/span&gt; venv venv
&lt;span class="nb"&gt;source &lt;/span&gt;venv/bin/activate


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

&lt;/div&gt;
&lt;p&gt;Install requirements. The entire list of dependencies can be found here - &lt;a href="https://gist.github.com/radioactive11/0fbee51f6d3cc80ab348bf31ac21ee48" rel="noopener noreferrer"&gt;requirements.txt&lt;/a&gt;&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;

pip3 &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; requirements.txt


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

&lt;/div&gt;
&lt;h3&gt;
  
  
  Socket Connection Handling
&lt;/h3&gt;

&lt;p&gt;Here I've handled the connection, disconnection, and sending the data to the client.&lt;/p&gt;

&lt;p&gt;When a client connects to the server, a unique ID (session ID or Sid) is alloted to the client for further references during communications.&lt;/p&gt;

&lt;p&gt;I stored this unique ID as &lt;code&gt;sid&lt;/code&gt; inside a list which holds all these &lt;code&gt;sid&lt;/code&gt;s  of the connected clients. Once a client disconnects (which is generally by closing the browser tab), I remove the &lt;code&gt;sid&lt;/code&gt; of that particular client from the list. &lt;/p&gt;

&lt;p&gt;The client emits an event called &lt;code&gt;ping_graph&lt;/code&gt;. The event handler &lt;code&gt;ping_graph&lt;/code&gt;(line 22-34) is responsible for  &lt;strong&gt;pinging&lt;/strong&gt; the client continuously with the data it requested for (in this case symbol of the company for which it wants the plot for)&lt;/p&gt;

&lt;p&gt;A while loop runs as long as the client is connected with the server and keeps sending data (in this case the &lt;em&gt;jsonified&lt;/em&gt;) version of the graph. Once the client disconnects, the loop stops running.&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;h3&gt;
  
  
  Plotting the data
&lt;/h3&gt;

&lt;p&gt;Now coming to the part where we actually plot the data. I used a library called &lt;a href="https://plotly.com" rel="noopener noreferrer"&gt;Plotly&lt;/a&gt; which allows to create interactive plots easily in python.&lt;/p&gt;

&lt;p&gt;I fetch stock data of a company from &lt;code&gt;yfinance&lt;/code&gt; with 1 minute interval. Next I plot a mountain graph using the data. I've set the line color to change depending on whether the prices increase, decrease, or stay the same. I also added some buttons which will allow quick switching between ranges.&lt;/p&gt;

&lt;p&gt;Finally, I converted the entire figure to a JSON object which will be sent to the client side for rendering.&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;The steps to render the plot in using React can be found &lt;a href="https://dev.to/boidushya/real-time-interactive-plotting-client-side-using-sockets-react-hooks-plotly-1291"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Run the Socket.IO server
&lt;/h3&gt;

&lt;p&gt;I use &lt;code&gt;gunicorn&lt;/code&gt; and &lt;code&gt;eventlet&lt;/code&gt; to run the Socket.IO serever&lt;/p&gt;

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

&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;PYTHONPATH&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;src
gunicorn &lt;span class="nt"&gt;-k&lt;/span&gt; eventlet &lt;span class="nt"&gt;-w&lt;/span&gt; 1 &lt;span class="nt"&gt;--reload&lt;/span&gt; src.main:app


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

&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; This is what the directory structure looks like. &lt;/p&gt;

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

/
src/
├─ main.py
├─ scripts/
│  ├─ plot.py
requirements.txt


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

&lt;/div&gt;

&lt;p&gt;Link to GitHub Repository: &lt;a href="https://github.com/radioactive11/real-time-plot" rel="noopener noreferrer"&gt;Real Time Plot&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Photo by &lt;a href="https://unsplash.com/@techdailyca?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" rel="noopener noreferrer"&gt;Tech Daily&lt;/a&gt; on &lt;a href="https://unsplash.com/s/photos/graph?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" rel="noopener noreferrer"&gt;Unsplash&lt;/a&gt;&lt;/p&gt;

</description>
      <category>python</category>
      <category>sockets</category>
      <category>plotly</category>
      <category>graph</category>
    </item>
  </channel>
</rss>
