<?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: Akshay Ghadge</title>
    <description>The latest articles on DEV Community by Akshay Ghadge (@a_ghadge).</description>
    <link>https://dev.to/a_ghadge</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%2F1602576%2F95f58914-111c-424b-946c-b20fbaca6022.jpg</url>
      <title>DEV Community: Akshay Ghadge</title>
      <link>https://dev.to/a_ghadge</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/a_ghadge"/>
    <language>en</language>
    <item>
      <title>Making AI Transparent: Understanding AG UI and How It Improves AI User Experience</title>
      <dc:creator>Akshay Ghadge</dc:creator>
      <pubDate>Tue, 17 Mar 2026 08:56:13 +0000</pubDate>
      <link>https://dev.to/a_ghadge/making-ai-transparent-understanding-ag-ui-and-how-it-improves-ai-user-experience-2jk</link>
      <guid>https://dev.to/a_ghadge/making-ai-transparent-understanding-ag-ui-and-how-it-improves-ai-user-experience-2jk</guid>
      <description>&lt;p&gt;Artificial Intelligence is increasingly being integrated into modern applications. From generating content to analyzing data, AI systems are capable of performing complex tasks in the background.&lt;/p&gt;

&lt;p&gt;However, many applications face a common problem when integrating AI features.&lt;/p&gt;

&lt;p&gt;Users often cannot see &lt;strong&gt;what the AI system is doing while it works&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This lack of visibility can make even a well-functioning system feel confusing or unreliable.&lt;/p&gt;

&lt;p&gt;To address this, a concept called &lt;strong&gt;AG UI (Agent UI)&lt;/strong&gt; is gaining importance.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is AG UI?
&lt;/h2&gt;

&lt;p&gt;AG UI (Agent UI) is an interaction layer designed to &lt;em&gt;connect AI processes with the user interface in a transparent way&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Instead of hiding the AI workflow behind a loading spinner or blank screen, AG UI allows the system to show users &lt;strong&gt;what the AI is doing in real time&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;For example, an AI task might involve several steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Fetching data&lt;/li&gt;
&lt;li&gt;Processing the information&lt;/li&gt;
&lt;li&gt;Running analysis&lt;/li&gt;
&lt;li&gt;Generating the final output&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;AG UI makes these steps visible to the user through the interface.&lt;/p&gt;

&lt;p&gt;This helps users understand that the system is actively working and progressing toward a result&lt;/p&gt;

&lt;h2&gt;
  
  
  Problems Without AG UI
&lt;/h2&gt;

&lt;p&gt;In many AI-powered applications today, the interaction flow looks something like this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;A user clicks a button to start an AI task.&lt;/li&gt;
&lt;li&gt;The screen shows a loading indicator.&lt;/li&gt;
&lt;li&gt;The user waits without any visibility into the process.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;During this time, users often wonder:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Is the AI still working?&lt;/li&gt;
&lt;li&gt;Did something fail?&lt;/li&gt;
&lt;li&gt;Should I refresh the page?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Even if the AI is functioning correctly, the experience can feel broken because the user cannot see the progress.&lt;/p&gt;

&lt;p&gt;This leads to several issues:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Reduced user trust&lt;/li&gt;
&lt;li&gt;Multiple repeated requests&lt;/li&gt;
&lt;li&gt;Poor user experience&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The problem is not always performance.&lt;br&gt;
Often, it is simply a lack of transparency.&lt;/p&gt;

&lt;h2&gt;
  
  
  Challenges Teams Face While Solving This
&lt;/h2&gt;

&lt;p&gt;Many development teams try to solve this problem by adding small UI improvements such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Loading spinners&lt;/li&gt;
&lt;li&gt;Static progress bars&lt;/li&gt;
&lt;li&gt;“Processing…” messages&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;While these elements indicate that something is happening, they do not reflect the &lt;strong&gt;actual progress of the AI task&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Another challenge is that teams often build custom progress tracking systems for each project. This can lead to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Repeated development effort&lt;/li&gt;
&lt;li&gt;Inconsistent user experiences&lt;/li&gt;
&lt;li&gt;Additional maintenance overhead&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There is also no standardized way to communicate AI progress from the backend to the frontend.&lt;/p&gt;

