<?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: Abhinav</title>
    <description>The latest articles on DEV Community by Abhinav (@abhinav-writes).</description>
    <link>https://dev.to/abhinav-writes</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%2F1628814%2Fba200c29-3868-4d92-843e-ba84c9a344a9.jpg</url>
      <title>DEV Community: Abhinav</title>
      <link>https://dev.to/abhinav-writes</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/abhinav-writes"/>
    <language>en</language>
    <item>
      <title>Meet Super Banana 🍌</title>
      <dc:creator>Abhinav</dc:creator>
      <pubDate>Sat, 13 Sep 2025 06:16:38 +0000</pubDate>
      <link>https://dev.to/abhinav-writes/meet-super-banana-7hf</link>
      <guid>https://dev.to/abhinav-writes/meet-super-banana-7hf</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/google-ai-studio-2025-09-03"&gt;Google AI Studio Multimodal Challenge&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;Content is king, but eye-catching visuals are the gatekeepers. For creators and e-commerce sellers, producing stunning thumbnails and professional product photos is a constant, time-consuming challenge. I built Super Banana, an AI-powered web app that acts as a creative co-pilot, drastically simplifying the creation of high-quality visuals.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Super Banana&lt;/em&gt;&lt;/strong&gt; is a suite of three powerful tools:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Thumbnail Builder&lt;/strong&gt;: Users upload their assets (like a selfie or a product image), describe their video's topic, and the AI composes a complete, click-worthy thumbnail, even generating custom backgrounds on the fly. (even this blog's cover also generated by super banana 😃)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Product Photoshoot&lt;/strong&gt;: This tool transforms a simple product image into a professional, catalog-ready shot. Just upload a photo, describe a scene (e.g., "on a marble countertop with morning light"), and the AI creates a photorealistic image with perfect lighting and shadows.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reimaginer&lt;/strong&gt;: A creative playground for generating new images from text or transforming existing photos with a simple prompt, like turning a photo into a watercolor painting or a die-cut sticker.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;Here's the Demo of Super Banana:&lt;br&gt;
  &lt;iframe src="https://www.youtube.com/embed/sTdcWBKNBYg"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Google Cloud Deployed Version: &lt;a href="https://super-banana-rgux32csnq-uw.a.run.app/" class="crayons-btn crayons-btn--primary" rel="noopener noreferrer"&gt;Super Banana&lt;/a&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  How I Used Google AI Studio
&lt;/h2&gt;

&lt;p&gt;Super Banana is powered by Google's state-of-the-art Gemini models, accessed via the &lt;code&gt;@google/genai&lt;/code&gt; SDK. I strategically chose different models for different tasks to achieve the best results:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;For pure text-to-image generation&lt;/strong&gt;, like creating a background scene from scratch in the Thumbnail Builder, I used &lt;code&gt;imagen-4.0-generate-001&lt;/code&gt;. It excels at interpreting descriptive prompts and producing high-resolution, artistic images.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;For the heavy lifting and multimodal magic&lt;/strong&gt;, I relied on &lt;code&gt;gemini-2.5-flash-image-preview&lt;/code&gt;. This powerful model can understand and process a combination of text and multiple image inputs simultaneously. This was the key to unlocking the app's core features, allowing me to send image assets, style examples, and a text prompt all in a single API call to compose a final, cohesive visual.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;My development process involved extensive prompt engineering, crafting detailed system instructions that guide the AI to act as a "world-class graphic designer" or a "professional product photographer," ensuring the output is not just technically correct but also aesthetically pleasing and commercially viable.&lt;/p&gt;

&lt;h2&gt;
  
  
  Multimodal Features
&lt;/h2&gt;

&lt;p&gt;The true power of Super Banana lies in its deep integration of multimodal AI, which creates an experience far beyond simple image generation.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;AI-Assisted Composition&lt;/strong&gt;: The Thumbnail Builder doesn't just place images on a background; it uses &lt;code&gt;gemini-2.5-flash-image-preview&lt;/code&gt; to understand the context of multiple assets and a text prompt. The model intelligently removes backgrounds, determines an effective layout, and blends all elements into a polished final thumbnail. This automates complex design work that would typically require manual effort in tools like Photoshop.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Contextual Image Editing&lt;/strong&gt;: Both the Product Photoshoot and Reimaginer features leverage the model's ability to interpret an existing image and a text command. It doesn't just overlay effects; it comprehends the prompt ("add a steaming cup of coffee next to the laptop") and realistically edits the image, matching perspective, lighting, and reflections for a seamless result.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Few-Shot Style Transfer&lt;/strong&gt;: This is my favorite feature. In the settings, users can upload "style examples"—images with an aesthetic they love. When generating a new image, these examples are sent to the model along with the prompt and assets. The AI then emulates the mood, color grading, and composition of the examples. This gives users incredible artistic control, allowing them to maintain consistent branding and generate visuals in their unique style, making the AI a true creative partner.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

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

&lt;p&gt;In conclusion, Super Banana successfully lowers the barrier to entry for creating high-quality visual content, making it an indispensable asset for marketers, content creators, and anyone with a story to tell visually. Super Banana isn't just about making pictures; it's about making an impact, and it delivers on that promise with remarkable fineness. Google AI Studio also plays a crucial role in bringing this idea to life. (Truly amazing...)&lt;/p&gt;

&lt;p&gt;Thanks for reading!!&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1jc0058kxdfctk8bo0un.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1jc0058kxdfctk8bo0un.gif" alt="bye"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>googleaichallenge</category>
      <category>ai</category>
      <category>gemini</category>
    </item>
    <item>
      <title>Windows' Dual-Shell Strategy and macOS's Unified Terminal Approach</title>
      <dc:creator>Abhinav</dc:creator>
      <pubDate>Sun, 17 Aug 2025 04:30:47 +0000</pubDate>
      <link>https://dev.to/abhinav-writes/windows-dual-shell-strategy-and-macoss-unified-terminal-approach-5ghh</link>
      <guid>https://dev.to/abhinav-writes/windows-dual-shell-strategy-and-macoss-unified-terminal-approach-5ghh</guid>
      <description>&lt;h2&gt;
  
  
  &lt;strong&gt;1. Introduction&lt;/strong&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;1.1. What is a CLI, Shell and Terminal ?&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;A &lt;strong&gt;Command-Line Interface (CLI)&lt;/strong&gt; is a text-based user interface that enables users to interact with a computer program or operating system by typing commands. CLIs offer significant advantages over graphical user interfaces (GUIs), including greater resource efficiency, enhanced speed for experienced users, and the ability to automate repetitive tasks through scripting and history mechanisms. They represent the foundational method of direct text-based interaction with an operating system.&lt;/p&gt;

&lt;p&gt;A &lt;strong&gt;shell&lt;/strong&gt; is a software program that acts as an interpreter, facilitating direct communication between the user and the operating system or an application. When a user types a command into a CLI, the shell is responsible for parsing and executing that command. Shells are the logical "brains" that translate user commands into actions the operating system can perform.&lt;/p&gt;

&lt;p&gt;A &lt;strong&gt;terminal emulator&lt;/strong&gt;, conversely, is a graphical application that simulates a physical computer terminal within a modern graphical desktop environment. It provides the window or console where a shell runs, displaying text output from commands and accepting text input from the user. Terminal emulators are the visual "windows" or "containers" through which users interact with shells.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;1.2. The Fundamental Role of CLIs in OS&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;CLIs are indispensable tools for system administrators, developers, and advanced users. They enable precise control, automation, and scripting of complex tasks that are often difficult or impossible to achieve through a graphical interface alone. Their ability to execute commands at a low level of programming provides critical access to system input and output, which is vital for diagnostics, troubleshooting, and managing system configurations.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;2. Windows' Dual-Shell Strategy&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Windows natively provides two primary command-line shells: Command Prompt (CMD) and PowerShell. This dual approach is not arbitrary but a deliberate strategy born from historical development, the persistent need for backward compatibility, and the drive towards modern automation capabilities.&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%2Fmxe3szhevljhzbm0n7ei.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%2Fmxe3szhevljhzbm0n7ei.png" width="800" height="253"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;2.1. Command Prompt (CMD)&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Command Prompt (cmd.exe), often referred to as CMD, is the command-line interpreter included in the Windows NT family of operating systems. Its introduction marked a significant shift from COMMAND.COM, the shell used in the earlier MS-DOS and Windows 9x operating systems. The initial version of cmd.exe for Windows NT was developed by Therese Stowell. The underlying console host system was originally implemented as an emulation of the DOS environment, deeply integrated and cooperative with cmd.exe itself. A key design objective for CMD was to maintain general compatibility with existing MS-DOS scripts, facilitating a smoother transition for users migrating from older Windows versions.&lt;/p&gt;

&lt;p&gt;CMD is well-suited for executing basic commands, navigating file systems, and performing quick system operations. Common examples include dir for listing directory contents, cd for changing directories, and ipconfig for network configuration details. It supports basic scripting through batch (.bat) files, enabling the automation of routine tasks such as user account management or nightly backups. CMD also offers user experience enhancements over its predecessor, COMMAND.COM, including the use of arrow keys to scroll through command history  and tab completion for file and folder paths. For tasks requiring higher system access, CMD can be launched with administrative privileges, known as an "elevated command prompt," which is necessary for modifying system files or settings.&lt;/p&gt;

&lt;p&gt;Despite its utility, CMD has inherent limitations stemming from its foundational design. Its user interface is basic, lacking modern features such as syntax highlighting or advanced tab completion capabilities found in more contemporary shells. A significant constraint is its plain text-based processing; commands accept and return only text, making complex data manipulation cumbersome as it often requires manual parsing of string output. Its scripting language is relatively rigid and basic, lacking advanced programming constructs like robust error handling, modularity, or sophisticated functions that are standard in modern scripting environments.&lt;/p&gt;

&lt;p&gt;Furthermore, CMD lacks native, built-in support for deep system administration tasks, such as directly managing services, the Windows Registry, or Active Directory objects. Microsoft has publicly acknowledged that making significant improvements or adding new usability features to CMD is challenging without inadvertently breaking existing legacy scripts or tools, due to its deeply entrenched design and long history. This situation illustrates the "technical debt" associated with CMD's foundational architecture, rooted in the MS-DOS era and designed for text-based processing. The decision to build PowerShell from scratch was a strategic necessity to implement a fundamentally different, object-oriented design that could meet the complex demands of modern system management and automation, which CMD's legacy architecture simply could not support without radical, breaking changes.&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%2Fws6ovudytmpmcg1vkt1c.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%2Fws6ovudytmpmcg1vkt1c.png" width="800" height="209"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;2.2. PowerShell (pwsh)&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;PowerShell was developed by Microsoft as a direct response to the limitations of CMD and the growing need for a more powerful and flexible automation tool in complex IT environments. Its origins trace back to a project codenamed "Monad" (also known as Microsoft Shell or MSH), with the foundational ideas articulated in the "Monad Manifesto" by its chief architect, Jeffrey Snover, in 2002. Monad was envisioned as a new, extensible command-line interface capable of automating a wide array of core administrative tasks. After public demonstrations and beta releases, it was officially renamed Windows PowerShell in 2006.&lt;/p&gt;

