<?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: Divakar Kumar</title>
    <description>The latest articles on DEV Community by Divakar Kumar (@divakarkumar).</description>
    <link>https://dev.to/divakarkumar</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%2F381881%2F592d7b77-9bdf-4821-9163-c596dfb2a237.jpg</url>
      <title>DEV Community: Divakar Kumar</title>
      <link>https://dev.to/divakarkumar</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/divakarkumar"/>
    <language>en</language>
    <item>
      <title>Build Intelligent Outlook using Azure</title>
      <dc:creator>Divakar Kumar</dc:creator>
      <pubDate>Wed, 31 Mar 2021 07:30:58 +0000</pubDate>
      <link>https://dev.to/divakarkumar/build-intelligent-outlook-using-azure-2hch</link>
      <guid>https://dev.to/divakarkumar/build-intelligent-outlook-using-azure-2hch</guid>
      <description>&lt;h2&gt;
  
  
  &lt;strong&gt;What problem are we trying to solve today?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Consider you are working for a company where they restricted access to outlook in your mobile or Consider you don't want to sync professional mail in your mobile. In either cases there might be a possibility where you will miss to respond back to an escalation mail or feedback mails on time .&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--byNHNY39--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://media4.giphy.com/media/jqH5YwZOF8RQ7pUBei/giphy.gif%3Fcid%3Decf05e47ctwm0a4gnopymxqk6ajo0u2hdtkqq19gvnvugrz3%26rid%3Dgiphy.gif" width="480" height="480"&gt;
&lt;/h2&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Proposed solution :&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;1) We don't want to be disturbed for regular mails &lt;br&gt;
2) We should make our outlook intelligent enough to know that we are only interested in escalation or feedback mails. Right now outlook can't categorize mails based on these sentiments of the contents. &lt;/p&gt;

&lt;p&gt;So in this post, we will see how to make our Outlook intelligent enough to send out a message to our personal mobile number whenever there is an escalation / suggestion mails addressing to us.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--vBMIuszh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://media0.giphy.com/media/3ohrypQkRlLBKgfYY0/giphy.gif%3Fcid%3Decf05e475vbtunqemk1ls8ee42ngnyrz3gbhsblp4rxnk0oq%26rid%3Dgiphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vBMIuszh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://media0.giphy.com/media/3ohrypQkRlLBKgfYY0/giphy.gif%3Fcid%3Decf05e475vbtunqemk1ls8ee42ngnyrz3gbhsblp4rxnk0oq%26rid%3Dgiphy.gif" width="480" height="266"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;Prerequisites :&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Azure Logic apps&lt;/li&gt;
&lt;li&gt;Azure Functions&lt;/li&gt;
&lt;li&gt;Azure Cognitive services&lt;/li&gt;
&lt;li&gt;Twilio &lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;Architecture :&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--GIhLcsO8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/e166x84cuyitgpowntkv.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--GIhLcsO8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/e166x84cuyitgpowntkv.jpg" width="880" height="560"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Steps to implement workflow :&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Go to Azure portal : &lt;a href="https://portal.azure.com"&gt; portal.azure.com &lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Get free azure subscription here : &lt;a href="https://azure.microsoft.com/en-in/free/"&gt;https://azure.microsoft.com/en-in/free/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Logic Apps workflow :&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Choose your subscription and create Logic apps
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--LHWPrJ4p--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fwo3zipnwxb5yd073esf.png" alt="image" width="880" height="308"&gt;
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--VV9e2UlO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yobbtkxs4d7k0rw9bxu9.png" alt="image" width="880" height="419"&gt;
&lt;/li&gt;
&lt;li&gt;Once logic app is created open the designer view &lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;Select Blank Logic app&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;Search for Outlook in connectors and triggers and select trigger "When a new email arrives (v2)"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--itJrBBIq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zx9njleeq8uo3az9wrsh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--itJrBBIq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zx9njleeq8uo3az9wrsh.png" alt="image" width="880" height="352"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--pFElvSZ---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/535zdcp0ny7vl8jjbi3r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pFElvSZ---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/535zdcp0ny7vl8jjbi3r.png" alt="image" width="880" height="398"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Mention your mail id in "To or CC" condition &lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;In the next step choose Text Analytics as an operation and choose Detect sentiment (v2) as action , so that we can detect sentiment of the content of the mail&lt;/li&gt;
&lt;/ul&gt;

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

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

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