&lt;p&gt;This is where the concept of AG UI becomes useful.&lt;/p&gt;

&lt;h2&gt;
  
  
  Our Approach
&lt;/h2&gt;

&lt;p&gt;To address these challenges, we explored how AI systems naturally execute tasks.&lt;/p&gt;

&lt;p&gt;Most AI workflows consist of multiple internal steps such as retrieving data, processing it, and generating responses.&lt;/p&gt;

&lt;p&gt;Instead of hiding these steps, we asked a simple question:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What if the application could show these steps to the user while the AI is running&lt;/strong&gt;?&lt;/p&gt;

&lt;p&gt;By exposing these stages as progress updates, the AI interaction becomes clearer and easier to understand.&lt;/p&gt;

&lt;p&gt;This approach allows users to follow the process rather than waiting in uncertainty.&lt;/p&gt;

&lt;h2&gt;
  
  
  Our Solution: elastikteams_ag_ui
&lt;/h2&gt;

&lt;p&gt;Based on this approach, we developed a lightweight package called elastikteams_ag_ui.&lt;/p&gt;

&lt;p&gt;The goal of this package is to help developers easily implement the AG UI concept in their applications.&lt;/p&gt;

&lt;p&gt;Just like the AG UI concept itself, our package is also framework-agnostic.&lt;/p&gt;

&lt;p&gt;This means it is not tied to any specific technology stack and can be integrated into:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Frontend frameworks like React, Angular, Vue, or plain JavaScript&lt;/li&gt;
&lt;li&gt;Backend systems like Node.js, Python, or any AI service&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal of this package is to help developers implement AG UI without worrying about framework limitations.&lt;/p&gt;

&lt;p&gt;Instead of building custom progress-tracking logic for every project, developers can use this package to send structured updates from the backend to the frontend.&lt;/p&gt;

&lt;p&gt;These updates can include information such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Current AI execution step&lt;/li&gt;
&lt;li&gt;Progress updates&lt;/li&gt;
&lt;li&gt;Generated content&lt;/li&gt;
&lt;li&gt;Completion or failure status&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This enables applications to display &lt;strong&gt;real-time AI activity&lt;/strong&gt; in a consistent and transparent way.&lt;/p&gt;

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

&lt;h2&gt;
  
  
  How It Works
&lt;/h2&gt;

&lt;p&gt;The idea behind the package is straightforward.&lt;/p&gt;

&lt;p&gt;When an AI process starts, the backend sends small progress updates during different stages of execution.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;Step 1 – Fetching required data&lt;br&gt;
Step 2 – Processing information&lt;br&gt;
Step 3 – Running AI analysis&lt;br&gt;
Step 4 – Generating response&lt;/p&gt;

&lt;p&gt;Each of these steps can be communicated to the frontend.&lt;/p&gt;

&lt;p&gt;The user interface can then display this information in a structured way, allowing users to see the progress of the AI task as it happens.&lt;/p&gt;

&lt;p&gt;From the user's perspective, the experience becomes much clearer:&lt;/p&gt;

&lt;p&gt;Instead of waiting without context, users can follow the workflow as it progresses.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Matters
&lt;/h2&gt;

&lt;p&gt;AI systems are powerful, but they often feel like a &lt;strong&gt;black box&lt;/strong&gt; to users.&lt;/p&gt;

&lt;p&gt;AG UI helps solve this problem by making AI workflows visible and understandable.&lt;/p&gt;