&lt;p&gt;A cornerstone of PowerShell's design is its foundation on the .NET Common Language Runtime (CLR). Crucially, unlike most traditional shells that process only text, PowerShell is designed to accept and return .NET objects. This object-based approach is its fundamental differentiator, eliminating the need to parse text output and enabling more efficient and robust data manipulation. This represents a fundamental paradigm shift in how CLI interactions are handled, moving beyond simple string manipulation to treating system data as structured objects, similar to a programming language. This object-oriented approach enables significantly more powerful and safer scripting, easier data manipulation (e.g., filtering, sorting, selecting properties without regular expressions), and deeper, more reliable integration with complex Windows APIs and services. It fundamentally changes the nature of what a shell can achieve, making it a more robust and scalable automation engine.&lt;/p&gt;

&lt;p&gt;Administrative tasks in PowerShell are primarily performed using "cmdlets" (pronounced "command-lets"), which are specialized .NET classes implementing specific operations. These cmdlets follow a consistent Verb-Noun naming convention (e.g., Get-Process, Set-Location), making them intuitive and discoverable. PowerShell's object-based pipeline allows the output of one cmdlet (as an object) to be seamlessly piped as input to another, enabling powerful and scalable scripting by chaining commands together. PowerShell also provides a rich scripting language with support for variables, loops, conditional statements (if, foreach), modules, functions, and structured error handling (try-catch), making it highly extensible and suitable for complex automation. It features a comprehensive in-console help system, similar to Unix man pages, accessible via Get-Help and Get-Command cmdlets, offering detailed documentation, examples, and command discovery.11 PowerShell includes robust command-line history capabilities, managed by dedicated cmdlets (Get-History, Invoke-History, Add-History, Clear-History) and keyboard shortcuts (F7, F8, F9, arrow keys), with persistent history options through modules like PSReadLine.&lt;/p&gt;

&lt;p&gt;PowerShell is the preferred tool for modern Windows environments and IT professionals, ideal for complex tasks such as managing Microsoft 365, Active Directory, various cloud services (e.g., Azure, AWS, Google Cloud), and automating enterprise workflows. It enables advanced system management, remote execution of commands and scripts, and deep integration with various IT tools and services. The PowerShell Desired State Configuration (DSC) framework allows organizations to manage their infrastructure using a "configuration as code" approach, ensuring repeatable deployments and consistent settings.&lt;/p&gt;

&lt;p&gt;A key design feature of PowerShell is its backward compatibility; it can execute most CMD commands and batch files directly within its environment. This allows for a smoother transition for users and organizations with existing CMD-based scripts. However, the reverse is not true: the Command shell cannot execute PowerShell cmdlets. PowerShell also includes cmdlet aliases (e.g., gci for Get-ChildItem) that mimic common CMD commands, making it more user-friendly for those transitioning from CMD. Significantly, PowerShell Core (from version 6 onwards, introduced in 2016) became open-source and cross-platform, extending its reach to Linux and macOS environments.&lt;/p&gt;

&lt;p&gt;The co-existence of CMD and PowerShell reflects Microsoft's strategic balancing act: modernization versus legacy preservation. While PowerShell is clearly the strategically favored tool for modern IT, Microsoft explicitly states that "Cmd is an absolutely vital feature of Windows and... will remain within Windows". This is further reinforced by the fact that PowerShell is replacing CMD in certain menu defaults (e.g., Win+X menu), but users can "opt out" , and older command-line switches are still supported for backward compatibility. This reveals a deliberate, pragmatic strategy: Microsoft is actively promoting and developing PowerShell as the future, while simultaneously ensuring that enterprises and users with existing, deeply integrated CMD-based scripts and workflows are not abandoned. This approach minimizes disruption and switching costs, allowing for a managed, rather than forced, transition to modern capabilities.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Key Differences: Command Prompt vs PowerShell&lt;/strong&gt;
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;&lt;strong&gt;Attribute&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;&lt;strong&gt;Command Prompt (CMD)&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;&lt;strong&gt;PowerShell&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;Origin/Era&lt;/p&gt;&lt;/td&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;MS-DOS era (1980s)&lt;/p&gt;&lt;/td&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;Modern (2006)&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;Data Handling Paradigm&lt;/p&gt;&lt;/td&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;Text-based (string parsing)&lt;/p&gt;&lt;/td&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;Object-based (.NET objects)&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;Primary Scripting Mechanism&lt;/p&gt;&lt;/td&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;Batch files (.bat)&lt;/p&gt;&lt;/td&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;Cmdlets, scripts (.ps1), functions&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;Extensibility&lt;/p&gt;&lt;/td&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;Limited (relies on external executables)&lt;/p&gt;&lt;/td&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;Highly extensible (modules, providers)&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;Typical Use Cases&lt;/p&gt;&lt;/td&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;Basic file operations, legacy tasks, quick commands&lt;/p&gt;&lt;/td&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;Advanced system administration, automation, cloud management&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;Learning Curve&lt;/p&gt;&lt;/td&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;Lower for simple tasks&lt;/p&gt;&lt;/td&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;Steeper (due to object model)&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;Backward Compatibility (CMD commands in PS)&lt;/p&gt;&lt;/td&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;N/A (CMD cannot run PowerShell cmdlets)&lt;/p&gt;&lt;/td&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;Yes (can run most CMD commands)&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;Cross-Platform Support&lt;/p&gt;&lt;/td&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;Windows only&lt;/p&gt;&lt;/td&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;Cross-platform (since v6)&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;Core Design Philosophy&lt;/p&gt;&lt;/td&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;Backward compatibility, simplicity&lt;/p&gt;&lt;/td&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;Automation, extensibility, integration&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Windows CLI Evolution Timeline&lt;/strong&gt;
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;&lt;strong&gt;Year/Era&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;&lt;strong&gt;Key Event/Development&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;&lt;strong&gt;Significance&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;1980s&lt;/p&gt;&lt;/td&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;MS-DOS/COMMAND.COM&lt;/p&gt;&lt;/td&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;Original DOS command-line interpreter.&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;1995&lt;/p&gt;&lt;/td&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;Windows 95 Shell (GUI)&lt;/p&gt;&lt;/td&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;Foundation for modern Windows graphical user interface shell.&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;1997-1999&lt;/p&gt;&lt;/td&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;DBCS support in Console Host&lt;/p&gt;&lt;/td&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;Internationalization and character set support for console.&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;2002&lt;/p&gt;&lt;/td&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;Monad Manifesto (PowerShell Vision)&lt;/p&gt;&lt;/td&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;Articulation of vision for next-generation CLI.&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;2005&lt;/p&gt;&lt;/td&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;Monad Public Beta&lt;/p&gt;&lt;/td&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;Early public testing of new shell.&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;2006&lt;/p&gt;&lt;/td&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;Windows PowerShell 1.0 Release&lt;/p&gt;&lt;/td&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;Official release of modern, object-oriented shell.&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;2014-2016&lt;/p&gt;&lt;/td&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;Significant Console Host Improvements&lt;/p&gt;&lt;/td&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;Enhancements to underlying console window for better user experience.&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;2016&lt;/p&gt;&lt;/td&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;PowerShell Core (Open Source/Cross-Platform)&lt;/p&gt;&lt;/td&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;Expansion of PowerShell to non-Windows platforms.&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;2019-Now&lt;/p&gt;&lt;/td&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;Windows Terminal Introduction&lt;/p&gt;&lt;/td&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;Modern, tabbed, multi-shell terminal emulator.&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;3. macOS Terminal Environment&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;macOS presents a seemingly singular "Terminal" application to the user. However, this application is a sophisticated terminal emulator that provides access to a rich and powerful underlying ecosystem of Unix-like shells, rather than being a single, monolithic shell itself.&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%2Fgzedqn851l3dmmhg8dcy.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgzedqn851l3dmmhg8dcy.jpeg" width="718" height="186"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;3.1. Terminal.app&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Terminal.app is the default terminal emulator included in the macOS operating system by Apple. Its primary function is to provide a text-based interface for direct interaction with the operating system. Its lineage traces back to NeXTSTEP and OPENSTEP, the predecessor operating systems of macOS. This heritage is significant as it underscores macOS's deep roots in the Unix world.&lt;/p&gt;

&lt;p&gt;Terminal.app serves as the graphical window through which users interact with various underlying Unix shells, providing a consistent visual and interactive experience regardless of the chosen shell. The application offers extensive customization options through profiles, allowing users to configure fonts, color schemes, and other visual preferences for different terminal windows. It integrates with macOS-specific features, such as the mdfind command, which provides a command-line interface to the Spotlight search functionality. Terminal.app is an essential tool for advanced users and developers, enabling tasks that lack graphical user interface tools, facilitating automation through scripting, and providing secure remote access via protocols like SSH.&lt;/p&gt;