&lt;ul&gt;
&lt;li&gt;In the next step choose Azure function to categorize each sentiment score and in the request body point it to the documents of the sentiment analysis response&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9xzuq-b6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0iejshtmmok8xw9qn2n3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9xzuq-b6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0iejshtmmok8xw9qn2n3.png" alt="image" width="880" height="389"&gt;&lt;/a&gt;&lt;br&gt;
 &lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--mfTouTMY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gpdl6bzamry6z687lier.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mfTouTMY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gpdl6bzamry6z687lier.png" alt="image" width="880" height="346"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Now add condition based on the response of the azure function and if the response is ASAP or NEUTRAL , then send a text message to your registered number in Twilio account&lt;/li&gt;
&lt;/ul&gt;

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

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

&lt;h2&gt;
  
  
  &lt;strong&gt;Azure function workflow :&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Based on the sentiment score , we will use azure function to categorize the content of mail that we receive. &lt;/p&gt;

&lt;p&gt;Preview of the mail that we sent in earlier step: &lt;/p&gt;

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

&lt;h2&gt;
  
  
  Request to sentiment analyzer :
&lt;/h2&gt;

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

&lt;h2&gt;
  
  
  Response from sentiment analyzer :
&lt;/h2&gt;

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

&lt;p&gt;And based on the below code snippet we will categorize the above mail as Negative and will tag it as ASAP message and send response back to logic app&lt;/p&gt;

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

&lt;h2&gt;
  
  
  &lt;strong&gt;Twilio workflow :&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Once we got response from Azure function it will be send to Twilio workflow based on two conditions , It will check if the response is either ASAP or NEUTRAL . In either of these case we will trigger a message to our configured number in the portal as below&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--BD6pXq9o--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vcfjarp993oky7q2sjce.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--BD6pXq9o--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vcfjarp993oky7q2sjce.jpg" alt="Alt Text" width="880" height="806"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Act on negative feedbacks ASAP:&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--nazq6tXe--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://media.tenor.com/images/79cdc2b071a19135dc3630eedf374d30/tenor.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--nazq6tXe--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://media.tenor.com/images/79cdc2b071a19135dc3630eedf374d30/tenor.gif" width="220" height="124"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Finally, we made our outlook intelligent enough to send notifications on negative feedbacks from our client &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--yLefOibW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://media1.giphy.com/media/lTRuG1F4VZ3LHMpXY2/giphy.gif%3Fcid%3Decf05e47ho85lar7uk3saedg55m4eec17p0cvw5cfezraj3a%26rid%3Dgiphy.gif%3Cbr%3E%250A" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--yLefOibW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://media1.giphy.com/media/lTRuG1F4VZ3LHMpXY2/giphy.gif%3Fcid%3Decf05e47ho85lar7uk3saedg55m4eec17p0cvw5cfezraj3a%26rid%3Dgiphy.gif%3Cbr%3E%250A" width="480" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Github Source code:&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/Divakar-kumar/SentimentWebhooks.Outlook"&gt;https://github.com/Divakar-kumar/SentimentWebhooks.Outlook&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Further steps:&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Please go ahead and fork the repository to make your outlook more intelligent, where you can implement custom logics based on the sentiment score. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--6f2zmw84--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://media1.tenor.com/images/3f6aef9534dec220452cfa74d2ec2476/tenor.gif%3Fitemid%3D18621612%3Cbr%3E%250A" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--6f2zmw84--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://media1.tenor.com/images/3f6aef9534dec220452cfa74d2ec2476/tenor.gif%3Fitemid%3D18621612%3Cbr%3E%250A" width="498" height="280"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>azure</category>
      <category>logicapps</category>
      <category>twilioquest</category>
      <category>azurefunctions</category>
    </item>
    <item>
      <title>☁️ ☁️Free Certification Multi-Cloud (Best of Breed) ☁️☁️</title>
      <dc:creator>Divakar Kumar</dc:creator>
      <pubDate>Thu, 27 Aug 2020 19:26:33 +0000</pubDate>
      <link>https://dev.to/divakarkumar/multi-cloud-best-of-breed-b2f</link>
      <guid>https://dev.to/divakarkumar/multi-cloud-best-of-breed-b2f</guid>
      <description>&lt;h2&gt;
  
  
  &lt;b&gt;&lt;strong&gt; Multi-Cloud (cloud 3.0 - 2019 and beyond) &lt;/strong&gt;&lt;/b&gt;
