<?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: Hitesh Shinde</title>
    <description>The latest articles on DEV Community by Hitesh Shinde (@hitesh1326).</description>
    <link>https://dev.to/hitesh1326</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%2F3813613%2F28797ee8-7a3f-4101-8841-92fe28732996.jpeg</url>
      <title>DEV Community: Hitesh Shinde</title>
      <link>https://dev.to/hitesh1326</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/hitesh1326"/>
    <language>en</language>
    <item>
      <title>I got tired of manually figuring out what AWS CloudFormation infrastructure needed to be promoted</title>
      <dc:creator>Hitesh Shinde</dc:creator>
      <pubDate>Sun, 23 Aug 2026 02:24:04 +0000</pubDate>
      <link>https://dev.to/hitesh1326/i-got-tired-of-manually-figuring-out-what-aws-cloudformation-infrastructure-needed-to-be-promoted-3anf</link>
      <guid>https://dev.to/hitesh1326/i-got-tired-of-manually-figuring-out-what-aws-cloudformation-infrastructure-needed-to-be-promoted-3anf</guid>
      <description>&lt;p&gt;If you work with AWS CloudFormation across multiple environments, you probably know this routine.&lt;/p&gt;

&lt;p&gt;You have Development, Test, and Production AWS accounts.&lt;/p&gt;

&lt;p&gt;Development is moving constantly. Test is usually a little behind. Production is further behind.&lt;/p&gt;

&lt;p&gt;And when you're ready for a release, someone has to figure out:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What exactly changed in Dev?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Which of those changes are already in Test?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is Test running that Prod isn't?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And most importantly:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What actually needs to be promoted?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The frustrating part is that AWS CloudFormation doesn't really answer these questions across environments. The same logical infrastructure can also have completely different stack names in different accounts. So before you can even compare them, you need to know that those stacks represent the same thing.&lt;/p&gt;

&lt;p&gt;That was the problem I wanted to solve.&lt;/p&gt;

&lt;h3&gt;
  
  
  Meet PromoteOps
&lt;/h3&gt;

&lt;p&gt;PromoteOps connects to your multiple AWS accounts and generates a report showing the promotion state of your CloudFormation stacks.&lt;/p&gt;

&lt;p&gt;Instead of manually going through stacks and trying to figure out what's different, you get a clear view of what's current and what's behind.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Everything is current:&lt;/strong&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fy1kk9503bjy292cn1yxh.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%2Fy1kk9503bjy292cn1yxh.png" alt="Everything is current" width="800" height="177"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When something is outdated:&lt;/strong&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6jgg23lxu6g28ifjpfbg.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%2F6jgg23lxu6g28ifjpfbg.png" alt="When outdated" width="800" height="172"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And when you need to understand exactly why a stack is considered outdated, you can inspect the CloudFormation template diff directly.&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%2Fmhp2xg9nlucksw0vpsi3.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%2Fmhp2xg9nlucksw0vpsi3.png" alt="Diff Drawer" width="800" height="176"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So the workflow becomes:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Report → Identify → Diff → Plan → Promote&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  From reporting to promotion
&lt;/h3&gt;

&lt;p&gt;Once I had the ability to identify what needed to move between environments, I wanted to make the promotion itself part of the workflow.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;So I built PromoteOps as an MCP server.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It exposes tools such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;report_stacks&lt;/li&gt;
&lt;li&gt;diff_stack&lt;/li&gt;
&lt;li&gt;plan_stack_promotion&lt;/li&gt;
&lt;li&gt;execute_stack_promotion&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This allows an MCP-compatible AI client to interact with the infrastructure instead of treating the report as a static dashboard. You can ask what's different between environments, inspect a stack's changes, create a promotion plan, review it, and then execute the promotion. But infrastructure changes shouldn't be treated like a simple file operation. So the promotion workflow includes safeguards.&lt;/p&gt;

&lt;p&gt;PromoteOps verifies the target environment hasn't changed since the promotion plan was created and prevents stale plans from being blindly executed.&lt;/p&gt;

&lt;p&gt;The goal isn't to let AI blindly deploy infrastructure.&lt;/p&gt;

&lt;p&gt;It's to give AI a structured and controlled way to &lt;strong&gt;understand what's happening before anything gets promoted.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  The problem in one sentence
&lt;/h3&gt;

&lt;p&gt;PromoteOps answers a simple question that becomes surprisingly difficult with CloudFormation across multiple AWS accounts:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What's ready to move from Dev → Test → Prod?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And once you know the answer, it can help you move it.&lt;/p&gt;

&lt;h3&gt;
  
  
  It's open source
&lt;/h3&gt;