&lt;p&gt;By exposing AI progress in real time:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Users gain confidence in the system&lt;/li&gt;
&lt;li&gt;Applications feel more responsive&lt;/li&gt;
&lt;li&gt;Developers can create better user experiences&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The AI itself may not change, but the way users interact with it becomes significantly better.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>ui</category>
      <category>ux</category>
      <category>agents</category>
    </item>
    <item>
      <title>Choosing Between Claude and GPT: A Comparative Guide for Developers</title>
      <dc:creator>Akshay Ghadge</dc:creator>
      <pubDate>Tue, 31 Dec 2024 17:56:06 +0000</pubDate>
      <link>https://dev.to/a_ghadge/claude-vs-gpt-4ppk</link>
      <guid>https://dev.to/a_ghadge/claude-vs-gpt-4ppk</guid>
      <description>&lt;p&gt;In the world of AI-powered tools, choosing/selecting the right language model is playing key role in the projects. We need to evaluate tools not just for their capabilities but also for their cost-efficiency, simplicity, and suitability based on the different requirements. In this blog, will compare two prominent AI models: &lt;strong&gt;Claude&lt;/strong&gt;(from Anthropic) and &lt;strong&gt;GPT&lt;/strong&gt; (from OpenAI).&lt;/p&gt;

&lt;h2&gt;
  
  
  Overview of Claude and GPT
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Claude&lt;/strong&gt;&lt;br&gt;
Claude is a language model developed by Anthropic, designed for safe and helpful AI interaction. Like other large language models, Claude can generate text based on input prompts. It performs well in scenarios requiring logical reasoning, summarization, and generating creative content.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Strengths&lt;/strong&gt;: Focuses on being safe to use, handles conversations smoothly on its own, and aligns well with values and principles.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Best For&lt;/strong&gt;: Great for tasks that need clear results, safe interactions, and careful handling, like helping customers, summarizing legal documents, or managing sensitive chats.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;GPT&lt;/strong&gt;&lt;br&gt;
GPT is a more generalized model with powerful natural language understanding and generation capabilities. Its API provides robust flexibility, enabling use across diverse domains, from coding assistance to content creation.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Strengths&lt;/strong&gt;: High versatility, advanced language understanding, and broad domain knowledge&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Best For&lt;/strong&gt;: Use cases requiring adaptability and cutting-edge performance, like real-time data analysis, creative writing, and technical development.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Performance Comparison: Claude vs. GPT
&lt;/h2&gt;

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

&lt;h2&gt;
  
  
  Which Model Shines Where?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;When to Use Claude&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Customer Support Chatbots&lt;/strong&gt;: Claude’s friendly conversational approach and focus on safe design make it great for helping users in important or delicate situations.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Document Summarization&lt;/strong&gt;: Excels at extracting key points from legal, financial, or research documents.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Ethical AI Applications&lt;/strong&gt;: Great at pulling out the most important details from legal, financial, or research papers.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;When to Use GPT&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Code Generation and Debugging&lt;/strong&gt;: GPT is great at writing, improving, and fixing code in different programming languages.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Data Analysis and Visualization&lt;/strong&gt;: Great for working with live data to create trends, suggestions, or charts instantly.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Cost Implications
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Claude&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Pricing&lt;/strong&gt;: Usually costs less than GPT for most common tasks, making it a budget-friendly option for simpler use cases.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Recommendation&lt;/strong&gt;: For startups or projects with limited budgets and moderate performance needs, using Claude is a good choice because it is cost-effective and can handle moderate tasks well.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;GPT&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Pricing&lt;/strong&gt;: GPT-4 API comes with premium pricing, meaning it can be expensive, especially for startups or projects with limited budgets. You might want to consider using it for specific tasks where higher performance is needed, while opting for lower-cost alternatives for other tasks.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Recommendation&lt;/strong&gt;: Suitable for businesses needing state-of-the-art performance, flexibility, or a competitive edge in innovation.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Simplicity and Developer Experience
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Claude&lt;/strong&gt;&lt;br&gt;
Claude’s interface is beginner-friendly, making it a great choice for newcomers to AI. With minimal tuning, you can achieve decent results for common tasks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GPT&lt;/strong&gt;&lt;br&gt;
GPT provides extensive documentation and customization options but requires a deeper understanding of AI to unlock its full potential. For experienced developers, this means unparalleled flexibility.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Recommendations
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Go with Claude if&lt;/strong&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;You prioritize safety and ethical considerations.&lt;/li&gt;
&lt;li&gt;You need a cost-effective solution for conversational tasks.&lt;/li&gt;
&lt;li&gt;Your use case revolves around summarization, reasoning, or basic 
customer interactions.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Choose GPT if&lt;/strong&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;You need high versatility and cutting-edge performance.&lt;/li&gt;
&lt;li&gt;Your project demands complex tasks like programming assistance or 
real-time analysis.&lt;/li&gt;
&lt;li&gt;Budget is less of a concern compared to results.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>llm</category>
    </item>
    <item>
      <title>Optimizing Telemetry Tracking with Azure Application Insights: A Case Study</title>
      <dc:creator>Akshay Ghadge</dc:creator>
      <pubDate>Mon, 18 Nov 2024 11:51:00 +0000</pubDate>
      <link>https://dev.to/a_ghadge/optimizing-telemetry-tracking-with-azure-application-insights-a-case-study-23go</link>
      <guid>https://dev.to/a_ghadge/optimizing-telemetry-tracking-with-azure-application-insights-a-case-study-23go</guid>
      <description>&lt;p&gt;In today's fast-paced digital world, having the right insights into application performance and user behavior is crucial for businesses. For this purpose, telemetry tracking is vital to understand user interactions, server load, and overall app performance. In this blog, I'll discuss a solution for a client’s requirement to track requests from both mobile and web platforms and how we implemented telemetry tracking using Azure Application Insights.&lt;/p&gt;