&lt;/h2&gt;

&lt;p&gt;Architects and engineers out there need to keep pace with the changing environment and While we are talking about strategies in private, public and hybrid cloud, &lt;b&gt;Multi-Cloud&lt;/b&gt; is already here!.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;According to IBM, 85% of enterprises are in a multi-cloud environment, but only 41% have a multi-cloud strategy. The challenges that the organizations are facing, outweigh the benefits they are accruing from the model.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  &lt;b&gt;&lt;strong&gt; Why Multi-cloud? &lt;/strong&gt;&lt;/b&gt;
&lt;/h2&gt;

&lt;p&gt;✅ Vendor flexibility&lt;/p&gt;

&lt;p&gt;✅ Best of breed&lt;/p&gt;

&lt;p&gt;✅ Negotiating power&lt;/p&gt;

&lt;p&gt;✅ Failover and disaster preparedness&lt;/p&gt;

&lt;p&gt;✅ Data sovereignty&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;b&gt;&lt;strong&gt; Are you a certified AWS, Azure, GCP, OCI professional? &lt;/strong&gt;&lt;/b&gt;
&lt;/h2&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%2Fi.giphy.com%2Fmedia%2FyDYAHbqe5DfyM%2Fgiphy.webp" 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%2Fi.giphy.com%2Fmedia%2FyDYAHbqe5DfyM%2Fgiphy.webp"&gt;&lt;/a&gt;&lt;/p&gt;



&lt;h2&gt;
  
  
  &lt;b&gt;&lt;h4&gt;Aviatrix ACE Program&lt;/h4&gt;&lt;/b&gt;
&lt;/h2&gt;

&lt;p&gt;Recently I came across Aviatrix ACE program that enables us to develop competency in multi-cloud strategies.&lt;/p&gt;

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

&lt;p&gt;The ACE program provides ongoing education that enables architects, engineers, and technical staff to develop advanced competency in native cloud capabilities and provides a framework for applying this knowledge to network architecture and design patterns in order to meet customer requirements.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;b&gt;&lt;h6&gt;🎫 Free coupon:&lt;/h6&gt;&lt;/b&gt; &lt;b&gt;&lt;strong&gt;ACEONLINE&lt;/strong&gt;&lt;/b&gt; ( $895 value course )
&lt;/h2&gt;

&lt;h2&gt;
  
  
  &lt;b&gt;&lt;h6&gt; ✔ Register here :&lt;/h6&gt;&lt;/b&gt; &lt;a href="https://aviatrix.com/ace/" rel="noopener noreferrer"&gt;https://aviatrix.com/ace/&lt;/a&gt;
&lt;/h2&gt;

&lt;h2&gt;
  
  
  &lt;b&gt;&lt;h6&gt;📆 Offer validity:&lt;/h6&gt;&lt;/b&gt; &lt;b&gt;&lt;strong&gt;Till October 1st 2020&lt;/strong&gt;&lt;/b&gt;
&lt;/h2&gt;

</description>
      <category>azure</category>
      <category>aws</category>
      <category>googlecloud</category>
      <category>cloud</category>
    </item>
    <item>
      <title>Demystifying [[environment]] in JavaScript Closure </title>
      <dc:creator>Divakar Kumar</dc:creator>
      <pubDate>Tue, 26 May 2020 09:58:21 +0000</pubDate>
      <link>https://dev.to/divakarkumar/javascript-closure-environment-4b0k</link>
      <guid>https://dev.to/divakarkumar/javascript-closure-environment-4b0k</guid>
      <description>&lt;p&gt;Hi all, For those who don't me I'm Divakar, Passionate developer with 5 years of experience in web and mobile development. I learned software development the hard way, following lots of confusing tutorials, failing to understand core concepts and finally having no idea how things work. So I wanted to help the community to&lt;br&gt;
understand it in a better way without any hassle.&lt;/p&gt;

