<?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: vinoth</title>
    <description>The latest articles on Forem by vinoth (@vinothrao).</description>
    <link>https://forem.com/vinothrao</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%2F185407%2F3ee1ade3-9bc0-4f35-b92f-ac20f6466f87.jpg</url>
      <title>Forem: vinoth</title>
      <link>https://forem.com/vinothrao</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/vinothrao"/>
    <language>en</language>
    <item>
      <title>[Boost]</title>
      <dc:creator>vinoth</dc:creator>
      <pubDate>Thu, 24 Apr 2025 02:50:57 +0000</pubDate>
      <link>https://forem.com/vinothrao/-1o1l</link>
      <guid>https://forem.com/vinothrao/-1o1l</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/pranta/why-being-a-software-developer-sucks-in-2025-46ia" class="crayons-story__hidden-navigation-link"&gt;Why Being a Software Developer Sucks in 2025&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/pranta" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F542277%2F3f567698-b577-4158-8015-a2b2e72b2994.jpg" alt="pranta profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/pranta" class="crayons-story__secondary fw-medium m:hidden"&gt;
              PRANTA Dutta
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                PRANTA Dutta
                
              
              &lt;div id="story-author-preview-content-2418315" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/pranta" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F542277%2F3f567698-b577-4158-8015-a2b2e72b2994.jpg" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;PRANTA Dutta&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/pranta/why-being-a-software-developer-sucks-in-2025-46ia" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Apr 19 '25&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/pranta/why-being-a-software-developer-sucks-in-2025-46ia" id="article-link-2418315"&gt;
          Why Being a Software Developer Sucks in 2025
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/softwaredevelopment"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;softwaredevelopment&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/softwareengineering"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;softwareengineering&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/softwaredeveloper"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;softwaredeveloper&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/pranta/why-being-a-software-developer-sucks-in-2025-46ia" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/fire-f60e7a582391810302117f987b22a8ef04a2fe0df7e3258a5f49332df1cec71e.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;90&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/pranta/why-being-a-software-developer-sucks-in-2025-46ia#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              24&lt;span class="hidden s:inline"&gt; comments&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            5 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>programming</category>
      <category>softwaredevelopment</category>
      <category>softwareengineering</category>
      <category>softwaredeveloper</category>
    </item>
    <item>
      <title>Azure SignalR functions - An intro</title>
      <dc:creator>vinoth</dc:creator>
      <pubDate>Sun, 22 Sep 2019 15:12:47 +0000</pubDate>
      <link>https://forem.com/vinothrao/azure-signalr-functions-an-intro-2b71</link>
      <guid>https://forem.com/vinothrao/azure-signalr-functions-an-intro-2b71</guid>
      <description>&lt;p&gt;Pushing real time messages to web app through Azure functions SignalR integration and ServiceBus:&lt;/p&gt;

&lt;p&gt;For signalR the example is always chat applications. I wanted to take a different route and provide an example of real time scenario as following.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; When a customer places an order the admin will receive a notification&lt;/li&gt;
&lt;li&gt; When the Admin accept/reject the order the customer will receive notification.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;As the real time collaboration increases we are often in a situation to provide updates to the applications then and there an event occurs. In order to provide real time updates or push contents to the consumers from the server we use signalR library provided by Microsoft. In simple words, when we want push some contents from server to the client application (ex:webapp) we use signalR. &lt;br&gt;
Let me explain using the demo project I have created then the things would be clear.&lt;/p&gt;

&lt;p&gt;The following Azure services are used:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Service bus queue – to de-couple Admin and customer end&lt;/li&gt;
&lt;li&gt; Azure functions with SignalR – to push real time notifications.&lt;/li&gt;
&lt;li&gt; Azure function Service Bus bindings – to process the messages.&lt;/li&gt;
&lt;li&gt; Azure SignalR&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The below is the project structure:&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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F75mjumoxrzbxzsz2cvym.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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F75mjumoxrzbxzsz2cvym.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Azure Functions :&lt;br&gt;
Process Order  - Service bus binding to process the incoming messages when an order is placed by the customer and also passes a message “order Placed”  to the signalR which will be pushed to admin webapp .&lt;/p&gt;

&lt;p&gt;SignalRNegotiate : &lt;br&gt;
This negotiate function is required by Azure signalR service where clients do the handshake and get the connection details of signalR. This is the communication point between two ends of SignalR publisher and subscriber.&lt;br&gt;
UpdateOrderStatus :&lt;br&gt;
This function will be called when Admin accept/reject the order status and put the respective message to the signalR and then pushed to the customer.&lt;br&gt;
The above 3 functions requires Azure SignalR connection string. The Azure signalR can be created from the azure portal. &lt;/p&gt;

&lt;p&gt;Let’s dive a bit into the application.&lt;/p&gt;

&lt;p&gt;In the Customer application HomeController - &amp;gt; Place Order method, the details of the order is been placed into the service bus queue, which will trigger the Azure function “ProcessOrder”. The “ProcessOrder” azure function, save the details to the DB and place a message in the signalR notification hub with specific target name,in our example it is “productordered”. Whoever listening to this SignalR target will be notified and the data will be shared . &lt;br&gt;
  using (var ctx = new EventMessagingDemoContext())&lt;br&gt;
            {&lt;br&gt;
                ctx.Orders.Add(order);&lt;br&gt;
                ctx.SaveChanges();&lt;br&gt;
            }&lt;br&gt;
            signalRMessages.AddAsync(&lt;br&gt;
                   new SignalRMessage&lt;br&gt;
                   {&lt;br&gt;
                       Target = "productOrdered",&lt;br&gt;
                       Arguments = new[] { order }&lt;br&gt;
                   });&lt;br&gt;
        }&lt;br&gt;
In the admin end the SignalR service is connected via Javascript. The  withURl() function specifies the “negotiate”  Azure function. Through this it receives the SignalR connection and waiting for messages on the “productordered’ target. Once received the alert will be shown with the message.&lt;/p&gt;

&lt;p&gt;var  connection = new signalR.HubConnectionBuilder()&lt;br&gt;
            .withUrl("&lt;a href="http://localhost:7074/api/%22" rel="noopener noreferrer"&gt;http://localhost:7074/api/"&lt;/a&gt;)&lt;br&gt;
            .configureLogging(signalR.LogLevel.Information)&lt;br&gt;
            .build();&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    connection.start().then(function () {
        console.log("connected");
    });

    connection.on('productOrdered', function (order) {
        alert("order recieved for the product " + order.ProductName + ".Please refresh!");
    });
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;The same way the accept/reject message is communicated to the customer via SignalR.&lt;/p&gt;

&lt;p&gt;The source code can be found at:&lt;br&gt;
&lt;a href="https://github.com/vinothrao/EventMessagingDemo" rel="noopener noreferrer"&gt;https://github.com/vinothrao/EventMessagingDemo&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Conclusion:&lt;br&gt;
With the above sample we could get a basic idea and understanding of how SignalR works and the purpose of it.&lt;/p&gt;

</description>
      <category>azure</category>
      <category>signalr</category>
      <category>azurefunctions</category>
      <category>microsoft</category>
    </item>
  </channel>
</rss>