&lt;h2&gt;
  
  
  Client's Need
&lt;/h2&gt;

&lt;p&gt;Our client, a large-scale enterprise, needed to track how many requests were coming from mobile and web platforms over the past month. The goal was to get insights into user interactions, especially for different platforms, while ensuring minimal impact on system performance.&lt;/p&gt;

&lt;p&gt;The client’s core needs were:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Real-time telemetry to track requests from different platforms (mobile and web).&lt;/li&gt;
&lt;li&gt;Ensuring that tracking data was efficient without overwhelming the system.&lt;/li&gt;
&lt;li&gt;Simplifying the way telemetry data was processed and viewed in Azure Application Insights.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Approaches and Different Solutions
&lt;/h2&gt;

&lt;p&gt;When we were tasked with implementing telemetry tracking for the client, we explored several different approaches. Below, I’ll Walk through the most notable solutions we considered:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Tracking Telemetry Using trackEvent&lt;/strong&gt;&lt;br&gt;
We decided to use Azure Application Insights to track events related to requests. Using the &lt;strong&gt;&lt;em&gt;trackEvent&lt;/em&gt;&lt;/strong&gt; API, we could easily log telemetry data without creating excessive records for every individual request, which was a major challenge in our case.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why we chose trackEvent :&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Single Event Per Request:&lt;/strong&gt; Unlike other telemetry methods, such as trackRequest, which would create a record for every request and could result in a flood of data, &lt;em&gt;&lt;strong&gt;trackEvent&lt;/strong&gt;&lt;/em&gt; allowed us to log a single entry per request. This helped avoid data clutter.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Efficient Use of Azure Resources&lt;/strong&gt;: By logging only meaningful events rather than tracking every HTTP request or dependency, we kept the telemetry data efficient and minimized overhead on our Application Insights.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Custom Properties&lt;/strong&gt;: We could attach custom properties like requestOrigin (mobile or web) and other request metadata (method, URL, body parameters) to better understand the nature of the traffic.
Here's a simplified version of how we implemented the &lt;strong&gt;&lt;em&gt;trackEvent&lt;/em&gt;&lt;/strong&gt;:
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let clientAppInsights: any = null;
try {

    if (config.appInsightsKey) {
      const appInsights = require('applicationinsights');
        appInsights.setup(config.appInsightsKey)
        .setAutoCollectRequests(true)
        .setAutoCollectPerformance(true)
        .setAutoCollectExceptions(true)
        .setAutoCollectDependencies(true)
        .start();

    clientAppInsights = appInsights.defaultClient;
    }
} catch (error) {
    console.error('Application Insights not configured:', error);
}