&lt;p&gt;Terminal.app is explicitly described as a "terminal emulator," and it allows users to "choose other shells available with macOS, such as the KornShell, tcsh, and bash", with zsh being the default. This clarifies that the terminal.app is a single graphical &lt;em&gt;application&lt;/em&gt; that provides the window to the command line, not a singular underlying &lt;em&gt;shell&lt;/em&gt;. This design allows macOS to offer a unified, consistent user &lt;em&gt;interface&lt;/em&gt; (Terminal.app) while simultaneously providing &lt;em&gt;choice and flexibility&lt;/em&gt; at the underlying &lt;em&gt;shell&lt;/em&gt; level. This upfront distinction is critical for understanding that macOS provides a single point of access to multiple distinct shell environments.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;3.2. The Rich Ecosystem of Unix Shells (zsh, Bash, etc.)&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;macOS is fundamentally a descendant of BSD Unix, meaning it operates on a robust Unix-like kernel and file system. This foundation inherently provides access to a mature and diverse set of standard Unix shells. Terminal.app allows users the flexibility to choose and configure their preferred shell from those available within macOS. This deep Unix heritage is not merely a historical footnote; it is a fundamental architectural advantage. Unlike Windows, which had to actively develop a new, object-oriented shell (PowerShell) to overcome the limitations of its legacy DOS-era CLI, macOS inherently benefits from decades of robust, mature, and powerful shell development already present in the Unix ecosystem (Bash, zsh, ksh, tcsh). This means Apple did not need to "invent" a new shell in the same way Microsoft did because a rich, capable set of shells was already part of its foundational operating system design. This provides macOS users with a powerful and familiar command-line environment that aligns with broader industry standards in Unix/Linux.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;zsh (Z Shell):&lt;/strong&gt; Since macOS Catalina, zsh has been the default interactive shell. It is known for its advanced features, including highly customizable tab completion, enhanced history management, and powerful scripting capabilities.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bash (Bourne-Again Shell):&lt;/strong&gt; A widely adopted and powerful Unix shell, Bash was the default interactive shell on macOS prior to zsh. It remains a popular choice for its extensive features and widespread use across Linux distributions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Other Shells:&lt;/strong&gt; macOS also includes other standard Unix shells such as KornShell (ksh) and tcsh, offering users a variety of options based on their preferences or specific scripting needs. Each shell maintains its own command history, which can be viewed, navigated, recalled, or cleared using commands like history and configurable environment variables such as HISTSIZE. The inherent capabilities of these Unix shells, such as the use of pipelines (|) to chain commands, and powerful utilities like find with the --exec option or xargs for processing command output, make them exceptionally powerful for automation and complex data manipulation.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Common Shells Available in macOS Terminal&lt;/strong&gt;
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;&lt;strong&gt;Shell Name&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;&lt;strong&gt;Description/Key Features&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;&lt;strong&gt;Typical Use Cases&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;zsh (Z Shell)&lt;/p&gt;&lt;/td&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;Default interactive shell since macOS Catalina; Known for powerful scripting, advanced tab completion, and customizable features.&lt;/p&gt;&lt;/td&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;General interactive use, modern scripting, and development.&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;Bash (Bourne-Again Shell)&lt;/p&gt;&lt;/td&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;Widely used Unix shell, previously default on macOS; Robust scripting, command-line editing, and history features.&lt;/p&gt;&lt;/td&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;Broad compatibility, scripting on Unix/Linux systems.&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;KornShell (ksh)&lt;/p&gt;&lt;/td&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;Powerful and mature scripting language, often preferred for system administration tasks.&lt;/p&gt;&lt;/td&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;Complex scripting, system automation, and enterprise environments.&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;tcsh&lt;/p&gt;&lt;/td&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;C-shell like syntax, popular for interactive use among some users.&lt;/p&gt;&lt;/td&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;Interactive command-line sessions, users familiar with C-like syntax.&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;4. Comparative Analysis: Why the Divergence?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;The distinct architectural and strategic choices in command-line interfaces between Windows and macOS are deeply rooted in their respective histories, core design philosophies, and target audiences. Understanding these underlying factors is key to comprehending their current states.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;4.1. Historical Trajectories and Architectural Foundations&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Windows: Bridging DOS/Windows 9x with NT-based Systems&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;Windows' CLI evolution is a narrative of continuous adaptation and backward compatibility. The transition from MS-DOS and Windows 9x (with COMMAND.COM) to the Windows NT family (with cmd.exe) necessitated a shell that could largely maintain compatibility with existing batch scripts. cmd.exe served this critical legacy purpose, ensuring a smoother migration for users and enterprises.&lt;/p&gt;

&lt;p&gt;However, as Windows matured into a dominant enterprise operating system, the limitations of this text-based, legacy shell became apparent for complex system administration and automation. This growing need spurred the development of PowerShell, a fundamentally new, object-oriented shell designed from the ground up to meet modern IT demands. The ongoing development of the Windows Console Host and the introduction of Windows Terminal 9 further illustrate Microsoft's continuous effort to modernize the &lt;em&gt;terminal emulator&lt;/em&gt; layer, providing a more robust and feature-rich environment capable of hosting various shells (CMD, PowerShell, WSL) without forcing a single, unified shell.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;macOS: Leveraging a Robust Unix-like Core&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In contrast, macOS's approach is fundamentally shaped by its Unix heritage. Originating from NeXTSTEP and OPENSTEP, which were built on a Unix foundation, macOS inherently integrated with a rich ecosystem of mature and powerful Unix shells. Apple's strategy has therefore focused on providing a single, highly capable terminal &lt;em&gt;emulator&lt;/em&gt; (Terminal.app) that acts as a consistent gateway to these diverse and interchangeable underlying Unix shells (zsh, Bash, ksh, tcsh).4 This negated the need for Apple to develop a proprietary shell from scratch to overcome fundamental architectural limitations, as the Unix world already provided robust solutions.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;4.2. Design Philosophies and Target Audiences&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Microsoft's Evolution: From Basic Scripting to Enterprise Automation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Microsoft's design philosophy for its CLIs has undergone a significant evolution. Initially, CMD provided a basic command interpreter for simple tasks and backward compatibility. The strategic shift with PowerShell reflects a deliberate move towards an extensible, object-oriented automation platform tailored for the complex demands of enterprise IT administration, cloud service management, and sophisticated developer workflows. The dual-shell approach is a pragmatic recognition of the diverse needs of its vast user base, ranging from casual users running simple commands to IT professionals managing large-scale infrastructures. It represents a managed transition from legacy systems to modern environments, rather than an abrupt, disruptive change.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Apple's Approach: Providing a Powerful Unix-like Environment&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Apple's design philosophy for its CLI environment is centered on offering a powerful, text-based interface for advanced users and developers that seamlessly leverages the inherent strengths of its Unix core. By integrating standard, widely-used Unix shells, macOS provides a familiar, robust, and highly capable environment for developers and system administrators who are often accustomed to working in Unix/Linux ecosystems. This approach emphasizes flexibility and adherence to established open standards rather than creating a new, proprietary shell.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;In conclusion, Windows' dual-shell strategy, featuring both Command Prompt and PowerShell, reflects a balance between maintaining backward compatibility and advancing towards modern automation capabilities. This approach caters to a wide range of users, from those relying on legacy systems to IT professionals. On the other hand, macOS leverages its Unix heritage to provide a unified terminal emulator that offers access to a variety of powerful Unix shells. This strategy emphasizes flexibility and adherence to open standards, providing a familiar and robust environment for developers and system administrators. Both operating systems have evolved their CLI environments to meet the needs of their respective user bases, highlighting the importance of historical context and design philosophy in shaping modern computing experiences.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Algolia MCP Chat</title>
      <dc:creator>Abhinav</dc:creator>
      <pubDate>Mon, 28 Jul 2025 05:52:25 +0000</pubDate>
      <link>https://dev.to/abhinav-writes/algolia-mcp-chat-147</link>
      <guid>https://dev.to/abhinav-writes/algolia-mcp-chat-147</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/algolia-2025-07-09"&gt;Algolia MCP Server Challenge&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;I built &lt;em&gt;&lt;strong&gt;algolia mcp chat&lt;/strong&gt;&lt;/em&gt;, a centralized chat application that allows you to interact with and query your Algolia data using the &lt;strong&gt;Algolia Model Context Protocol (MCP)&lt;/strong&gt;. This app provides a conversational interface to search indices, retrieve analytics, manage index settings, and access user/application information—all powered by &lt;em&gt;Algolia MCP tools and Llama using Groq&lt;/em&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/ex9L2uGZ5Wk"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Here's the Live Demo -&amp;gt; &lt;a href="https://youtu.be/ex9L2uGZ5Wk" class="crayons-btn crayons-btn--primary" rel="noopener noreferrer"&gt;Demo&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;And Github Repo -&amp;gt; &lt;a href="https://github.com/AbhinavTheDev/algolia-mcp-chat" class="crayons-btn crayons-btn--primary" rel="noopener noreferrer"&gt;Repository&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;If you like the project, do give it a star 🌟.&lt;/p&gt;

&lt;h2&gt;
  
  
  How I Utilized the Algolia MCP Server
&lt;/h2&gt;

&lt;p&gt;Algolia MCP Chat is entirely built on Algolia MCP which utilized algolia mcp for quering and managing the Algolia Data in natural language. You just need to download and keep mcp-node and just add your mcp node file path. And done, MCP Chat is ready to answer all your queries or perform operations on your algolia data in natural language. MCP Chat also shows you which MCP tool it utilized your query that help to find which tool is used for a specific query.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Takeaways
&lt;/h2&gt;

&lt;p&gt;During the building process of Algolia MCP Chat, I faced various issues like proper configuration of algolia mcp file with our app, integrating bakend with frontend with proper formatted response of ai with MCP info and lot more. &lt;/p&gt;

&lt;p&gt;But later on, I solved this issue using MCP documentation and formatting AI response on frontend. It uses algolia mcp which provides 33 tools by default, you can use these tools for searching, indexing, fetching info and fetching data on your algolia account. &lt;/p&gt;

&lt;p&gt;Plus, it is entirely local, whole chat history is stored locally and only used particular info with LLM on the go. Nothing is stored anywhere (100% privacy) as through MCP, we can get some sensitive information of your account also.&lt;/p&gt;

&lt;p&gt;You can just clone the both repo (Algolia MCP and Algolia MCP Chat) and that's it you are ready to go.&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/AbhinavTheDev" rel="noopener noreferrer"&gt;
        AbhinavTheDev
      &lt;/a&gt; / &lt;a href="https://github.com/AbhinavTheDev/algolia-mcp-chat" rel="noopener noreferrer"&gt;
        algolia-mcp-chat
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/AbhinavTheDev/algolia-mcp-chat/./assets/homepage.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2FAbhinavTheDev%2Falgolia-mcp-chat%2F.%2Fassets%2Fhomepage.png" alt="amc-home"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Algolia MCP Chat&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;Algolia MCP Chat is a centralized chat application that allows you to interact with and query your Algolia data using the &lt;a href="https://github.com/algolia/mcp-node.git" rel="noopener noreferrer"&gt;Algolia Model Context Protocol (MCP)&lt;/a&gt;. This app provides a conversational interface to search indices, retrieve analytics, manage index settings, and access user/application information—all powered by Algolia MCP tools and LLMs.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Features&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Conversational Search:&lt;/strong&gt; Query your Algolia indices using natural language.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Analytics Insights:&lt;/strong&gt; Get top searches, hit rates, and other analytics data.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Index Management:&lt;/strong&gt; Access and manage index settings.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;User &amp;amp; Application Info:&lt;/strong&gt; Retrieve user and application details.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LLM-Powered Responses:&lt;/strong&gt; Uses Groq Llama 3 for natural, helpful answers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MCP Tool Integration:&lt;/strong&gt; Leverages Algolia MCP tools for real-time data access.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Getting Started&lt;/h2&gt;
&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Prerequisites&lt;/h3&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://nodejs.org/" rel="nofollow noopener noreferrer"&gt;Node.js&lt;/a&gt; (v18+ recommended)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://git-scm.com/" rel="nofollow noopener noreferrer"&gt;Git&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Access to &lt;a href="https://github.com/algolia/mcp-node.git" rel="noopener noreferrer"&gt;Algolia MCP Node&lt;/a&gt; repository&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Installation&lt;/h3&gt;

&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Clone this repository:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;git clone https://github.com/abhinavthedev/algolia-mcp-chat.git
&lt;span class="pl-c1"&gt;cd&lt;/span&gt; algolia-mcp-chat&lt;/pre&gt;

&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Install dependencies for both backend and frontend:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-c1"&gt;cd&lt;/span&gt; backend
npm install
&lt;span class="pl-c1"&gt;cd&lt;/span&gt; ../frontend
npm install&lt;/pre&gt;