&lt;p&gt;PromoteOps is available on npm and GitHub:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;npm:&lt;/strong&gt; &lt;a href="https://www.npmjs.com/package/promoteops" rel="noopener noreferrer"&gt;https://www.npmjs.com/package/promoteops&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub&lt;/strong&gt;: &lt;a href="https://github.com/Hitesh1326/promoteops" rel="noopener noreferrer"&gt;https://github.com/Hitesh1326/promoteops&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you work with CloudFormation across multiple AWS accounts and this problem sounds familiar, I'd genuinely like to hear how you handle it today.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>I built a VS Code extension that lets you chat with your database - everything runs locally</title>
      <dc:creator>Hitesh Shinde</dc:creator>
      <pubDate>Tue, 10 Mar 2026 00:39:59 +0000</pubDate>
      <link>https://dev.to/hitesh1326/i-built-a-vs-code-extension-that-lets-you-chat-with-your-database-everything-runs-locally-2kio</link>
      <guid>https://dev.to/hitesh1326/i-built-a-vs-code-extension-that-lets-you-chat-with-your-database-everything-runs-locally-2kio</guid>
      <description>&lt;p&gt;I spent a week onboarding into a project with a SQL Server database I'd never seen before. Dozens of stored procedures, no documentation, and the previous dev had left. I kept thinking — why can't I just ask this database what it does?&lt;br&gt;
I couldn't find a tool that solved that specific problem, so I built one.&lt;br&gt;
SchemaSight is a VS Code extension that connects to SQL Server, PostgreSQL, or MySQL, crawls your schema, and lets you ask plain English questions about it. What does this procedure do? What tables are involved in invoicing? Is there row-level security anywhere? It answers from the indexed schema itself — no live query execution, nothing leaves your machine.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How it works under the hood&lt;/strong&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%2Fa6ow0inhwdpl50z5xmni.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%2Fa6ow0inhwdpl50z5xmni.png" alt="system-architecture" width="800" height="785"&gt;&lt;/a&gt;&lt;br&gt;
When you crawl a database, the extension walks every table, view, stored procedure, and function, summarizes each one using your local Ollama model, embeds those summaries with Transformers.js (&lt;code&gt;all-MiniLM-L6-v2&lt;/code&gt;) running entirely in Node.js, and stores everything in LanceDB.&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%2F9uyf1hwvx79xd05ny72l.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%2F9uyf1hwvx79xd05ny72l.png" alt="chat-rag-flow" width="800" height="420"&gt;&lt;/a&gt;&lt;br&gt;
At query time, a QueryClassifier first decides what kind of question you're asking — broad ("what is this database about?"), semantic ("what tables relate to orders?"), or a detail request ("explain this specific procedure"). Broad queries fetch all indexed chunks. Semantic queries run hybrid search — combining vector similarity and full-text search, merged and reranked with LanceDB's built-in RRF reranker. Detail requests resolve the referenced object and inject its full definition straight into the prompt.&lt;br&gt;
There's also a "How this was answered" panel that shows exactly which chunks were retrieved — no black box.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A thing I got wrong early on&lt;/strong&gt;&lt;br&gt;
I tried a two-model setup: a smaller model to handle indexing summarization (faster, cheaper), and a larger one for chat. Seemed sensible.&lt;br&gt;
It wasn't. The smaller model's summaries were just weak enough that the larger chat model couldn't recover from the bad retrieval context. The answers degraded in ways that were hard to debug. I scrapped it and went back to a single model for everything — &lt;code&gt;llama3.1:8b&lt;/code&gt; as the default — with a warning if you pick something lighter. Sometimes the boring solution is the right one.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why local-first&lt;/strong&gt;&lt;br&gt;
A lot of databases SchemaSight is built for — legacy systems, internal tooling, anything with real business logic — you genuinely can't send to a cloud API. Stored procedures often contain sensitive logic and real data shapes. Running through Ollama on your own hardware sidesteps that entirely. No API key, no subscription, no data going anywhere.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Getting started&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Install and &lt;a href="https://ollama.com" rel="noopener noreferrer"&gt;start Ollama&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Install &lt;a href="https://marketplace.visualstudio.com/items?itemName=HiteshShinde.schemasight" rel="noopener noreferrer"&gt;SchemaSight&lt;/a&gt; from the VS Code Marketplace&lt;/li&gt;
&lt;li&gt;Add a connection and follow the onboarding flow — it walks you through Ollama verification, model pull, and schema crawl in one place&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;One honest caveat: initial indexing summarizes every schema object using your local LLM. On my M5 MacBook Pro with ~95 objects it takes 15–20 minutes. It's a one-time cost though — you only re-index when your schema changes or you swap models.&lt;/p&gt;

&lt;p&gt;The code is on &lt;a href="https://github.com/Hitesh1326/schemasight" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; under MIT. Happy to hear feedback or answer questions in the comments.&lt;/p&gt;

</description>
      <category>vscode</category>
      <category>opensource</category>
      <category>showdev</category>
      <category>rag</category>
    </item>
  </channel>
</rss>