clientAppInsights.trackEvent({
  name: 'Track Caller Platform',
  properties: {
    originRequest: requestOrigin,
    method: req.method,
    url: req.originalUrl,
    bodyPara: req.body
  }
});
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;2. Other Telemetry Solutions Explored&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;trackRequest&lt;/strong&gt;: Initially, I considered using trackRequest, which automatically logs every HTTP request. However, this resulted in multiple entries for each request, which was problematic when trying to track high-traffic periods. The overhead created by too many individual entries was inefficient for our client’s use case.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;trackDependency&lt;/strong&gt;: This method is generally used to track external dependencies (like database queries or service calls). While it would have captured performance metrics, it wasn’t the best fit for tracking user requests based on platform, as the metadata we needed wasn’t specific to dependencies.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;trackException&lt;/strong&gt;: While useful for tracking errors, this method wasn’t relevant in this case since we were more interested in tracking request volume, not failures.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Why &lt;em&gt;trackEvent&lt;/em&gt; is the Best Fit
&lt;/h2&gt;

&lt;p&gt;After evaluating the alternatives, we found that &lt;strong&gt;&lt;em&gt;trackEvent&lt;/em&gt;&lt;/strong&gt; offered the best balance between simplicity, efficiency, and scalability. By using &lt;strong&gt;_trackEvent _&lt;/strong&gt;, we avoided the pitfalls of redundant data entries while ensuring that we could track key request data with custom properties such as request origin (mobile vs. web). Additionally, it helped us minimize resource consumption by logging only essential events and avoiding overuse of telemetry APIs.&lt;/p&gt;
&lt;h2&gt;
  
  
  Running Queries in Application Insights: Filtering Telemetry Data
&lt;/h2&gt;

&lt;p&gt;To gain insights from the telemetry data logged in Azure Application Insights, we often use &lt;strong&gt;Kusto Query Language (KQL)&lt;/strong&gt; in the Logs section. One common scenario is filtering data based on a custom property, such as identifying requests originating from the web platform.&lt;/p&gt;

&lt;p&gt;Here’s how you can execute the following query to filter telemetry events:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;customEvents
| where customDimensions.origineRequest == "Web"

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

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;customEvents
| where customDimensions.origineRequest == "Mobile"

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

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Key Benefits of &lt;em&gt;trackEvent&lt;/em&gt; for This Use Case:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Custom Event Data&lt;/strong&gt;: The ability to attach custom properties like originRequest, method, and bodyPara allowed us to track the data that was most important to the client.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Performance Efficiency&lt;/strong&gt;: Using a single event log per request meant fewer records in Application Insights, avoiding unnecessary noise and data overload.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Challenges Faced
&lt;/h2&gt;

&lt;p&gt;While the solution worked well, we did encounter some challenges:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Token Management&lt;/strong&gt;: Verifying JWT tokens for each request to ensure that telemetry data was linked to the correct user and platform required careful token handling.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Handling Unauthenticated Requests&lt;/strong&gt;: Requests without proper tokens had to be rejected to avoid incomplete or inaccurate data being sent to Application Insights.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Implementing telemetry tracking with Azure Application Insights enabled the client to gain a clear understanding of their platform's usage over time, specifically distinguishing between mobile and web requests. After evaluating various methods, we chose &lt;strong&gt;&lt;em&gt;trackEvent&lt;/em&gt;&lt;/strong&gt; as the most efficient and scalable solution. This approach allowed us to capture detailed insights without overwhelming the system with excessive data, and it provided the client with an accurate view of request volume and platform usage.&lt;/p&gt;

&lt;p&gt;If you are also considering implementing telemetry tracking for your application, consider using &lt;strong&gt;&lt;em&gt;trackEvent&lt;/em&gt;&lt;/strong&gt; for scenarios like this, where you need to log specific events without flooding your telemetry system with every single HTTP request.&lt;/p&gt;