&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;…&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/AbhinavTheDev/algolia-mcp-chat" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;Do let me know how's your experience with algolia mcp chat. If you like it, do give it a appreciation. 😇&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>algoliachallenge</category>
      <category>webdev</category>
      <category>ai</category>
    </item>
    <item>
      <title>Office Table - CSS ART Edition</title>
      <dc:creator>Abhinav</dc:creator>
      <pubDate>Wed, 23 Jul 2025 01:39:36 +0000</pubDate>
      <link>https://dev.to/abhinav-writes/office-table-css-art-edition-1gmp</link>
      <guid>https://dev.to/abhinav-writes/office-table-css-art-edition-1gmp</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for &lt;a href="https://dev.to/challenges/frontend/axero"&gt;Frontend Challenge: Office Edition sponsored by Axero, CSS Art: Office Culture&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Inspiration
&lt;/h2&gt;

&lt;p&gt;I want to build a office table that includes everything which helps me to keep motivated and gives a energetic vibes. Also, it must have all essentials (rule of essentialism). Therefore, I created this ART with headphones (music is necessary for my focus) and Coffee Cup (Developers basic need).&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/abhinav97hub/embed/empJbxd?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;You can also checkout the live link of ART: &lt;a href="https://abhinavthedev.github.io/Office-Art/" class="ltag_cta ltag_cta--branded" rel="noopener noreferrer"&gt;Live Demo&lt;/a&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Journey
&lt;/h2&gt;

&lt;p&gt;For building this ART my goal is decided, I want to have all the things that i could imagine for my desk. &lt;/p&gt;

&lt;p&gt;I started by creating Desk Component Art which includes Desk Container, Desk Art and Imac monitor component (my fav one). Alongwith a Ergonomic Chair Component (my back needs). &lt;/p&gt;

&lt;p&gt;But for adding other component i explored various other Pens of community that help me to make the Art more like my imagination. Pen I used for Headphone Component -&amp;gt; &lt;a href="https://codepen.io/debo0030/pen/WXdVWg" rel="noopener noreferrer"&gt;CodePen by Andrea&lt;/a&gt; and Flower Pot Component -&amp;gt; &lt;a href="https://codepen.io/aitchiss/pen/rNxvPGB" rel="noopener noreferrer"&gt;CodePen by Suzanne Aitchison&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Then added all these component on my table which gives fresh vibes and minimal look. Cup Component is also created which contains my coffee (for energy of a developer). Then a TODO board, I easily forget things, Therefore, a TODO board is also required to keep me focused towards my work. &lt;/p&gt;

&lt;p&gt;Now, my table had everything which i needed (headphones for listening music, coffee for fuel of dev, flower pot for fresh vibe, TODO board for focus towards work) that helps me to keep motivated and energetic in my office. :)&lt;/p&gt;

&lt;p&gt;If you like the art, do give a star 🌟 to Repo: &lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/AbhinavTheDev" rel="noopener noreferrer"&gt;
        AbhinavTheDev
      &lt;/a&gt; / &lt;a href="https://github.com/AbhinavTheDev/Office-Art" rel="noopener noreferrer"&gt;
        Office-Art
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;CSS Office Art&lt;/h1&gt;

&lt;/div&gt;
&lt;p&gt;An office desk art created with HTML and CSS.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Built with&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/b704338682b4b907a568833f992f44f81c13bd72a6bc00620ed08b620fd3dee9/68747470733a2f2f736b696c6c69636f6e732e6465762f69636f6e733f693d68746d6c2c637373"&gt;&lt;img src="https://camo.githubusercontent.com/b704338682b4b907a568833f992f44f81c13bd72a6bc00620ed08b620fd3dee9/68747470733a2f2f736b696c6c69636f6e732e6465762f69636f6e733f693d68746d6c2c637373" alt="Tech Stack"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Credits&lt;/h2&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;headphone:&lt;/strong&gt; &lt;a href="https://codepen.io/debo0030/pen/WXdVWg" rel="nofollow noopener noreferrer"&gt;CodePen by Andrea&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Flower Pot:&lt;/strong&gt; &lt;a href="https://codepen.io/aitchiss/pen/rNxvPGB" rel="nofollow noopener noreferrer"&gt;CodePen by Suzanne Aitchison&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Badge:&lt;/strong&gt; &lt;a href="https://github.com/ArnavK-09/add-github-badge" rel="noopener noreferrer"&gt;add-github-badge by ArnavK-09&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Images:&lt;/strong&gt; &lt;a href="https://www.google.com" rel="nofollow noopener noreferrer"&gt;Google&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;



&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/AbhinavTheDev/Office-Art" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;p&gt;I hope you like my ART, and do let me know what do you think about it. Love to know....&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%2Fi0r2n7yq1zdee1ohjzz8.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi0r2n7yq1zdee1ohjzz8.gif" alt="Bye" width="480" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>frontendchallenge</category>
      <category>devchallenge</category>
      <category>css</category>
    </item>
    <item>
      <title>How Generative AI is Being Used in New Ways</title>
      <dc:creator>Abhinav</dc:creator>
      <pubDate>Mon, 21 Jul 2025 00:30:53 +0000</pubDate>
      <link>https://dev.to/abhinav-writes/how-generative-ai-is-being-used-in-new-ways-32g2</link>
      <guid>https://dev.to/abhinav-writes/how-generative-ai-is-being-used-in-new-ways-32g2</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Hello everyone! &lt;br&gt;
Today, I am going to share with you all what I recently found and how good it is. &lt;br&gt;
Recently, I came to know about an Asset Management Platform that helps developers like us to manage assets on the web efficiently. Yes! I am talking about &lt;strong&gt;Cloudinary (an Image and Video API Platform)&lt;/strong&gt;. It provides dynamic APIs to manipulate assets like images and videos on the web. &lt;/p&gt;

&lt;p&gt;But today, I am not going to share what Cloudinary is; instead, we are going to explore some new and exciting features from Cloudinary.&lt;/p&gt;

&lt;h3&gt;
  
  
  Quick Intro of Cloudinary
&lt;/h3&gt;

&lt;p&gt;A quick introduction to Cloudinary for those who haven't heard this name before, so you can understand the blog better. If you already know what it is and have used it, you can skip this section. &lt;/p&gt;

&lt;p&gt;Cloudinary is an Image and Video API Platform that offers dynamic APIs to host your assets on the web with good support and accessibility. Along with APIs, it also offers an Asset Management service where you can store, host, and manipulate your assets. This is how Cloudinary provides a full set of features that a developer or organization needs to ensure their service does not face high load or compromise the quality of assets for performance.&lt;/p&gt;

&lt;p&gt;Now that you have a solid context of what Cloudinary is, let's move ahead…&lt;/p&gt;

&lt;h3&gt;
  
  
  Why am I writing this blog?
&lt;/h3&gt;

&lt;p&gt;Now, you are wondering why I am writing this. Is this a Cloudinary doc or advertisement? No, it's not. I am writing this to share an experience with you all that excites me a lot. &lt;/p&gt;

&lt;p&gt;Recently, I got a newsletter email from the Cloudinary team (they called it &lt;em&gt;Cloudinary Developer Bytes&lt;/em&gt;) and I opened it. In that email, the Cloudinary team shared what new and cool things they are shipping and building. It includes various things from &lt;strong&gt;&lt;em&gt;MCP Server to 3D Spinset to tutorials&lt;/em&gt;&lt;/strong&gt; and a lot more. By going through this, I found that Cloudinary is also shipping new AI features on its platform. Honestly, at first, I thought it was some chatbots or agents to transform images or videos. But I was wrong; they really shipped some nice and cool AI features that can enhance the way we interact with assets on the web.&lt;/p&gt;

&lt;p&gt;Here's the list of &lt;strong&gt;AI features for images&lt;/strong&gt; available so far as I write this article:&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%2Fwv9m141b5vc9d2sk2nj5.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%2Fwv9m141b5vc9d2sk2nj5.png" alt="Cloudinary-AI-features" width="580" height="565"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can now use Cloudinary to perform many operations on your assets directly on the web.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Exploring Cloudinary's AI Features&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;I tried some of these features (like &lt;strong&gt;&lt;em&gt;Upscale, Generative Remove, Generative Replace&lt;/em&gt;&lt;/strong&gt;) and I really love them:&lt;/p&gt;

&lt;p&gt;Here are some examples:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/devabhinav/image/upload/v1751912708/cat-image.jpg" rel="noopener noreferrer"&gt;Low Resolution Cat Image&lt;/a&gt; This cat image has dimensions of 340 × 400. By simply adding &lt;code&gt;e_upscale/&lt;/code&gt; in the URL, the image is upscaled to 1360 × 1600, almost 4 times larger. You can do this on the web by just modifying the URL parameters to upscale your image 4 times.&lt;/p&gt;

&lt;p&gt;You can easily test it by adding those parameters between the upload and version number (&lt;a href="https://res.cloudinary.com/devabhinav/image/upload/e_upscale/v1751912708/cat-image.jpg" rel="noopener noreferrer"&gt;Modified URL with those parameters&lt;/a&gt;). That's it, your image is upscaled. No website, no subscription, no tools needed.&lt;/p&gt;

&lt;p&gt;I also tried Generative Background Replace, which lets you change the background of any image to anything you want. For example, here is an image of a girl and a dog with a solid background → &lt;a href="https://res.cloudinary.com/devabhinav/image/upload/cld-sample" rel="noopener noreferrer"&gt;Image&lt;/a&gt;. By adding &lt;code&gt;e_gen_background_replace:prompt_times%20square&lt;/code&gt; in the URL parameters, it gets a Times Square background → &lt;a href="https://res.cloudinary.com/devabhinav/image/upload/e_gen_background_replace:prompt_times%20square/cld-sample" rel="noopener noreferrer"&gt;Transformed Image&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;You can also combine these effects as needed (&lt;em&gt;peak customization&lt;/em&gt;), for example, transforming both the background and objects → &lt;a href="https://res.cloudinary.com/devabhinav/image/upload/e_gen_background_replace:prompt_times%20square/e_gen_replace:from_pink%20tshirt;to_black%20coat;preserve-geometry_true;multiple_true/cld-sample" rel="noopener noreferrer"&gt;Modified Image&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;There are many more features available for you to explore and enjoy. And this is just for images; Cloudinary also offers various AI features for video manipulation. Check out these docs: &lt;a href="https://cloudinary.com/documentation/ai_in_action" rel="noopener noreferrer"&gt;AI In Action&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  How can you do this or create your own…
&lt;/h3&gt;

&lt;p&gt;I faced some issues with this because it wasn't clearly available in the docs, or I couldn't find it (skill issues). However, it's not too difficult to locate. To test AI features or create your own:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Go to your Cloudinary console → Go to the image section → Go to Manage Transformations (here you will find all your saved transformations with your custom names (yes! that’s also possible)) → Then click on the + icon, and you will be redirected to the transformations console, as seen in the second image.&lt;/em&gt;&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%2Fc5vjofskucavpt63ftjz.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%2Fc5vjofskucavpt63ftjz.png" alt="Cloudinary-Console" width="800" height="347"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The Transformation Console Page:&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%2F8jte9vu5a6z3v1ztc0qv.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%2F8jte9vu5a6z3v1ztc0qv.png" alt="Cloudinary-Transformation-Console" width="800" height="347"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As shown in the image, you have sample images and options to test features with images in the console. You can find the URL parameters for that feature in the URL section (you also get SDK code to use in your application). After testing, you can save your custom actions with your custom parameter name, as seen in the first image (t_abhinav).&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;I hope you find this article helpful and learn something new. If you have already used or tested these Cloudinary's features, please share your experience. Did you like it, or did you encounter any issues?&lt;/p&gt;