&lt;p&gt;Before getting know about the closure i will start with couple of questions&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;h3&gt;&lt;strong&gt;Can you make a function to run only once ?&lt;/strong&gt;&lt;/h3&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;h3&gt;&lt;strong&gt;Can you make a function to memorize ?&lt;/strong&gt;&lt;/h3&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;By end of this article you will be able to answer those questions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;h3&gt;&lt;strong&gt;Closure:&lt;/strong&gt;&lt;/h3&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Every function in JavaScript is bound to have a [[ environment ]] or [[ scope ]] hidden property ,that have reference to the current lexical environment of their creation.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Do remember that lexical environment is theoretical and no one can get this object in console and manipulate it directly&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Closure is a function that also have this hidden property along with it ,which stores the state of the current lexical environment, by which it can have access to outer variables. This makes closure in JavaScript as one of the most powerful concept. &lt;/p&gt;

&lt;p&gt;Usually, a lexical environment gets removed from memory along with all the variables after the function calls finishes . But this is not the case in CLOSURE, it gets tied to the memory even after the function call finishes.&lt;/p&gt;

&lt;p&gt;From now on i will be calling this hidden [[ scope ]] or [[ environment ]] property as a backpack.&lt;/p&gt;

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

&lt;p&gt;In the above function , when getCounter() function call gets executed it runs in the execution context ,&lt;/p&gt;

&lt;p&gt;Step 1: It searches for counter variable in the local memory of the execution context&lt;/p&gt;

&lt;p&gt;Step 2: JS Engine cannot find the counter variable in the local memory of the execution context, now it looks into the backpack - Voila ! we found the counter variable and it picks up&lt;/p&gt;

&lt;p&gt;Step 3: It increments the counter and the value gets modified in the backpack ( persistent memory ) as well. So if the getCounter() is called again , then the counter variable value will be incremented to one.&lt;/p&gt;

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

&lt;p&gt;In the above code you could see that each time you initalize a variable with makeNewCounter , there will be independent backpacks available to getCounter and anotherCounter.&lt;/p&gt;

&lt;p&gt;Great ! 🎉🎉 Now the next time you use closure , you have clear idea what is happening behind the scenes.&lt;/p&gt;

&lt;p&gt;Since now you know about the closure and its actual working behind the scenes try to answer my first 2 questions &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;h3&gt;&lt;strong&gt;Can you make a function to run only once ?&lt;/strong&gt;&lt;/h3&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;h3&gt;&lt;strong&gt;Can you make a function to memorize ?&lt;/strong&gt;&lt;/h3&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>javascript</category>
      <category>interview</category>
      <category>closure</category>
      <category>beginners</category>
    </item>
    <item>
      <title>How a developer should handle Code reviewer?</title>
      <dc:creator>Divakar Kumar</dc:creator>
      <pubDate>Mon, 11 May 2020 10:46:15 +0000</pubDate>
      <link>https://dev.to/divakarkumar/how-developer-should-handle-a-code-reviewer-4j1</link>
      <guid>https://dev.to/divakarkumar/how-developer-should-handle-a-code-reviewer-4j1</guid>
      <description>&lt;p&gt;Hi all, For those who don't me I'm Divakar, Passionate developer with 5 years of experience in web and mobile development. I learned software development the hard way, following lots of confusing tutorials, failing to understand core concepts and finally having no idea how things work. So I wanted to help the community to &lt;br&gt;
understand it in a better way without any hassle.&lt;/p&gt;

&lt;p&gt;I would suggest you to read my previous post before getting into this topic . check here for my previous post &lt;/p&gt;


&lt;div class="ltag__link"&gt;
  &lt;a href="/divakarkumar" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--XG9D3N0n--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://res.cloudinary.com/practicaldev/image/fetch/s--5FoB6TxV--/c_fill%2Cf_auto%2Cfl_progressive%2Ch_150%2Cq_auto%2Cw_150/https://dev-to-uploads.s3.amazonaws.com/uploads/user/profile_image/381881/592d7b77-9bdf-4821-9163-c596dfb2a237.jpg" alt="divakarkumar image"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/divakarkumar/how-to-become-a-better-code-reviewer-part-1-code-review-32fp" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;How to become a better Code Reviewer - Part 1 : Code Review&lt;/h2&gt;
      &lt;h3&gt;Divakar Kumar ・ May  9 ・ 2 min read&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#codenewbie&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#computerscience&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#csharp&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#java&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