</description>
      <category>azure</category>
      <category>appinsights</category>
      <category>logevents</category>
    </item>
    <item>
      <title>Exploring Anthropic Claude: A Safe and Ethical AI Assistant</title>
      <dc:creator>Akshay Ghadge</dc:creator>
      <pubDate>Thu, 22 Aug 2024 10:59:28 +0000</pubDate>
      <link>https://dev.to/a_ghadge/exploring-anthropic-claude-a-safe-and-ethical-ai-assistant-34j</link>
      <guid>https://dev.to/a_ghadge/exploring-anthropic-claude-a-safe-and-ethical-ai-assistant-34j</guid>
      <description>&lt;h2&gt;
  
  
  &lt;strong&gt;What is Anthropic?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Anthropic&lt;/strong&gt; is an artificial intelligence research company based in the San Francisco Area. They are known for developing large language models and AI systems, and Claude AI assistant. Anthropic was founded in 2021 and focuses on developing safe and ethical AI that can be beneficial to humanity. They are particularly interested in creating AI systems that are aligned with human values and can be reliably used to assist humans in various tasks.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;What is Claude?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Claude&lt;/strong&gt; is a language model developed by Anthropic, designed for safe and helpful AI interaction. Like other large language models, Claude can generate text based on input prompts, making it a powerful tool for various natural language processing (NLP) tasks. However, what sets Claude apart is Anthropic’s emphasis on developing AI that is both aligned with human values and transparent in its operation.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Anthropic API vs. Claude.ai&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;We Can leverage &lt;a href="https://console.anthropic.com/settings/organization" rel="noopener noreferrer"&gt;Anthropic API&lt;/a&gt; or &lt;a href="https://claude.ai/new" rel="noopener noreferrer"&gt;Claude.ai&lt;/a&gt; depending on our needs. &lt;br&gt;
• &lt;strong&gt;Anthropic API&lt;/strong&gt; is mostly used for integrating Claude models into applications, allowing developers to build conversational AI systems, generate text, summarize content, and perform various NLP tasks programmatically. It is ideal for backend services, automating processes, and enhancing existing workflows with AI capabilities.&lt;br&gt;
• &lt;strong&gt;Claude.ai&lt;/strong&gt; is mostly used for providing direct, interactive access to Claude models through a user-friendly interface. It's great for users who want to explore AI capabilities without needing to code, offering features like chat-based interactions, content generation, brainstorming assistance, and quick access to AI-driven insights.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Pricing and Plans&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Claude API follows &lt;strong&gt;pay-per-use&lt;/strong&gt; approach. Every time you send a request to Anthropic's servers, you'll pay based on the number of tokens in the prompt (input) and the response (output). &lt;br&gt;
• Credits must be purchased prior to using the API, and your credits will be applied to your usage according to the current pricing.&lt;br&gt;
• If we run out of credits, we will no longer be able to call the API or use Workbench.&lt;br&gt;
• We can choose to set up an auto-reload that purchases additional credits when our balance falls below a set limit.&lt;/p&gt;

&lt;p&gt;Based on the requirements for our individual or an organization, we can decide which Build Tier we need to select from below&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0qheqaz1pjfahv1syl86.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0qheqaz1pjfahv1syl86.png" alt="Image description" width="800" height="354"&gt;&lt;/a&gt;&lt;br&gt;
*&lt;u&gt;Each usage tier has a limit on how much you can use the API each calendar. Once you reach the usage limit of your tier, until you qualify for the next tier, you will have to wait until the next month to be able to use the API again. To qualify for the next tier, you must meet a deposit requirement and a mandatory wait period. You cannot deposit more than your monthly usage limit.&lt;/u&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Claude 3 Haiku&lt;/strong&gt; (fast and light): &lt;br&gt;
• Input: $0.25 per million tokens&lt;br&gt;
• Output: $1.25 per million tokens&lt;br&gt;
&lt;strong&gt;Claude 3.5 Sonnet&lt;/strong&gt; (best available at time of writing)&lt;br&gt;
• Input: $3 per million tokens&lt;br&gt;
• Output: $15 per million tokens&lt;br&gt;
&lt;strong&gt;Claude 3.5 Opus&lt;/strong&gt; (powerful):&lt;br&gt;
• Input: $15 per million tokens&lt;br&gt;
• Output: $75 per million tokens&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;How to Sign up the Anthropic Claude?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;When signing up for the account, you're placed in the &lt;strong&gt;Evaluation&lt;/strong&gt; plan by default. We need to change that: click the &lt;strong&gt;Select Plan&lt;/strong&gt; button.&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi1kofvroh3nn85tfyz1b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi1kofvroh3nn85tfyz1b.png" alt="Image description" width="800" height="297"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There are two plans. The best one for building and testing out the API is the &lt;strong&gt;Build&lt;/strong&gt; plan: click &lt;strong&gt;Continue&lt;/strong&gt; to select it. &lt;br&gt;
The &lt;strong&gt;Scale&lt;/strong&gt; plan is a better match for bigger businesses that need plenty of requests per minute.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Folrdxmsrmr0jsw1ngmyp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Folrdxmsrmr0jsw1ngmyp.png" alt="Image description" width="800" height="551"&gt;&lt;/a&gt;&lt;br&gt;
Anthropic will ask for more information about you and how you plan to use the API. After you fill the form, you'll be prompted to add your billing details.&lt;/p&gt;