&lt;p&gt;Do you know of any other tools or platforms that offer similar features? Please let me know, as I would be happy to test or use them.&lt;/p&gt;

&lt;p&gt;Thanks for reading!&lt;/p&gt;

&lt;p&gt;Goodbye :) See you in the next article 👋&lt;/p&gt;

</description>
      <category>cloudinary</category>
      <category>ai</category>
      <category>assetmanagement</category>
      <category>aitools</category>
    </item>
    <item>
      <title>Meet Potion: Your Smart Note-Taking Companion</title>
      <dc:creator>Abhinav</dc:creator>
      <pubDate>Mon, 30 Jun 2025 02:49:16 +0000</pubDate>
      <link>https://dev.to/abhinav-writes/meet-potion-your-smart-note-taking-companion-3bb8</link>
      <guid>https://dev.to/abhinav-writes/meet-potion-your-smart-note-taking-companion-3bb8</guid>
      <description>&lt;p&gt;Hello Everyone,&lt;/p&gt;

&lt;p&gt;In this article, we are going to know how i built my latest project &lt;code&gt;Potion&lt;/code&gt; with MindsDB, And how it made it super easy to build the advanced AI integrated project from both user and developer side. (Yes! it is)&lt;/p&gt;

&lt;h2&gt;
  
  
  First of all, What is MindsDB?
&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%2F6ijzbgpv0dzetkjy1ok4.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%2F6ijzbgpv0dzetkjy1ok4.png" width="800" height="364"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Before going deeper into other details, let's first understand what MindsDB is and how it made it super easy to build the workflow and execute it. &lt;a href="https://mindsdb.com/" rel="noopener noreferrer"&gt;MindsDB is an AI Data Solution Platform&lt;/a&gt; that makes it easy to connect, unify, and respond (as stated on their site). Simply put, we can understand MindsDB as an abstraction (Hidden Layer) that handles the connection of various data sources and automatically creates pipelines from that data, so you don't need to worry about AI integration development. MindsDB made it easy, like plug and play. Now, you can focus more on business logic rather than other unnecessary stuff like building a chatbot that answers user queries (sadly, but it's the truth!).&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Core Principle of MindsDB&lt;/p&gt;

&lt;p&gt;seamless integration, organization, and utilization of data (same thing we understand above :))&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  But how MindsDB able to bring all these features...What's the secret?
&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%2F1r0pkd2flohyvl9aynza.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%2F1r0pkd2flohyvl9aynza.png" alt="sqlTxt" width="800" height="376"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;SQL is the secret (Yes!). MindsDB is using SQL-based syntax as its core interface for AI and machine learning operations. By enhancing standard SQL with AI-specific extensions, MindsDB makes artificial intelligence accessible through a familiar database query language. This approach democratizes AI, allowing developers and data professionals to use their existing SQL skills for machine learning tasks, thus removing traditional barriers to AI adoption.&lt;/p&gt;

&lt;p&gt;This approach not only simplifies the integration process but also ensures that AI capabilities are seamlessly incorporated into existing workflows with minimal effort. As we all know, SQL has historically transformed database querying, saving billions for companies worldwide. Now, MindsDB is harnessing that power to drive their advanced AI innovation, making complex integrations more efficient and accessible.&lt;/p&gt;

&lt;p&gt;During the development of &lt;strong&gt;&lt;em&gt;Potion&lt;/em&gt;&lt;/strong&gt;, I realized why this is crucial for developers and how it greatly impacts the development cycle, making a developer's work much easier and more efficient.&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%2F1kkoqsfg9j0w1jk884w5.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%2F1kkoqsfg9j0w1jk884w5.png" alt="Potion homepage" width="800" height="347"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Potion, through which I learned all of this?
&lt;/h2&gt;

&lt;p&gt;Potion is an Intelligent Note-Taking Assistant that stores your daily notes or moments in your local storage (yes! no database, 100% privacy) and your local MindsDB instances or image if you are using Docker :). But this is a simple note application—what's intelligent about it? Wait, Potion not only stores your notes, it can search your notes (not just a keyword matching search), it's an AI Semantic Search. You have an AI Agent running only for you and with your data locally (Yes! No more clouds and data privacy issues). The story doesn't end there; you also get an AI summarization feature that can summarize your notes into a much more concise form (Yes! No more juggling). Sounds cool, doesn't it?&lt;/p&gt;

&lt;p&gt;All of these features are too complex, and generally, it takes me months to implement all of this in a single application. But can you believe, I shipped all of these features in a week (yes! working week). And it stretched to a week because I got some logic errors; otherwise, you can ship all of these features in your applications in less than a week. (yes! it is true, no bluffs). Thanks to MindsDB for bringing such a platform that can help you ship industry-level features within a span of a day.&lt;/p&gt;

&lt;h2&gt;
  
  
  Some of the key features that i like in MindsDB?
&lt;/h2&gt;

&lt;p&gt;MindsDB and their platform are loaded with so many cool features, you can check out later by installing it locally, but the features that I like the most are:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Knowledge Base&lt;/strong&gt;: Kb is one of the finest and best features of MindsDB. Using Knowledge Base, you can transform your raw data into vector embeddings that can help you build various applications based on it, like RAG, Text Summarization, and much more. And for all of this, you do not need complex implementations, integrations of Vector DB, Embedding Models, or other stuff that can make you mad. But with MindsDB, you just need these code snippets and that’s it! Now add your data and build your application. (Yes! it is that simple)&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CREATE KNOWLEDGE_BASE my_kb
USING
   embedding_model = {
       "provider": "openai",
       "model_name" : "text-embedding-3-large",
       "api_key": "sk-abc123"
   },
   reranking_model = {
       "provider": "openai",
       "model_name": "gpt-4o",
       "api_key": "sk-abc123"
   },
   metadata_columns = ['product'],
   content_columns = ['notes'],
   id_column = 'order_id';
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Agent&lt;/strong&gt;: Earlier, when we needed to add an AI Agent or build an AI Agent, we first had to create a workflow for it and implement it. If we wanted it to be based on our data, we either needed to fine-tune that LLM model (which is too costly) or build an efficient pipeline that could handle such specific tasks (not an easy job). Both of these options are too hectic and costly, plus it is not guaranteed that your Agent will work perfectly unless you do extensive testing (again, a hectic and costly process).&lt;br&gt;
But MindsDB brings a solution to eliminate this problem, which is the MindsDB Agent. MindsDB’s Agents are industry-level conversational agents that can answer questions using your data with higher accuracy. To use a MindsDB Agent, you do not need high-level functions or implementations. With a simple query, you can deploy an industry-level Agent.&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="n"&gt;AGENT&lt;/span&gt; &lt;span class="n"&gt;my_agent&lt;/span&gt;
&lt;span class="k"&gt;USING&lt;/span&gt;
   &lt;span class="n"&gt;model&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'gemini-2.0-flash'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
   &lt;span class="n"&gt;google_api_key&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'xyz123'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
   &lt;span class="n"&gt;include_knowledge_bases&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'mindsdb.sales_kb'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'mindsdb.orders_kb'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
   &lt;span class="n"&gt;include_tables&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'postgres_conn.customers'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'mysql_conn.products'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
   &lt;span class="n"&gt;prompt_template&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'
       mindsdb.sales_kb stores sales analytics data
       mindsdb.orders_kb stores order data
       postgres_conn.customers stores customers data
       mysql_conn.products stores products data
   '&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;There are many more exciting features available in MindsDB, like Models, AI Tables, Views, Jobs, and much more. If you are thinking of adding AI power to your application, then do check out MindsDB; you will be glad you did. Yes!&lt;/p&gt;

&lt;h2&gt;
  
  
  Now, let’s come to potion again..
&lt;/h2&gt;

&lt;p&gt;Potion is a fully open-source web application, and all the code is available in the GitHub repo. Do check it out if you want to explore MindsDB. But keep in mind, you should have MindsDB installed locally first to use all the core AI features of Potion. For details, you can check out &lt;a href="https://docs.mindsdb.com/setup/self-hosted/docker-desktop" rel="noopener noreferrer"&gt;these guides&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Here’s the Repo: &lt;a href="https://github.com/AbhinavTheDev/potion" rel="noopener noreferrer"&gt;Potion’s GitHub Repo&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Please give it a star ⭐ if you like the project. It really boosts my energy to create more applications like this for all of you.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;If you don’t have time to install and try everything, no worries! We also have a Demo Video that shows you a glimpse of all the awesome MindsDB integrations in Potion. However, not everything can be covered in a demo. Therefore, checking out the codebase will surely give you an extra edge. (And we are developers, we can read codebases.)&lt;/p&gt;

&lt;p&gt;Here’s the Demo: &lt;a href="https://youtu.be/W2UIFzpttEE" rel="noopener noreferrer"&gt;Potion’s Demo Video&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;I don’t need to say this, but still, if you like the demo, please like the video. If you don’t like the video, you can also dislike it and tell me in the comments what I can improve in my demos.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Thank You!
&lt;/h2&gt;

&lt;p&gt;If you reached this point, I want to thank you. Thanks for reading this blog. I hope you found something new in this article that can help you in some way. If you have used MindsDB, please let me know about your experience. And if not, try it first and then tell me how much you like it. ;)&lt;/p&gt;

&lt;p&gt;Good Bye!!&lt;/p&gt;

</description>
      <category>mindsdb</category>
      <category>ai</category>
      <category>notetaking</category>
    </item>
    <item>
      <title>Access and Refresh Token Explained</title>
      <dc:creator>Abhinav</dc:creator>
      <pubDate>Sun, 15 Jun 2025 17:12:54 +0000</pubDate>
      <link>https://dev.to/abhinav-writes/access-and-refresh-token-explained-303o</link>
      <guid>https://dev.to/abhinav-writes/access-and-refresh-token-explained-303o</guid>
      <description>&lt;p&gt;While building an application or authentication system, it's crucial to ensure that users have access only to the data they are authorized to view, and each access must be granted to verified users only. Unauthorized access to your data can raise concerns about your application's workflow and authenticity. OAuth 2.0 and OpenID Connect are two protocols that introduce security measures and token-based authentication for applications, adding a security layer to your application. These measures help make accessing your application data a secure and authentic process. The tokens used for this process are Access Tokens and Refresh Tokens.&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%2Flbj18c2li67boqjl83er.webp" 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%2Flbj18c2li67boqjl83er.webp" alt="How Access token works //image from medium" width="800" height="471"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Access Token
&lt;/h2&gt;

&lt;p&gt;An access token is a short-lived token used to access data in your application. Whenever a user requests data, this token is verified for accessing the data. Generally, it is stored in-memory (not in LocalStorage or a database) to enhance security. The lifespan of an access token is typically a few minutes or seconds. This short lifespan minimizes the risk of misuse if the token is compromised.&lt;/p&gt;

