<?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.us-east-2.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>What is Monorepo ?</title>
      <dc:creator>Abhinav</dc:creator>
      <pubDate>Mon, 22 Jun 2026 02:50:00 +0000</pubDate>
      <link>https://dev.to/abhinav-writes/what-is-monorepo--31dd</link>
      <guid>https://dev.to/abhinav-writes/what-is-monorepo--31dd</guid>
      <description>&lt;p&gt;Have you ever built a full-stack application (without fullstack framework like NextJS), if yes so you might definitely know that you need to build two projects (frontend and backend) and need to write and build everything separately for both of them. But a monorepo allows to handle that development process more efficiently so that we do not need to build same utility repeatedly.&lt;/p&gt;

&lt;p&gt;A monorepo is a single repository containing&amp;nbsp;multiple distinct projects, with&amp;nbsp;well-defined relationships. It is a standard method of using multiple projects in one repository or folder.&lt;/p&gt;

&lt;p&gt;Companies like Google, Meta, Microsoft, and Uber uses monorepos to streamline software development across their diverse product suites. Modern companies often require a complex ecosystem of software, including web applications, APIs, Android and iOS apps, and testing suites. Managing these projects in isolation frequently leads to inefficiencies; teams often operate in isolation, unaware of redundant efforts pilling up or shared utility requirements. Furthermore, since frontend applications and APIs are inherently interdependent, a monorepo approach facilitates better integration, fosters code reuse, and significantly accelerates both development cycles and CI/CD pipelines.&lt;/p&gt;

&lt;h2&gt;
  
  
  Isn't it clutter everything if used in same place?
&lt;/h2&gt;

&lt;p&gt;That's where tools like &lt;code&gt;pnpm/npm/yarn/bun&lt;/code&gt; workspaces with &lt;code&gt;Nx&lt;/code&gt; or &lt;code&gt;Turborepo&lt;/code&gt; helps. These tools allows to structure monorepo, define relations, define ownership, configure CI/CD pipelines with workspace. Whereas you can use both of them separately as well, package managers for package management and tools for task management. But together they provide packages and task management that helps in overall development of project.&lt;/p&gt;

&lt;h3&gt;
  
  
  what is workspace ?
&lt;/h3&gt;

&lt;p&gt;It generally means that you have a Container that contains everything which your company needs in a monorepo form/structure. These workspaces are highly effective in establishing relations, allowing centralized or individual access of projects.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ff1ed70bchf8znu0t20bv.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ff1ed70bchf8znu0t20bv.png" alt="monorepo" width="800" height="554"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Does monorepo builds everything, regardless of which part changed?
&lt;/h2&gt;

&lt;p&gt;No, that is not how a monorepo works; a &lt;a href="https://nx.dev/blog/monorepo-is-not-monolith" rel="noopener noreferrer"&gt;monorepo is not the same as a monolith&lt;/a&gt;. Monorepos actually provide excellent isolation and efficiency. For example, if Team A is working on Project A, and it has no dependencies or shared state, it remains completely independent. If Team B makes changes to Project B, the monorepo will only rebuild Project B, leaving Project A untouched. Furthermore, if Project C depends on Project B, the system will only update Projects B and C to reflect those 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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fps290ghpt7y61okyq1bb.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fps290ghpt7y61okyq1bb.png" alt="monorepo tree" width="800" height="289"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  I get it what is Monorepo but how to use it ??
&lt;/h2&gt;

&lt;p&gt;Their are various tools available that allows to use Monorepo in your project such as: Nx and Turborepo combined with a package manager of your choice (pnpm is standard choice), all package managers supports workspaces so that you can add and link packages in your monorepo seamlessly. Based on your requirements, you can opt for &lt;a href="https://turborepo.dev" rel="noopener noreferrer"&gt;Turborepo&lt;/a&gt; (popular one) or &lt;a href="https://nx.dev/" rel="noopener noreferrer"&gt;Nx&lt;/a&gt; (more professional one).&lt;/p&gt;