&lt;p&gt;We can either make this a single-time payment or activate &lt;br&gt;
&lt;strong&gt;auto-reload&lt;/strong&gt;: this will automatically fund the account once it drops below a certain level. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Last note&lt;/strong&gt;: taxes are paid separately and will be added at the end of the payment flow. &lt;br&gt;
New accounts can only use up to $100 worth of credits every month, but that limit will increase the more you use the API. &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Conclusion&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Anthropic’s Claude offers a powerful, safe, and ethical AI solution that can be tailored to various needs, whether through the &lt;strong&gt;API for developers or Claude.ai for non-technical users&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;As AI continues to grow in importance, Claude represents a significant step forward in creating systems that align with human values and offer tangible benefits to society.&lt;/p&gt;

</description>
      <category>llm</category>
      <category>anthropic</category>
      <category>claude</category>
      <category>ai</category>
    </item>
    <item>
      <title>React UI - Best Practices for iOS Devices</title>
      <dc:creator>Akshay Ghadge</dc:creator>
      <pubDate>Tue, 11 Jun 2024 13:01:42 +0000</pubDate>
      <link>https://dev.to/a_ghadge/react-ui-best-practices-for-ios-devices-7ia</link>
      <guid>https://dev.to/a_ghadge/react-ui-best-practices-for-ios-devices-7ia</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;This topic is crucial for anyone working with client-based web applications based on React. Testing your web application on iOS devices, similar to how you test on different browsers on a desktop, is essential for ensuring a seamless user experience.&lt;/p&gt;

&lt;p&gt;Below are the 2 main parts in terms of UI - web app &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Responsive Design&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cross Browser Compatibility&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Responsive Design
&lt;/h2&gt;

&lt;p&gt;Responsive design ensures that your web application looks and functions well on all devices, especially mobile devices like iPhones and iPads. Here's a detailed breakdown of how to implement responsive design in your React applications:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Viewport Settings&lt;/strong&gt;&lt;br&gt;
The first step in responsive design is to include the correct viewport settings in your HTML documents:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;meta name="viewport" content="width=device-width, initial-scale=1"&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;width=device-width&lt;/strong&gt;: Sets the width of the viewport to the width of the device, ensuring the webpage adapts to the screen size.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;initial-scale=1&lt;/strong&gt;: Sets the initial zoom level to 1, displaying the webpage at its natural size without any zoom.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These settings ensure that your webpage is responsive, adjusting its layout to fit the device's screen size and providing a better user experience on mobile devices.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Grid System&lt;/strong&gt;&lt;br&gt;
Utilize Material-UI’s (MUI) responsive grid system to create layouts that adapt to different screen sizes. The grid system is based on a 12-column layout:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Grid&lt;/strong&gt;: A component used to create a responsive layout grid.&lt;br&gt;
&lt;strong&gt;Item&lt;/strong&gt;: A prop that defines the Grid component as a grid item. Grid items are children of a Grid container and define how the space within the grid container is divided among the items.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Layout Behavior&lt;/strong&gt;&lt;br&gt;
MUI’s grid system supports different layout behaviors based on screen sizes using breakpoints like xs, sm, md, lg, and xl.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Breakpoints&lt;/strong&gt;&lt;br&gt;
Breakpoints are defined using createTheme to customize the theme for MUI components. Here’s how you can define custom breakpoints:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import { createTheme, useMediaQuery } from '@mui/material';
const theme = createTheme({
  breakpoints: {
    values: {
      xs: 0,
      sm: 768,
      md: 900,
      lg: 1200,
      xl: 1920,
    },
  },
});