&lt;p&gt;Access Tokens are typically added to API request headers as &lt;code&gt;authHeader&lt;/code&gt;, and this value is shown as &lt;code&gt;Bearer -accessToken-&lt;/code&gt;. This is the standard method for using Access Tokens in applications and for making requests with an Access Token.&lt;/p&gt;

&lt;p&gt;Here are the functions where we implemented the generation and verification of Access Tokens in JavaScript.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// generateToken function to generate Access Token in your NodeJS Application&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;generateAccessToken&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;jwt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sign&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;email&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;email&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="c1"&gt;// payload&lt;/span&gt;
    &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;JWT_SECRET&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;expiresIn&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;JWT_EXPIRES_IN&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="c1"&gt;// generally 5min or 60 sec&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// function to verify your access token and give access to you in application&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;verifyToken&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;next&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;authHeader&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;authorization&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;authHeader&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;authHeader&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;startsWith&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Bearer &lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;status&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;401&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;message&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Access token missing or invalid&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;token&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;authHeader&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;split&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt; &lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;

  &lt;span class="k"&gt;try&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;decoded&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;jwt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;verify&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;token&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;JWT_SECRET&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;decoded&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nf"&gt;next&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;catch &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;status&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;401&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;message&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Invalid or expired token&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;As you can see, the Access Token is generated with payloads, verified, and then grants the user access to the next process they requested.&lt;/p&gt;

&lt;h2&gt;
  
  
  Refresh Token
&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%2Fxqtxynamgadccy744rf9.webp" 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%2Fxqtxynamgadccy744rf9.webp" alt="How Refresh Token works // image from gfg" width="800" height="357"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A refresh token is a long-lived token used to generate new access tokens after the expiration of an access token. It is stored securely in a database and user storage. After the access token expires, the application verifies the refresh token against the database. Upon successful verification, new access and refresh tokens are generated, providing the user with continued access to the requested data.&lt;/p&gt;

&lt;p&gt;Here are the functions to generate and verify a refresh token.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// function to generate Refresh Token&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;generateRefreshToken&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;jwt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sign&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;JWT_REFRESH_SECRET&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;expiresIn&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;JWT_REFRESH_EXPIRES_IN&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="c1"&gt;// generally 7d&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// function to verify refresh token and generate new Access Token&lt;/span&gt;
&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;verifyRefreshToken&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;try&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;decoded&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;jwt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;verify&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;refreshToken&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;JWT_REFRESH_SECRET&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;newAccessToken&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;generateAccessToken&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;decoded&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;email&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;decoded&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;email&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
    &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;accessToken&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;newAccessToken&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;catch &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;status&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;403&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;message&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Refresh token expired or invalid&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In the code snippet, you can see that the refresh token is created with minimal information, like the ID, because it's only needed to verify the user, not to access resources. During verification, the refresh token is checked, and after successful verification, a new access token is generated to provide the user with access to the resource.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Aspects of Access and Refresh Token
&lt;/h2&gt;

&lt;p&gt;The key aspect of the separation between access and refresh tokens lies in the possibility of making access tokens easy to validate. An access token that carries a signature (such as a &lt;a href="https://jwt.io/" rel="noopener noreferrer"&gt;signed JWT&lt;/a&gt;) may be validated by the resource server on its own, without needing to contact the authorization server.&lt;/p&gt;

&lt;p&gt;Refresh tokens, on the other hand, require access to the authorization server. By keeping validation separate from queries to the authorization server, better latency and less complex access patterns are possible.&lt;/p&gt;

&lt;p&gt;Appropriate security in case of token leaks is achieved by making access tokens as short-lived as possible and embedding additional checks (such as client checks) into them. Refresh tokens, by virtue of being long-lived, must be protected from leaks. In the event of a leak, blacklisting may be necessary in the server (short-lived access tokens force refresh tokens to be used eventually, thus protecting the resource after it gets blacklisted and all access tokens are expired).&lt;/p&gt;

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

&lt;p&gt;In conclusion, implementing access and refresh tokens is a fundamental aspect of securing your application's data access processes. By understanding the distinct roles and lifespans of these tokens, developers can ensure that only authorized users gain access to sensitive information, thereby maintaining the integrity and security of the application. The strategic use of short-lived access tokens and long-lived refresh tokens, along with robust validation mechanisms, helps mitigate risks associated with token leaks and unauthorized access.&lt;/p&gt;

&lt;p&gt;As a result, these practices not only enhance security but also improve the overall user experience by providing seamless and secure access to application resources.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Building Rock Paper Scissors Game with AI 💥by Amazon Q</title>
      <dc:creator>Abhinav</dc:creator>
      <pubDate>Thu, 08 May 2025 11:31:24 +0000</pubDate>
      <link>https://dev.to/abhinav-writes/building-rock-paper-scissors-game-with-ai-by-amazon-q-30pe</link>
      <guid>https://dev.to/abhinav-writes/building-rock-paper-scissors-game-with-ai-by-amazon-q-30pe</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/aws-amazon-q-v2025-04-30"&gt;Amazon Q Developer "Quack The Code" Challenge&lt;/a&gt;: That's Entertainment!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Rock Paper Scissors is one of my favorite games, which I used to play a lot. This week, I am thinking of experiencing that joy again using AI, but I am not sure how to bring it into existence. As I am not familiar with any related technology that could allow me to build it, I then got to know about Amazon Q Developer and its strengths in writing code and implementing logic.&lt;/p&gt;

&lt;p&gt;Therefore, this article details my experience of using Amazon Q Developer and how it allows me to build a complex (yes! you heard right!), webcam-controlled Rock Paper Scissors (RPS) game, demonstrating how Q significantly reduced my development barriers and delivered awesome results 😍.&lt;/p&gt;

&lt;p&gt;Like this:&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%2F2okd7ynyjnm3qbbm328r.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%2F2okd7ynyjnm3qbbm328r.png" alt="RPS SS"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;Basically my goal was to create a fully interactive, browser-based Rock Paper Scissors game with two distinct player types: Human and AI.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Human Player (Me): Input is captured via the user's webcam, with hand gestures (Rock, Paper, or Scissors) being recognized in real-time.&lt;/li&gt;
&lt;li&gt;AI Opponent: The AI's moves are determined by Gemini, accessed via its API, adding an intelligent and unpredictable element to the gameplay.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The entire application implemented so simply in vanilla JavaScript for logic and interactivity (so that i can understand better).&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;You can also checkout the demo -&amp;gt; &lt;a href="https://youtu.be/ZVLuXoJ_iG0" class="crayons-btn crayons-btn--primary" rel="noopener noreferrer"&gt;Demo&lt;/a&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Code Repository
&lt;/h2&gt;

&lt;p&gt;Here is the Source Code of project -&amp;gt; &lt;a href="https://github.com/abhinavthedev/rock-paper-scissors" class="crayons-btn crayons-btn--primary" rel="noopener noreferrer"&gt;Github Repo&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;If you like the project then do give it a star ⭐.&lt;/p&gt;

&lt;h2&gt;
  
  
  How I Used Amazon Q Developer
&lt;/h2&gt;

&lt;p&gt;Amazon Q Developer played a key role in bringing my game idea to life. It helped me with the entire process, from structuring the project to implementing the code. Since I didn't have a detailed plan for this project, I entered this high-level prompt into Amazon Q:&lt;br&gt;
 &lt;code&gt;Create a complete, functional, browser-based Rock, Paper, Scissors (RPS) game in JavaScript, HTML, and CSS. The game will feature a human player whose moves are detected via webcam and an AI opponent whose moves are determined by the Gemini LLM via its API.&lt;/code&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw88e5f6hesu996del6m1.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%2Fw88e5f6hesu996del6m1.png" alt="Amazon Q"&gt;&lt;/a&gt;&lt;br&gt;
Instantly, it provided a clear plan and began building the project. My initial thought was that it might not get it right on the first try, and I'd need to guide it through several iterations to get a working prototype. I was surprised to be wrong because Amazon Q delivered a solid implementation that handled everything smoothly – from error handling to integrating the necessary libraries, it all worked perfectly from the start.&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%2Fbcbz7u6zojqllcday8jp.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%2Fbcbz7u6zojqllcday8jp.png" alt="q-web"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I must say, Amazon Q Developer is an excellent AI Coding Assistant. It increased my productivity and helped me bring ideas to life much faster and with fewer errors. I've also used other AI coding assistants and builder tools before, but none have provided me results of this level.&lt;/p&gt;

&lt;p&gt;If you haven't explored Amazon Q Developer yet, I highly recommend giving it a try – it would be a nice experience for your workflow. For those who have already used it, I'd love to hear about your experiences in the comments below!&lt;/p&gt;

&lt;p&gt;You can also checkout the Amazon Q and use it for free: &lt;a href="https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/what-is.html" rel="noopener noreferrer"&gt;Amazon Q Developer&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thanks for Reading and Stay Tuned for more such stuffs!&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>awschallenge</category>
      <category>ai</category>
      <category>webdev</category>
    </item>
    <item>
      <title>AI: The Research Companion</title>
      <dc:creator>Abhinav</dc:creator>
      <pubDate>Sun, 13 Apr 2025 13:32:08 +0000</pubDate>
      <link>https://dev.to/abhinav-writes/ai-the-research-companion-mj9</link>
      <guid>https://dev.to/abhinav-writes/ai-the-research-companion-mj9</guid>
      <description>&lt;h3&gt;
  
  
  Introduction
&lt;/h3&gt;

&lt;p&gt;Artificial Intelligence (AI) and Large Language Models (LLMs) are fundamentally reshaping scientific research. These technologies are going beyond text to include multimedia capabilities and are transforming how complex tasks are approached across disciplines—from medicine to materials science. By automating everyday tasks, accelerating discoveries, and allowing researchers to solve complex problems more efficiently.&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%2Fv6i41mdyoe3cv7knozv2.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv6i41mdyoe3cv7knozv2.jpg" alt="https://www.sciencedirect.com/science/article/pii/S2590123025008205#:~:text=AI%20enhances%20research%20efficiency%20by,experiment%20design%2C%20and%20manuscript%20writing."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Increasing Research Efficiency
&lt;/h3&gt;

&lt;p&gt;AI can increase research efficiency by automating various tasks such as data analysis, hypothesis testing, and literature review which require lot of time and effort of researchers. For example, the concept of an "autonomous generalist scientist" (AGS)—a system combining AI and robotics to manage the entire research process—promises significant reductions in time and resource requirements. Various Studies in various disciplines indicates that AI automates over half of researchers workload, freeing researchers to focus on evaluating AI-suggested innovations and strategic decisions. In data-intensive fields like genomics and climate science, AI-powered platforms rapidly analyze massive datasets, revealing patterns and insights beyond human capability.&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%2Fg9dj1jd2m53pnst6gqv8.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%2Fg9dj1jd2m53pnst6gqv8.png" alt="Workflow"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Agentic Research Evolution
&lt;/h3&gt;