&lt;p&gt;Having said that now you get to know the mindset of a Code Reviewer , so as a developer/ author of the code let's see what are various responsibilities for us in order to deliver a product successfully.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Handling Code Reviewers:&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;h3&gt;&lt;strong&gt;Don't take it personal:&lt;/strong&gt;&lt;/h3&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We have a clear idea of how a mindset of a code reviewer is , the goal of him is to maintain our code base quality. So when he/she provides a review comment of your code, think of it as their attempt to help you, the codebase, and Company, rather than as a personal attack on you or your abilities.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--JMLGzdNl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://media.tenor.com/images/8069e0d2913284d7301bab50c4262dbf/tenor.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--JMLGzdNl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://media.tenor.com/images/8069e0d2913284d7301bab50c4262dbf/tenor.gif" width="4096"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;1) Don't respond in anger to review comments.&lt;br&gt;
2) If a reviewer's comment is not in a professional or polite or constructive way then talk to him in person or send a private mail to have a discussion about it. &lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;h3&gt;&lt;strong&gt;Fix:&lt;/strong&gt;&lt;/h3&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--TTwqqofD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://media.tenor.com/images/e5326ce5da905085c2e64d4b8f009573/tenor.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--TTwqqofD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://media.tenor.com/images/e5326ce5da905085c2e64d4b8f009573/tenor.gif" width="4096"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If a reviewer doesn't understand a particular piece of code it is obvious that other developers who is gonna work in this code base maybe in future will get to feel the same way. so rather than adding comments in the tool do fix the code. Try to find a simpler way to achieve the functionality.&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;h3&gt;&lt;strong&gt;Think:&lt;/strong&gt;&lt;/h3&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--F2icnPF8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://media1.tenor.com/images/eb4ba488503a0199a5ea35859da56060/tenor.gif%3Fitemid%3D8487001" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--F2icnPF8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://media1.tenor.com/images/eb4ba488503a0199a5ea35859da56060/tenor.gif%3Fitemid%3D8487001" width="4096"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;No matter how certain you are if a reviewer made a suggestion on your code base take a step back. Think about “Is the reviewer correct?”&lt;/p&gt;

&lt;p&gt;If you can’t answer that question, it’s likely the reviewer needs to clarify their comments.&lt;/p&gt;

&lt;p&gt;If you have considered it and think that you are right then respond with an explanation that why your way of approaching the solution would be better.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;&lt;h3&gt;&lt;strong&gt;Thanks ! Leave a comment :&lt;/strong&gt;&lt;/h3&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--zokkS5Bm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://media.tenor.com/images/a22a51ec2a7b6f777a6270bbea4ac828/tenor.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zokkS5Bm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://media.tenor.com/images/a22a51ec2a7b6f777a6270bbea4ac828/tenor.gif" width="4096"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thanks all for reading through this topic. Please leave a comment about your way of handling a code reviewer. &lt;/p&gt;

</description>
      <category>java</category>
      <category>csharp</category>
    </item>
    <item>
      <title>How to become a better Code Reviewer - Part 3 : How to write code review comments?</title>
      <dc:creator>Divakar Kumar</dc:creator>
      <pubDate>Sat, 09 May 2020 13:03:55 +0000</pubDate>
      <link>https://dev.to/divakarkumar/how-to-become-a-better-code-reviewer-part-3-how-to-write-code-review-comments-80b</link>
      <guid>https://dev.to/divakarkumar/how-to-become-a-better-code-reviewer-part-3-how-to-write-code-review-comments-80b</guid>
      <description>&lt;p&gt;When it comes to writing code review comments do make sure that you are polite ,kind and encourage developers .&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;h3&gt;&lt;strong&gt;Respect:&lt;/strong&gt;&lt;/h3&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;1) Be kind and helpful to the developer whose code you are reviewing.&lt;br&gt;