&lt;p&gt;Here's a comparison of both Turborepo and Nx to make a informed choice:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;Turborepo&lt;/th&gt;
&lt;th&gt;Nx&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Philosophy&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Minimal&lt;/td&gt;
&lt;td&gt;Full featured&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Ease&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Easy to Use&lt;/td&gt;
&lt;td&gt;Needs detailed setup&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Configuration&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Minimal (&lt;code&gt;turbo.json&lt;/code&gt;)&lt;/td&gt;
&lt;td&gt;Moderate (&lt;code&gt;nx.json&lt;/code&gt;, &lt;code&gt;project.json&lt;/code&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Primary Goal&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Fast task running &amp;amp; caching&lt;/td&gt;
&lt;td&gt;Full monorepo platform &amp;amp; governance&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Ecosystem Support&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;JS/TS-based&lt;/td&gt;
&lt;td&gt;Native/Plugin-based (Go, Rust, etc.)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Code Generation&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Template-based (basic)&lt;/td&gt;
&lt;td&gt;Advanced (AST-aware, programmatic)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;CI/CD&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Efficient task caching&lt;/td&gt;
&lt;td&gt;Advanced distribution (Nx Agents)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;blockquote&gt;
&lt;p&gt;If you aren't sure, &lt;strong&gt;start with Turborepo.&lt;/strong&gt; It is much easier to start with and provides 80% of the value (caching and fast task execution) for most teams. If you eventually reach a point where you feel "boxed in" or need stronger architectural guardrails and advanced CI features, you can migrate to Nx.&lt;/p&gt;
&lt;/blockquote&gt;

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

&lt;p&gt;Monorepos are a highly efficient architectural choice in software development, enabling teams to work faster and more effectively. Tools like Turborepo have made this approach accessible to smaller teams as well. Companies like Google and Microsoft have even developed their own custom monorepo solutions, such as &lt;a href="https://github.com/bazelbuild/bazel?utm_source=devcodex.hashnode.dev" rel="noopener noreferrer"&gt;Bazel&lt;/a&gt; and &lt;a href="https://github.com/microsoft/rushstack?utm_source=devcodex.hashnode.dev" rel="noopener noreferrer"&gt;Rush&lt;/a&gt;., respectively to handle their codebase scale. This highlights the proven effectiveness and scalability of the monorepos.&lt;/p&gt;

&lt;p&gt;Have you ever used a monorepo? I’d love to hear about your experience in the comments below.&lt;/p&gt;

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

&lt;p&gt;&lt;a href="mailto:abhinavmittal554@gmail.com"&gt;Abhinav.&lt;/a&gt;&lt;/p&gt;

</description>
      <category>chaicode</category>
      <category>monorepo</category>
      <category>turborepo</category>
      <category>npm</category>
    </item>
    <item>
      <title>A Memory Game to enjoy this summer</title>
      <dc:creator>Abhinav</dc:creator>
      <pubDate>Sun, 21 Jun 2026 12:48:46 +0000</pubDate>
      <link>https://dev.to/abhinav-writes/a-memory-game-to-enjoy-this-summer-4n11</link>
      <guid>https://dev.to/abhinav-writes/a-memory-game-to-enjoy-this-summer-4n11</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/june-game-jam-2026-06-03"&gt;June Solstice Game Jam&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;This is summer time, the time of joy, happiness, enjoyment, energy and mostly football. &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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fotdtdosrwhgp5nrmejoi.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fotdtdosrwhgp5nrmejoi.gif" alt="meme" width="360" height="202"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Yeah, the World Cup is here and I love football, so I decided to make a game on it, a memory matching game with a FIFA 2026 theme. This is a game to enjoy a moment of energy and the joy of the World Cup. I tried to add FIFA-based theming and styling. &lt;/p&gt;

&lt;p&gt;There are various elements I tried to add in the game: the legends' jerseys, Argentina's ball, hosting FC logos and many more. &lt;/p&gt;

&lt;p&gt;To elevate the memory game formula, I introduced custom combo multipliers, rich audio triggers, and a real-time global leaderboard. This is just a small project of mine to enjoy the joy of the World Cup using a mini-game.&lt;/p&gt;

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

&lt;p&gt;Here's a video walkthrough of game:&lt;/p&gt;

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

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

&lt;p&gt;Game is open-sourced and all code is available, you can tweak it, add more elements on it and play it.&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/card-match" rel="noopener noreferrer"&gt;
        card-match
      &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;⚽ Card Match — FIFA Memory Game&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;A fast-paced football-themed memory card matching game built with React + Vite, featuring a live global leaderboard powered by Firebase.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Built for the &lt;strong&gt;June Solstice Game Jam&lt;/strong&gt; on DEV Community.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;🎮 Gameplay&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;Flip cards to find matching pairs of FIFA-themed icons — FIFA Cup, Argentina Ball, Golden Boot, and more. Race against the clock and try to clear the board before time runs out.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Rules&lt;/h3&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;You have &lt;strong&gt;60 seconds&lt;/strong&gt; to match all 9 pairs (18 cards)&lt;/li&gt;
&lt;li&gt;Each card flip costs an &lt;strong&gt;attempt point&lt;/strong&gt; on a mismatch (max 10 per pair)&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;match score&lt;/strong&gt; is calculated as: &lt;code&gt;attempts_remaining + 1&lt;/code&gt; per pair&lt;/li&gt;
&lt;li&gt;Your &lt;strong&gt;final score&lt;/strong&gt; is &lt;code&gt;total_match_score × time_remaining&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Combos&lt;/strong&gt; give bonus points for chaining specific matches&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;🛠️ Tech Stack&lt;/h2&gt;

&lt;/div&gt;
&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Layer&lt;/th&gt;
&lt;th&gt;Technology&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Framework&lt;/td&gt;
&lt;td&gt;
&lt;a href="https://react.dev/" rel="nofollow noopener noreferrer"&gt;React 19&lt;/a&gt; + &lt;a href="https://vitejs.dev/" rel="nofollow noopener noreferrer"&gt;Vite 8&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Auth&lt;/td&gt;
&lt;td&gt;
&lt;a href="https://firebase.google.com/docs/auth" rel="nofollow noopener noreferrer"&gt;Firebase Authentication&lt;/a&gt; (Google + Anonymous)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Database&lt;/td&gt;
&lt;td&gt;&lt;a href="https://firebase.google.com/docs/firestore" rel="nofollow noopener noreferrer"&gt;Cloud Firestore&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Animations&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/catdad/canvas-confetti" rel="noopener noreferrer"&gt;canvas-confetti&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Package Manager&lt;/td&gt;
&lt;td&gt;&lt;a href="https://bun.sh/" rel="nofollow noopener noreferrer"&gt;Bun&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Styling&lt;/td&gt;
&lt;td&gt;Vanilla&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;…&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/AbhinavTheDev/card-match" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;You can play the game from here: &lt;a href="https://card-match-liard.vercel.app/" class="crayons-btn crayons-btn--primary" rel="noopener noreferrer"&gt;Play Now&lt;/a&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;p&gt;The application was built from scratch using a modern, lightweight web tech stack focusing on performance, modular design, and most importantly using Antigravity.&lt;/p&gt;

&lt;h3&gt;
  
  
  Technical Stack
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frontend Core:&lt;/strong&gt; &lt;a href="https://react.dev/" rel="noopener noreferrer"&gt;React 19&lt;/a&gt; + &lt;a href="https://vite.dev/" rel="noopener noreferrer"&gt;Vite&lt;/a&gt; for quick scaffolding, fast builds, and Hot Module Replacement (HMR).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Styling:&lt;/strong&gt; Vanilla CSS (custom design system utilizing CSS Custom Properties/Variables for state-dependent themes, glassmorphic card layouts, and transforms for flip animations).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend-as-a-Service:&lt;/strong&gt; &lt;a href="https://firebase.google.com/" rel="noopener noreferrer"&gt;Firebase v12&lt;/a&gt; for authentication (Google Identity Provider + Anonymous sign-in) and real-time database querying (Cloud Firestore).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Effects:&lt;/strong&gt; &lt;code&gt;canvas-confetti&lt;/code&gt; for lightweight confetti animation.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Technical Decisions &amp;amp; Challenges
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Interactive Card Flip:&lt;/strong&gt; Instead of relying on bulkier external visual libraries, we built custom card components with CSS 3D perspective, &lt;code&gt;preserve-3d&lt;/code&gt;, and &lt;code&gt;backface-visibility&lt;/code&gt;. This achieved smooth card flip animations across both mobile and desktop browsers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Leaderboard Optimizations:&lt;/strong&gt; To maintain a fast, clean leaderboard, Firestore records are queried using compound indexes sorting by &lt;code&gt;score&lt;/code&gt; in descending order and limiting responses to the top 10 items.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Adaptive User Experience:&lt;/strong&gt; The app offers a seamless transition between Guest mode and Google Auth. If a user logs in via Google, their high score, profile photo, and display name are automatically synced to Firestore; guest players can enjoy the full gameplay loop immediately without sign-in friction.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Prize Category
&lt;/h2&gt;

&lt;p&gt;For this project, I am submitting to the &lt;strong&gt;Best Google AI Usage&lt;/strong&gt; category. The development of this game was accelerated and optimized by pair-programming with &lt;strong&gt;Antigravity IDE&lt;/strong&gt;, a powerful agentic IDE, powered by Gemini models.&lt;/p&gt;

&lt;h3&gt;
  
  
  How Antigravity helped me in development
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Scaffolding &amp;amp; Architecture:&lt;/strong&gt; Antigravity helped architect the project layout, dividing components into focused, reusable files (such as &lt;code&gt;Card.jsx&lt;/code&gt;, &lt;code&gt;Modal.jsx&lt;/code&gt;, and &lt;code&gt;Login.jsx&lt;/code&gt;) and setting up custom hooks (&lt;code&gt;useConfetti.js&lt;/code&gt;) for visual effects.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Firebase &amp;amp; Security Rules Integration:&lt;/strong&gt; Antigravity generated the clean Firebase service wrapper (&lt;code&gt;firebase.js&lt;/code&gt;), implementing robust asynchronous logic for Google Sign-in Popups, Anonymous logins, and Firestore read/write operations for saving scores.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vanilla CSS Design System:&lt;/strong&gt; Sourcing design guidelines from the frontend design skill, Antigravity guided the implementation of modern CSS elements, introducing glassmorphism UI cards, animated overlays, custom-themed score bars, responsive media query breakpoints, and custom styled webkit scrollbars.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bug Prevention &amp;amp; Optimization:&lt;/strong&gt; The gemini helped me to debug timing loops, handling proper interval cleanups on unmounts, and much more minor bugs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Using Antigravity, I was able to build, style, and wire up a database-driven game in a fraction of the usual development time, showcasing the sheer power of Gemini developer tools.&lt;/p&gt;

&lt;p&gt;Do let me know your experience with game in comments below!&lt;/p&gt;

&lt;p&gt;Thank You For Reading.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>gamechallenge</category>
      <category>gamedev</category>
    </item>
    <item>
      <title>Bigger llm models will no longer be performant</title>
      <dc:creator>Abhinav</dc:creator>
      <pubDate>Tue, 02 Jun 2026 03:00:00 +0000</pubDate>
      <link>https://dev.to/abhinav-writes/bigger-llm-models-will-no-longer-be-performant-4nip</link>
      <guid>https://dev.to/abhinav-writes/bigger-llm-models-will-no-longer-be-performant-4nip</guid>
      <description>&lt;p&gt;Recently, I came across an essay titled "On the Death of Scaling" by Sara Hooker (Co-founder of Adaption Labs). In this essay, Sara explains the shortcomings of the simple path followed by frontier labs to lead the market. She discusses where the notion of "scaling is death" comes from and what to consider next.&lt;/p&gt;

&lt;p&gt;In the last decade, where LLMs are emerging as the ideal path to attaining AI, or what experts call AGI, they have been found to be not so accurate. All LLM-based labs are following one brute force rule of adding more and more weights with more compute to outperform other available models, and up to a certain point, it is helping. Using more compute and data, LLMs are outperforming their predecessors and competitors. But now, the landscape is changing. It has been found that much smaller, latest models (&amp;lt;13B) are now outperforming previous models with enormous parameters. For example, Falcon 180B is easily outperformed by models like Llama 3 8B, Command R 35B, and Gemma 3 27B. Additionally, Aya 23 8B and Aya Expanse 8B have outperformed BLOOM 176B with 94% less weights.&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%2Fd26ix0u9ddvrrhdtuq88.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%2Fd26ix0u9ddvrrhdtuq88.png" alt="image-3" width="799" height="499"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;From the above image of the HuggingFace OpenLLM Leaderboard, it is shown that smaller models are significantly outperforming larger ones, both reaching a performance plateau (as transformers' performance reaches its plateau). Hence, it is proven that a bigger size does not always guarantee better performance.&lt;/p&gt;

&lt;h2&gt;
  
  
  Reason behind such huge number of parameters ?
&lt;/h2&gt;

&lt;p&gt;Surprisingly, almost all earlier LLM models are launching with an increased number of parameters (10x, 100x, etc.), but no one clearly explains the reason behind such a huge number of weights. Do we really need that many weights? Are models only focused on size as a performance metric, bigger size confirms better performance? One of the first widely adopted deep neural network architectures was Inception Net (proposed by Google in 2014), which had only around 23 million weights. But nowadays, a base model like Qwen3-235B-A22B comes with 235 billion parameters.&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%2F5pzy3kl2r3y5w6cwbhk8.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%2F5pzy3kl2r3y5w6cwbhk8.webp" alt="InceptionNet Architecture" width="799" height="230"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;LLM weights began to increase when a strange observation of double descent was noted in LLM model training. Mathematically, after reaching a certain threshold, the model starts to "overfit" on data, and from this point onward, increasing model complexity leads to decreased performance. However, a surprising observation showed that neural networks do not exhibit this phenomenon. These models now have millions of parameters, more than enough to fit even random labels, yet they perform much better on many tasks than smaller models. This behavior remains a black box, with no one able to explain why it occurs mathematically.&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%2F4vpgfl3xg7i45a7onl0d.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%2F4vpgfl3xg7i45a7onl0d.jpg" alt="image-2" width="800" height="359"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Another observation is that after training a neural network, it is found that 95% of the work is done by a small set of weights, while the rest are additional parameters.&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%2F8w08frwlov2udn8a6q04.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%2F8w08frwlov2udn8a6q04.png" alt="image-1" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But now the question arises: why do we need such a large number of additional parameters? Can't we train only these few sets of weights and achieve the same performance? The answer is no. It has been shown that if you want to achieve the same performance as a trained model, you need to train the model again with the same number of weights. It is strange but true. The reason behind this behavior is the inefficient and unoptimized training mechanisms (or architectures) used by researchers. Therefore, those seemingly unnecessary weights become a critical part of the model and the reason for its large size.&lt;/p&gt;

&lt;h2&gt;
  
  
  Deep Neural Networks
&lt;/h2&gt;

&lt;p&gt;Deep Neural Networks, or Deep Learning Networks, are at the heart of all LLM models you are using now. However, they are incredibly inefficient learners. A deep learning network can easily understand common facts but cannot comprehend rare facts in the same way. Essentially, all deep learning networks rely on data, and each data point receives equal learning space, so common facts benefit from abundance while rare facts get minimal space. AI, from its very first principle of mimicking human intelligence, fails to achieve this with LLMs. Humans can easily comprehend rare events, but AI cannot. To address this, researchers have started focusing compute on such events (an expensive process). Yet, as we know, the world is full of uncertainty, and it is impossible to learn every rare event from a static snapshot of the world. This leads to situations like "r in strawberry," illustrating the LLM-based state of AI.&lt;/p&gt;

&lt;h2&gt;
  
  
  We got the problems, but what about solutions?
&lt;/h2&gt;

&lt;p&gt;Some solutions are emerging that are evolving the landscape of LLMs to attain new growth trajectories without being compute-hungry.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  High-quality data can compensate for the compute of larger models. Various studies have shown that if the size of the training dataset can be reduced without impacting performance, training time decreases, meaning less compute is needed. Techniques such as model distillation, chain-of-thought reasoning, increased context length, retrieval-augmented generation, and preference training to align models with human feedback help reduce the need for heavy weights or expensive, prolonged training. These techniques demonstrate improved performance over models without them.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Architecture is a crucial part of AI research. Efforts to adapt new architectures by frontier labs can open up new paradigms of scalability. New model architectures, like Yann LeCun's world models, could be utilized, but this shift in architectural focus comes with the heavy cost of necessary research, the risk of losing market share to competitors, and requires careful experimental approaches (innovative approaches) to market these as effectively as LLMs to users.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Note: While we discussed how less compute can yield good results, it does not mean it reduces the environmental impact of AI. The carbon footprint created by AI compute is not primarily due to training (as it is a one-time and localized process) but rather from the widespread use of AI. As the number of AI users increases, its carbon footprint will also increase. This is an application-level issue, not a research-level issue.&lt;/p&gt;
&lt;/blockquote&gt;

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

&lt;p&gt;Thank you for reading this blog, where I explain my understanding of the Sara Hooker's essay and the event held at Hugging Face ML Club. I aimed to simplify and align the text by adding my viewpoints. If you find any contradictions or incorrect claims in the blog, please let me know. Feedback is greatly appreciated.&lt;/p&gt;

&lt;p&gt;Once Again Thank you !!!&lt;/p&gt;




&lt;p&gt;Resources to refer for further reading:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://papers.ssrn.com/sol3/papers.cfm?abstract_id=5877662" rel="noopener noreferrer"&gt;On the Slow Death of Scaling Essay&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://youtu.be/7knwihgj0fU?si=rA1C-WjIS_BxdjNZ" rel="noopener noreferrer"&gt;On the Slow Death of Scaling Event&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://iopscience.iop.org/article/10.1088/1742-5468/ac3a74/pdf" rel="noopener noreferrer"&gt;Paper on double descent&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>adaption</category>
      <category>openai</category>
    </item>
    <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="254"&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&amp;nbsp; 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="210"&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;&amp;nbsp;&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%2Fraw.githubusercontent.com%2FAbhinavTheDev%2Falgolia-mcp-chat%2FHEAD%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="365"&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="348"&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="799" 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>
  </channel>
</rss>