&lt;p&gt;AI Agents can help to bring these advance technologies in the current research landscape with much greater efficiency and less complexities for researchers. These agents can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Automate routine tasks, freeing researchers for creative and complex work
&lt;/li&gt;
&lt;li&gt;Analyze data with high precision, reducing human errors
&lt;/li&gt;
&lt;li&gt;Provide comprehensive insights for informed decision-making
&lt;/li&gt;
&lt;li&gt;Explore vast problem spaces to identify novel solutions
&lt;/li&gt;
&lt;li&gt;Facilitate interdisciplinary collaboration
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One of the example of such type of agent is &lt;strong&gt;Research Agent&lt;/strong&gt;, an open-source web application designed to assist researchers by automating and optimizing various aspects of the research process. It leverages AI technologies like LLMs, Web Search and Indexing to streamline tasks such as creating research plans, conducting literature reviews, and performing data analysis. This allow users to generate comprehensive research on diverse topics with a single click.&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%2Fc9lksvegz4z0m489t6cn.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%2Fc9lksvegz4z0m489t6cn.png" alt="LangChain Workflow"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  How Research Agent Works
&lt;/h3&gt;

&lt;p&gt;The Research Agent uses the &lt;strong&gt;&lt;em&gt;LangGraph research assistant framework&lt;/em&gt;&lt;/strong&gt; to structure its workflow. This framework ensures efficient data fetching, analysis, and synthesis into final research outputs. The architecture consists of nodes and edges designed for proper data handling and effective response generation. For generating and summarizing findings, the system uses &lt;strong&gt;LLM models&lt;/strong&gt;, which are well-suited for this workflow. To enhance web search capabilities, various search APIs are integrated, enabling the agent to retrieve real-time content without getting blocked, thus making the research process more efficient and up-to-date.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/AbhinavTheDev/research-agent" rel="noopener noreferrer"&gt;GitHub Repo&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://youtu.be/-2Rs2kjHpQY" rel="noopener noreferrer"&gt;Demo&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you like the project then&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/Abhinavthedev/research-agent" class="crayons-btn crayons-btn--primary" rel="noopener noreferrer"&gt;Do give a star ⭐&lt;/a&gt;
 &lt;a href="https://quira.sh/repo/AbhinavTheDev-research-agent-965526038" class="crayons-btn crayons-btn--primary" rel="noopener noreferrer"&gt;Do Upvote It&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;It means a lot for me.&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%2Fydli4d4kvplqd0wueu5g.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%2Fydli4d4kvplqd0wueu5g.png" alt="Pilot"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  AI as a Copilot, Not as Pilot
&lt;/h3&gt;

&lt;p&gt;While AI’s role in research is amazing and helpful, but experts also agreed that AI should help the professionals instead of replacing them. It is also proved that AI lacks creativity, critical thinking, and holistic understanding which are inherited in humans. Frameworks like LangChain and many more AI related frameworks considered such limitations of AI therefore these frameworks introduced Human-In-Loop(HIL) mechanism which allow such technologies to provide more creative and better responses. Still such technologies are not able to fully substitute human researchers and they can't be, suggesting a future where AI acts as a powerful assistant rather than a standalone scientist. (Yup! we are safe...)&lt;/p&gt;




&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;AI Agents can revolutionize research landscape by enhancing productivity. Its ability to automate tasks and analyze vast datasets is reshaping how science is conducted. Practical tools such as Research Agent demonstrate how AI can streamline research workflows and provide comprehensive researches. However, realizing AI’s full benefits requires careful attention to ethical standards, human-in-loop, and sustainable integration. Balancing innovation with responsibility will be key to advancing knowledge while preserving human integrity in this ongoing tech revolution.&lt;/p&gt;

</description>
      <category>aiagents</category>
      <category>research</category>
      <category>langchain</category>
      <category>companion</category>
    </item>
    <item>
      <title>AI Agents: The Future of Intelligent Automation</title>
      <dc:creator>Abhinav</dc:creator>
      <pubDate>Thu, 09 Jan 2025 16:59:33 +0000</pubDate>
      <link>https://dev.to/abhinav-writes/ai-agents-the-future-of-intelligent-automation-4ge1</link>
      <guid>https://dev.to/abhinav-writes/ai-agents-the-future-of-intelligent-automation-4ge1</guid>
      <description>&lt;p&gt;&lt;em&gt;Artificial Intelligence (AI)&lt;/em&gt; is the rapid evolving technology that made our lives a lot easier, and AI Agents are at the forefront of this revolution. From chatbots providing customer service to autonomous vehicles navigating our roads, AI agents are becoming increasingly prevalent in our daily lives.&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%2Fn8fklvm0rjp3h9zv5pa4.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%2Fn8fklvm0rjp3h9zv5pa4.png" alt="What are AI Agents" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What Are AI Agents?
&lt;/h2&gt;

&lt;p&gt;AI Agents are programs designed to act autonomously and intelligently within an environment. They perceive their surroundings, make decisions based on this perception, and then take actions on their own to achieve specific goals. Unlike traditional LLM's that follow pre-programmed instructions, AI agents can learn and adapt their behavior based on feedback, making them ideal for dynamic and unpredictable situations.&lt;/p&gt;

&lt;p&gt;There are various types of AI Agents:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Rule-based agents:&lt;/strong&gt; These agents operate on predefined rules and logic, making decisions based on specific conditions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Learning-based agents:&lt;/strong&gt; These agents learn from data and experiences, improving their performance over time.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reactive agents:&lt;/strong&gt; They respond directly to their environment, making decisions based on the current situation without retaining past information.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Goal-driven agents:&lt;/strong&gt; These agents plan their actions to achieve a specific goal.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Utility-based agents:&lt;/strong&gt; They aim to maximize a specific utility function, choosing actions that yield the highest expected reward.&lt;/li&gt;
&lt;/ul&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%2F6koyj3duzrsglkz8801h.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%2F6koyj3duzrsglkz8801h.png" alt="Agents Working" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How AI Agents Work
&lt;/h2&gt;

&lt;p&gt;AI Agents typically consist of three core components:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Perception:&lt;/strong&gt;  Agents gather information about their environment through data streams or knowledge base.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Decision-making:&lt;/strong&gt; Based on the perceived information, agents use algorithms and LLM models to decide on the best course of action.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Action:&lt;/strong&gt; Finally, agents execute the chosen actions, interacting with their environment to achieve the desired outcomes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Frameworks like LangChain and Langgraph play a crucial role in building AI agents. They provide the necessary tools and abstractions to manage the agent's workflow, handle communication between different components, and integrate with external APIs and services.&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%2F62yipjnl4cbdaevt0v28.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%2F62yipjnl4cbdaevt0v28.png" alt="Agents building" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Building an AI Agents
&lt;/h2&gt;