2) Make sure that you always comment about the code and not about the developer.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rXYN-q9B--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://media1.tenor.com/images/8fbbcce8f5a028d11ba58e12c3eafa61/tenor.gif%3Fitemid%3D12849792" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rXYN-q9B--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://media1.tenor.com/images/8fbbcce8f5a028d11ba58e12c3eafa61/tenor.gif%3Fitemid%3D12849792" width="4096"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;h3&gt;&lt;strong&gt;Explanation:&lt;/strong&gt;&lt;/h3&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;1) Always make sure to explain why you are making the comment &lt;br&gt;
2) Try to give a "good/valid" example so that it would help developer to understand. It is always necessary to provide examples.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--VJEjSc30--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://media1.tenor.com/images/25e7b0e804013a97b35eb2d61e7caad9/tenor.gif%3Fitemid%3D14522860" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--VJEjSc30--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://media1.tenor.com/images/25e7b0e804013a97b35eb2d61e7caad9/tenor.gif%3Fitemid%3D14522860" width="4096"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;h3&gt;&lt;strong&gt;Guidance:&lt;/strong&gt;&lt;/h3&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;1) Don't provide the solution or write code for developer rather provide useful information so that it is developer's responsibility to fix a change list.&lt;br&gt;
2) Maintain a balance between pointing out the problems and providing a guidance.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;&lt;h3&gt;&lt;strong&gt;Thanks:&lt;/strong&gt;&lt;/h3&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Thanks all for reading through this series . Hope you will be trying to implement this in real time practices and become a better code reviewer. If you like my post please do give feedback below , i will try to change if there are any mistakes in my future posts.&lt;/p&gt;

&lt;p&gt;Banner Image Courtesy : &lt;a href="https://www.freepik.com/free-photos-vectors/business"&gt;Business vector created by freepik - &lt;/a&gt;&lt;a href="http://www.freepik.com"&gt;&lt;/a&gt;&lt;a href="http://www.freepik.com"&gt;www.freepik.com&lt;/a&gt;&lt;/p&gt;

</description>
      <category>codenewbie</category>
      <category>computerscience</category>
      <category>csharp</category>
      <category>java</category>
    </item>
    <item>
      <title>How to become a better Code Reviewer - Part 2 : What does a Code Reviewer look for?</title>
      <dc:creator>Divakar Kumar</dc:creator>
      <pubDate>Sat, 09 May 2020 12:30:53 +0000</pubDate>
      <link>https://dev.to/divakarkumar/how-to-become-a-better-code-reviewer-part-2-what-code-reviewers-look-for-302b</link>
      <guid>https://dev.to/divakarkumar/how-to-become-a-better-code-reviewer-part-2-what-code-reviewers-look-for-302b</guid>
      <description>&lt;h2&gt;
  
  
  &lt;strong&gt;What Do Code Reviewers Look For?&lt;/strong&gt;
&lt;/h2&gt;




&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;h3&gt;&lt;strong&gt;Design:&lt;/strong&gt;&lt;/h3&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So what do i mean by design? I refer to design by the overall design of the change list.&lt;/p&gt;

&lt;p&gt;1) Check whether all the interactions of code in the change list make sense to you. &lt;br&gt;
2) Check whether the change is from library or the actual codebase.&lt;br&gt;
3) Check whether it integrates well with rest of the system.&lt;br&gt;
4) And also make sure whether it is a good time to add this functionality.&lt;/p&gt;



&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;h3&gt;&lt;strong&gt;Functionality:&lt;/strong&gt;&lt;/h3&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;1) Check whether the author of the code have done what he/she was intended to do based on the change list. &lt;br&gt;
2) Think in terms of the end-users and also the developers who is going to use this code in future .&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--GspWklTR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://media1.tenor.com/images/4890e6d67ba60228505ed91c6d51d424/tenor.gif%3Fitemid%3D16542478" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--GspWklTR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://media1.tenor.com/images/4890e6d67ba60228505ed91c6d51d424/tenor.gif%3Fitemid%3D16542478" width="4096"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;3) Think about the edge cases , looking for concurrency problems , and making sure that there are no bugs that you see just by looking at the code.&lt;br&gt;
4) If you don't have any idea about what is going on , you can have the developer/author of the code to give you a &lt;b&gt;demo of the functionality&lt;/b&gt; before going through the code.&lt;br&gt;
5) If any kind of &lt;b&gt;parallel programming&lt;/b&gt; is going on in the change list make sure there are no deadlocks or race conditions&lt;/p&gt;



&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;h3&gt;&lt;strong&gt;Code Complexity:&lt;/strong&gt;&lt;/h3&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--urtxHswO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://media1.tenor.com/images/a6c2b8c3685b4cf01841f2a34c7a5c68/tenor.gif%3Fitemid%3D13330243" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--urtxHswO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://media1.tenor.com/images/a6c2b8c3685b4cf01841f2a34c7a5c68/tenor.gif%3Fitemid%3D13330243" width="4096"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;1) If the author of the code approached more complex way and also in a way it can't be understood quickly then it means that he/she is likely to introduce bugs when they try to modify this code in future.&lt;br&gt;
2) &lt;b&gt;Generics&lt;/b&gt; are good but not always. A developer should know when it is likely to be approached using generics and when not to.&lt;/p&gt;