const matches = useMediaQuery(theme.breakpoints.between('xs', 'md'));
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;xs&lt;/strong&gt;(extra small): 0px and above.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;sm&lt;/strong&gt;(small): 768px and above.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;md&lt;/strong&gt;(medium): 900px and above.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;lg&lt;/strong&gt;(large): 1200px and above.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;xl&lt;/strong&gt;(extra large): 1920px and above.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These breakpoints allow you to apply different styles or layouts based on the screen size.&lt;/p&gt;

&lt;p&gt;For example, to make an 8-column grid on desktop responsive on smaller devices like an iPhone, use media queries to adjust the layout:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@media (max-width: 600px) {
  .grid-item {
    flex-basis: 100%;
  }
}

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

&lt;/div&gt;



&lt;p&gt;Make sure your media queries cover necessary ranges for devices like iPads, as Safari on iPad may have different screen dimensions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cross Browser Compatibility
&lt;/h2&gt;

&lt;p&gt;Ensuring your web application functions smoothly and consistently across different web browsers is crucial for a broad user base.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Understanding Browser Differences&lt;/strong&gt;&lt;br&gt;
Different browsers use different rendering engines:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;WebKit&lt;/strong&gt;: Used by Safari.&lt;br&gt;
&lt;strong&gt;Blink&lt;/strong&gt;: Used by Chrome.&lt;br&gt;
&lt;strong&gt;Gecko&lt;/strong&gt;: Used by Firefox.&lt;/p&gt;

&lt;p&gt;These differences can affect how your application is rendered and behaves on iOS devices.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Testing and Debugging&lt;/strong&gt;&lt;br&gt;
To ensure cross-browser compatibility:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Test on Real Devices&lt;/strong&gt;: Use real iOS devices to test your application. Emulators and simulators may not always replicate the exact behavior.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Browser Developer Tools&lt;/strong&gt;: Use the developer tools available in browsers like Safari, Chrome, and Firefox to debug and fix issues. &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;CSS and JavaScript Compatibility&lt;/strong&gt; &lt;br&gt;
Ensure that the CSS and JavaScript used in your application are compatible with all target browsers. Use tools like Autoprefixer to automatically add vendor prefixes to your CSS.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/* Write standard CSS */
.example {
  display: flex;
}

/* Let Autoprefixer handle vendor prefixes */
.example {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
}

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

&lt;/div&gt;



&lt;p&gt;Sometimes, specific CSS rules are necessary for different browsers. Use browser-specific CSS hacks or feature queries:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/* Safari-specific styles */
@supports (-webkit-appearance: none) and (stroke-color: transparent) {
  .safari-specific {
    color: blue;
  }
}

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

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Polyfills and Transpilers&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For older browsers, consider using polyfills and transpilers:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Polyfills&lt;/strong&gt;: JavaScript files that replicate modern browser features in older browsers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Transpilers&lt;/strong&gt;: Tools like Babel convert ES6+ JavaScript code into ES5, ensuring compatibility with older browsers.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// Your modern JavaScript code
const greet = () =&amp;gt; {
  console.log('Hello, world!');
};

// Transpiled code for older browsers
"use strict";

var greet = function greet() {
  console.log('Hello, world!');
};

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

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br&gt;
Implementing these best practices will help ensure that your React applications provide a consistent and high-quality user experience on iOS devices. Responsive design and cross-browser compatibility are key components in achieving this goal. By understanding and applying these principles, you can create web applications that perform well across a variety of devices and browsers. Regular testing and leveraging modern web development tools and techniques are essential in maintaining a smooth user experience.&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