&lt;p&gt;Developing AI agents requires a robust set of tools and frameworks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;LangChain:&lt;/strong&gt; Simplifies the development of agents by providing a standard interface to interact with LLMs, manage prompts, and access external tools.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Langgraph (LangChain's visual interface):&lt;/strong&gt; Offers a user-friendly way to design, build, and manage LLM workflows using a visual graph interface.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CopilotKit:&lt;/strong&gt; Provide access to various predefined adapters and hooks so that we can easily integrate AI agents in our application.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Coding Agent&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Coding Agent is a AI Agent built using Langgraph and Copilotkit, it is designed to help developers to write, debug, and review code. It addresses the need for more intelligent coding assistance, targeting developers of all skill levels who want to improve their productivity and code quality.&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%2Fa9rlyc3rzkaxy7hym3qt.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%2Fa9rlyc3rzkaxy7hym3qt.png" alt="Architecture" width="800" height="428"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This Agent utilizes the &lt;em&gt;Langgraph's Code Assistant Agent&lt;/em&gt;. The agent interacts with a Groq API for information retrieval and employs a mistral-8x7b LLM for its language understanding and generation capabilities. This entire system is seamlessly integrated into a Next.js application for a user-friendly interface.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Key Features:&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Code Generation:&lt;/strong&gt; Provides code suggestions and auto-completions based on context and best practices.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Debugging Assistance:&lt;/strong&gt; Identifies potential errors and offers solutions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Code Review:&lt;/strong&gt; Analyzes code for style, consistency, and potential vulnerabilities.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here's the Github Repo and Demo of project, you can check it out!&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Repo: &lt;a href="https://github.com/AbhinavTheDev/coding-agent" rel="noopener noreferrer"&gt;Coding Agent&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Video Demo: &lt;a href="https://youtu.be/OHNZUrz2o0g?si=nUtjJcTg9O8lNr96" rel="noopener noreferrer"&gt;Project Demo&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;AI Agents represent a significant leap forward in AI, offering a glimpse into a future where intelligent systems work alongside humans to solve complex problems. Their ability to learn, adapt, and act autonomously makes them revolutionary tech in various domains, driving innovation and transforming industries.&lt;/p&gt;

&lt;p&gt;Share your thoughts, projects, and experiences in the comments below. Let's collaborate and shape the future of intelligent automation together. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Thanks For Reading :)&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>agents</category>
      <category>copilotkit</category>
      <category>langchain</category>
      <category>langgraph</category>
    </item>
    <item>
      <title>What is so special in git ??</title>
      <dc:creator>Abhinav</dc:creator>
      <pubDate>Sun, 08 Sep 2024 05:08:50 +0000</pubDate>
      <link>https://dev.to/abhinav-writes/what-is-so-special-in-git--j34</link>
      <guid>https://dev.to/abhinav-writes/what-is-so-special-in-git--j34</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Tired of hearing about Git but have no clue what it is?&lt;/p&gt;

&lt;p&gt;Frustrated by tutorials throwing weird commands at you without explanation?&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%2Fi.giphy.com%2FW8zSq0vELdBhMAJdG3.webp" 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%2Fi.giphy.com%2FW8zSq0vELdBhMAJdG3.webp" width="480" height="360"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Don't worry, I've got you covered!&lt;/p&gt;

&lt;p&gt;In this blog, we'll unravel the Git mystery together, no jargon required!&lt;/p&gt;

&lt;p&gt;Let's dive in and demystify Git, one commit at a time!&lt;/p&gt;

&lt;p&gt;P.S. We'll start by cracking the code of VCS (Version Control System). Intrigued?&lt;/p&gt;

&lt;p&gt;Let's go!&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Version Control System (VCS) ?
&lt;/h2&gt;

&lt;p&gt;Version Control is a system that records changes to a file or set of files over time so that you can recall specific versions later. It is known as a Version Control System because it allows you to manage and control different versions of your files, ensuring that you can track and revert to previous states as needed. In the software world, you will use version control to manage software source code, but you can actually use it for almost any type of file on a computer (for example: managing bank records, office documents, and much more).&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%2Ftwhau7b7l2qed3ci9aet.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%2Ftwhau7b7l2qed3ci9aet.png" alt="Image description" width="220" height="182"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you are in any profession where you want to keep track of every version or state of your files, a VCS is a very wise thing to use. It allows you to revert selected files back to a previous state, revert the entire project or file to a previous state, compare changes over time, see who last modified something that might be causing a problem, who introduced an issue and when, and more. If you screw things up or lose files, you can easily recover. That's why VCS's become a necessary tool for developers, making their work more effective, reducing workload, and preserving their work from any mishaps that might occur, as software development involves experimenting with new things.&lt;/p&gt;

&lt;h2&gt;
  
  
  Version Control Systems
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;&lt;em&gt;Local Version Control System (LVCS)&lt;/em&gt;&lt;/strong&gt;
The journey of VCS starts with local VCS (for example: RCS). It stores patches of changes made to a file, and when someone needs to check the file, they apply the patches from that specific stage to get that version of the file.
&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%2Fni859l9xz7zo1uxaj1vu.png" alt="Image description" width="800" height="420"&gt;
As it sounds, this is not an effective way of version control. In this system, every file is stored locally, and if any patch gets deleted or corrupted, the entire development will suffer. Additionally, there is no option to share files with teams; we need to share each file and its patches separately with every team member. That's why the development of version control systems moved to a new approach, which is much more effective than this.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;&lt;em&gt;Centralized Version Control Systems (CVCS)&lt;/em&gt;&lt;/strong&gt;
are one of the most used Version Control Systems, widely adopted by developers in their workflows. They come with various new features that are very useful for professionals, allowing them to collaborate with developers on other systems without sending everything individually. In this type of VCS, developers who collaborate know to a certain degree what everyone is doing on the project. Also, administrators of projects have fine-grained control over who can do what. Some popular examples of CVCS are: CVS, Subversion, and Perforce.
&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%2F0kurzokzkasqd2lu6zyk.png" width="800" height="420"&gt;
Despite having many useful features, CVCS has some disadvantages that can cause workflow problems. The main issue is the single point of failure. If the central file is inaccessible or corrupted, everyone connected to it is affected. While CVCS is better than LVCS, it still has limitations that make it unreliable for everyone. This led to the development of another type of VCS, which is much more effective.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;Distributed Version Control Systems (DVCS)&lt;/em&gt;&lt;/strong&gt;
The Latest type of Version Control System is DVCS which are using by developers nowadays, clients and developers don't just check out the latest snapshots of files; they fully mirror the repository, including its entire history. Thus, if something goes wrong with the server, no one is affected.
&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%2Fupk4xc69opg2sbbfltmq.png" width="800" height="420"&gt;
The most popular DVCS is Git, but there are many other DVCSs also available, such as Mercurial, Darcs, and Bazaar.&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;[Whenever someone reads files with added changes, it is known as a  checkout.]&lt;br&gt;
[The  snapshot  here refers to the copy of full file structure with its history records.]&lt;br&gt;
[The repository is the same as a folder we generally use in our systems. That's why in Version Control Systems, a folder is known as a  repository.]&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  History of Git
&lt;/h2&gt;

&lt;p&gt;Now, I am sure that after understanding these terms, one question arises: if many DVCS software options are already available, why was Git developed, and what makes it unique? To understand this, we need to dive into the history of Git and discover why it came into existence. Git takes it's birth in 2005, but before Git there's a DVCS which provide similar service, are widely used by developers which is known as BitKeeper. BitKeeper was used in the Linux Kernel Project, which was a very big project at that time. However, in 2005, the long-standing relationship between Linux and BitKeeper ended when BitKeeper's free-of-charge status was revoked due to profit motives. This incident prompted Linus Torvalds (the creator and lead Developer of Linux &amp;amp; Git) to develop their own DVCS system with following goals:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Speed&lt;/li&gt;
&lt;li&gt;Simple Design&lt;/li&gt;
&lt;li&gt;Strong Support for non-linear development (Branching)&lt;/li&gt;
&lt;li&gt;Fully distributed&lt;/li&gt;
&lt;li&gt;Able to handle large projects like Linux Kernel efficiently.&lt;/li&gt;
&lt;/ul&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%2F07ptfr8a2ecy74hje07a.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%2F07ptfr8a2ecy74hje07a.png" alt="Image description" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That's how git comes into existence but it's high-end features (like fast, strong community support, distributive nature) without any cost and supportive architecture for large projects which makes the workflows of software development much smoother makes it most popular and widely used Version Control System. Today, all companies use Git in their workflows, from development to deployment. Git is used everywhere.&lt;/p&gt;

&lt;p&gt;So far, we have learned about various terms related to Git and why it was created. But we keep saying "Git, Git, Git" without really knowing what it is. We know that Git is a type of DVCS, but why did it become more popular than other DVCS? Are the features that Linus Torvalds added to Git the reason for its popularity, or is there something else that makes it special? Let's find out the answer to this mystery. It's a bit confusing, so let's figure it out together.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Git ??
&lt;/h2&gt;

&lt;p&gt;Git is a distributed version control system, but it is not the same as other distributed version control systems. While other DVCSs store the changes made to a file and then provide those changes with the file in the workflow, Git works differently. Git stores its data in a series of snapshots. With every commit, Git saves snapshots of the whole file system along with their changes. If files have not changed, Git does not store the file again; it just links to the previous identical file it already stored.&lt;/p&gt;

&lt;p&gt;Other DVCS's Workflow:&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%2F21audb26knodizszumzu.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%2F21audb26knodizszumzu.png" alt="Image description" width="800" height="339"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Git's Workflow:&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%2Fzpc9gyxmseely1oqdwpw.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%2Fzpc9gyxmseely1oqdwpw.png" alt="Image description" width="800" height="333"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The pictorial representation above shows the workflow of Git compared to other DVCSs. In other DVCSs, changes are stored as they are made. However, in Git, the complete file is stored with every change, which helps in reverting and storing history systematically. If nothing changes, it simply links to the previous version. This approach avoids issues that can arise in the long run with other DVCSs, which only store changes after each commit and can mess up the change record if other developers are also collaborating.&lt;/p&gt;

&lt;h2&gt;
  
  
  Git (God of Speed)
&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%2Ffmm7i12frpicg80dlt70.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%2Ffmm7i12frpicg80dlt70.png" alt="Image description" width="400" height="224"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Sounds weird, right?&lt;/p&gt;

&lt;p&gt;Let me explain, and you'll agree with the heading. Most operations in Git only require local files and resources to work (the git clone command, which you'll see often, makes this possible smoothly). Generally, no information is needed from another computer on your network.&lt;/p&gt;

&lt;p&gt;For example, to browse the history of the project, Git doesn't need to go out to the server to get history and display it for you -- it simply reads it directly from your local databse. This means you see the project history almost instantly. If you want to see the changes introduced between the current version of a file and the file a month ago, Git can look up the file a month ago and do a local difference calculation, instead of having to either ask a remote server to do it or pull an older version of the file from the remote server to do it locally.&lt;/p&gt;

&lt;p&gt;This also means there is very little you can't do if you're offline or off VPN. If you get on an airplane or a train and want to do some work, you can commit to your local copy until you get a network connection to upload. If you go home and can't get your VPN client working properly, you can still work. In many other systems, this is either impossible or very difficult. For example, in Perforce, you can't do much when you're not connected to the server. In Subversion and CVS, you can edit files, but you can't commit changes to your database because it's offline. This may not seem like a big deal, but you might be surprised at how much of a difference it can make.&lt;/p&gt;

&lt;h2&gt;
  
  
  Multiverse Of Data
&lt;/h2&gt;

&lt;p&gt;No, it is not the multiverse of Dr. Strange where you get lost. It is a multiverse of data, and the Dr. Strange of this multiverse is Git. Git can do almost anything on Data with its power and never disappoints you. In Git, when you perform actions like editing or adding files, nearly all of them only add data to the Git database. It is hard to get the system to do anything that cannot be undone or to make it erase data in any way. As with any older VCS, you can lose or mess up changes you haven't committed yet, but once you commit a snapshot into Git, it is very difficult to lose, especially if you regularly push your database to another repository.&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%2F98re5txmqbogbx91hsh2.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%2F98re5txmqbogbx91hsh2.png" alt="Image description" width="318" height="158"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This makes using Git a joy because we can experiment without the risk of seriously messing things up. It makes the life of a software developer much easier and more productive.&lt;/p&gt;

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

&lt;p&gt;So far, we have covered the basics of Git, starting with the evolution of Version Control Systems (VCS) from Local to Centralized and finally to Distributed VCS. We learned about Git's history, why Linus Torvalds created it, and what makes it unique, such as its snapshot-based storage, speed, and offline capabilities. We also discussed how Git's strong data management supports safe experimentation without data loss.&lt;/p&gt;

&lt;p&gt;Stay tuned for the next chapter of this series, where we will uncover the security measures in Git, including how it ensures the integrity and authenticity of your data. We will also delve into more advanced topics such as rebasing, cherry-picking, and resolving merge conflicts, which will further enhance your understanding and usage of this powerful tool. By the end of this series, you will have a comprehensive knowledge of Git, empowering you to manage your projects with confidence and efficiency.&lt;/p&gt;

&lt;h2&gt;
  
  
  Thank You :)
&lt;/h2&gt;

&lt;p&gt;If you found this blog post helpful, please consider sharing it with others who might benefit from this. You can also follow me for more content on Git, React, and other Development topics.&lt;/p&gt;

&lt;p&gt;For Paid collaboration mail me at : &lt;a href="//mailto:abhinavmittal554@gmail.com"&gt;abhinavmittal554@gmail.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Connect with me on &lt;a href="https://x.com/abhinav11234" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;, &lt;a href="https://www.linkedin.com/in/abhinav-mittal-2a1b002a4/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt; and &lt;a href="https://github.com/AbhinavTheDev" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Thank you for Reading :)&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%2Fjri2168k6iqhc8txrg45.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%2Fjri2168k6iqhc8txrg45.png" alt="Image description" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>git</category>
      <category>versioncontrolsystems</category>
      <category>linustorvalds</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Reinforcement Learning: A Brief Overview</title>
      <dc:creator>Abhinav</dc:creator>
      <pubDate>Thu, 20 Jun 2024 16:29:19 +0000</pubDate>
      <link>https://dev.to/abhinav-writes/reinforcement-learning-a-brief-overview-3b87</link>
      <guid>https://dev.to/abhinav-writes/reinforcement-learning-a-brief-overview-3b87</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for &lt;a href="https://dev.to/challenges/cs"&gt;DEV Computer Science Challenge v24.06.12: One Byte Explainer&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Explainer
&lt;/h2&gt;

&lt;p&gt;In Reinforcement Learning (RL), we train models to make decisions based on actions, mistakes, and feedback, like humans learn from experience. In RL, model generate outputs on it's own, store feedback from incorrect outputs to improve future responses.&lt;/p&gt;

&lt;h2&gt;
  
  
  Additional Context
&lt;/h2&gt;

&lt;p&gt;When I learned about Reinforcement Learning in a Machine Learning course, I found it to be an interesting topic to explain. It is hard to explain briefly, but I still tried to do my best.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>cschallenge</category>
      <category>computerscience</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