&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;h3&gt;&lt;strong&gt;Unit Testing:&lt;/strong&gt;&lt;/h3&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;1) Never approve a pull request that doesn't have corresponding unit test, integration, or end-to-end test. In general , tests should be added in the same change list&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Fvmx8j3---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://media1.tenor.com/images/9c077f58ddad4b19543a9fed0ff057db/tenor.gif%3Fitemid%3D4607935" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Fvmx8j3---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://media1.tenor.com/images/9c077f58ddad4b19543a9fed0ff057db/tenor.gif%3Fitemid%3D4607935" width="4096"&gt;&lt;/a&gt;&lt;br&gt;
2) Check whether tests actually fail when the code is broken , do they make simple and useful assertions , are they separated appropriately between test methods.&lt;br&gt;
3) Tests are equal importance as of to the actual code base , so check for complexity in unit test as well.&lt;/p&gt;



&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;h3&gt;&lt;strong&gt;Naming:&lt;/strong&gt;&lt;/h3&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A valid name is enough to fully communicate what the actual functionality is.&lt;/p&gt;

&lt;p&gt;1) Check whether the author of the code uses good/valid name for everything . It can be variable, method,class declaration literally everything.&lt;/p&gt;



&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;h3&gt;&lt;strong&gt;Comments:&lt;/strong&gt;&lt;/h3&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Comments are useful when they explain why some code exists and it should not be a place where to explain everything the code is doing. If the code isn't clear enough to explain itself , then it should be made simpler.&lt;/p&gt;

&lt;p&gt;1) Check whether there are clear comments and also whether those comments are actually necessary.&lt;/p&gt;



&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;h3&gt;&lt;strong&gt;Documentation:&lt;/strong&gt;&lt;/h3&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--R3gqGzvp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://media.tenor.com/images/562eb8bd6d07427af8d599df8d1319d6/tenor.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--R3gqGzvp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://media.tenor.com/images/562eb8bd6d07427af8d599df8d1319d6/tenor.gif" width="4096"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;1) Ask for documentation from the author of the code and also ask them to update associated documentation for the code change that they made&lt;br&gt;
2) Also consider whether a part of the documentation need to be deleted or so, when the particular functionality is removed.&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;&lt;h3&gt;&lt;strong&gt;Congratulations:&lt;/strong&gt;&lt;/h3&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--K_ceTb77--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://media.tenor.com/images/53283745e90e50795b5ab1bf26841a88/tenor.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--K_ceTb77--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://media.tenor.com/images/53283745e90e50795b5ab1bf26841a88/tenor.gif" width="4096"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h3&gt;
  
  
  &lt;strong&gt;Next Steps:&lt;/strong&gt;
&lt;/h3&gt;


&lt;div class="ltag__link"&gt;
  &lt;a href="/divakarkumar" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--XG9D3N0n--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://res.cloudinary.com/practicaldev/image/fetch/s--5FoB6TxV--/c_fill%2Cf_auto%2Cfl_progressive%2Ch_150%2Cq_auto%2Cw_150/https://dev-to-uploads.s3.amazonaws.com/uploads/user/profile_image/381881/592d7b77-9bdf-4821-9163-c596dfb2a237.jpg" alt="divakarkumar image"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/divakarkumar/how-to-become-a-better-code-reviewer-part-3-how-to-write-code-review-comments-80b" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;How to become a better Code Reviewer - Part 3 : How to write code review comments?&lt;/h2&gt;
      &lt;h3&gt;Divakar Kumar ・ May  9 ・ 1 min read&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#codenewbie&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#computerscience&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#csharp&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#java&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


&lt;p&gt;Banner Image Courtesy : &lt;a href="https://www.freepik.com/free-photos-vectors/business"&gt;Business vector created by freepik - &lt;/a&gt;&lt;a href="http://www.freepik.com"&gt;&lt;/a&gt;&lt;a href="http://www.freepik.com"&gt;www.freepik.com&lt;/a&gt;&lt;/p&gt;

</description>
      <category>codenewbie</category>
      <category>computerscience</category>
      <category>csharp</category>
      <category>java</category>
    </item>
    <item>
      <title>How to become a better Code Reviewer - Part 1 : Code Review</title>
      <dc:creator>Divakar Kumar</dc:creator>
      <pubDate>Sat, 09 May 2020 12:30:33 +0000</pubDate>
      <link>https://dev.to/divakarkumar/how-to-become-a-better-code-reviewer-part-1-code-review-32fp</link>
      <guid>https://dev.to/divakarkumar/how-to-become-a-better-code-reviewer-part-1-code-review-32fp</guid>
      <description>&lt;p&gt;Hi all, For those who don't me I'm Divakar, Passionate developer with 5 years of experience in web and mobile development. I learned software development the hard way, following lots of confusing tutorials, failing to understand core concepts and finally having no idea how things work. So I wanted to help the community to understand it in a better way without any hassle.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Code Review&lt;/strong&gt;:
&lt;/h3&gt;

&lt;p&gt;Code review has been widely adopted by and adapted to open source and industrial projects. It is a process where someone other than the author(s) of the chunk of code evaluates the code. Most of the companies adopted this process to ensure quality of the code and product.&lt;/p&gt;

&lt;p&gt;The purpose of code review is to make sure that the overall code health of codebase is improving over time , having said that this becomes tricky since over time codebase degrade when a team is under significant time constraints and they feel to take shortcuts inorder to complete the tasks.&lt;/p&gt;

&lt;p&gt;As a reviewer you want to ensure that codebase stays consistent and maintainable.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--EZA6itjC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://media1.tenor.com/images/10a5217e9ef0aed7e6e270ca0a68c83e/tenor.gif%3Fitemid%3D5637869" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--EZA6itjC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://media1.tenor.com/images/10a5217e9ef0aed7e6e270ca0a68c83e/tenor.gif%3Fitemid%3D5637869" width="4096"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Prepare yourself&lt;/strong&gt;:
&lt;/h3&gt;

&lt;p&gt;Before proceeding with a code review I always prepare myself to accept these things&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;No Fear&lt;/strong&gt;
The first and most popular is the fear of offending an author of the code. Don't pretend that you didn't see his/her bugs today ,so that tomorrow he/she will ignore your mistakes.This is the kind of attitude this fear produces.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No Perfect code&lt;/strong&gt; 
Key point is that there is no such thing as "perfect" code only a "better" code. Don't make the author to change every tiny piece of the code ,before granting the approval.Rather, you should seek continuous improvement in terms of maintainability , readability and understandability of the system.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mentoring&lt;/strong&gt;
Sharing knowledge is part of improving the code health of system over time. You can leave comments that help a developer to learn something new . &lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;Next Steps:&lt;/strong&gt;
&lt;/h3&gt;


&lt;div class="ltag__link"&gt;
  &lt;a href="/divakarkumar" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--XG9D3N0n--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://res.cloudinary.com/practicaldev/image/fetch/s--5FoB6TxV--/c_fill%2Cf_auto%2Cfl_progressive%2Ch_150%2Cq_auto%2Cw_150/https://dev-to-uploads.s3.amazonaws.com/uploads/user/profile_image/381881/592d7b77-9bdf-4821-9163-c596dfb2a237.jpg" alt="divakarkumar image"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/divakarkumar/how-to-become-a-better-code-reviewer-part-2-what-code-reviewers-look-for-302b" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;How to become a better Code Reviewer - Part 2 : What does a Code Reviewer look for?&lt;/h2&gt;
      &lt;h3&gt;Divakar Kumar ・ May  9 ・ 3 min read&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#codenewbie&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#computerscience&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#csharp&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#java&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


&lt;p&gt;Banner Image Courtesy : &lt;a href="https://www.freepik.com/free-photos-vectors/business"&gt;Business vector created by freepik - &lt;/a&gt;&lt;a href="http://www.freepik.com"&gt;&lt;/a&gt;&lt;a href="http://www.freepik.com"&gt;www.freepik.com&lt;/a&gt;&lt;/p&gt;

</description>
      <category>codenewbie</category>
      <category>computerscience</category>
      <category>csharp</category>
      <category>java</category>
    </item>
  </channel>
</rss>
