<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Azure Authority]]></title><description><![CDATA[Siddhesh Prabhugaonkar is a Microsoft Certified Trainer, instructor at Pluralsight and a cloud architect. He shares educational content on Microsoft .NET, Azure]]></description><link>https://azureauthority.in</link><image><url>https://cdn.hashnode.com/res/hashnode/image/upload/v1747225450636/53d0ef5b-c58c-4796-aac3-a19e0ec84a06.png</url><title>Azure Authority</title><link>https://azureauthority.in</link></image><generator>RSS for Node</generator><lastBuildDate>Wed, 19 Aug 2026 21:30:49 GMT</lastBuildDate><atom:link href="https://azureauthority.in/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Prompt, Context, Harness, Loop: The Four Layers of Engineering Reliable AI Agents]]></title><description><![CDATA[Two years ago, the advice was simple: "Just write a better prompt." Whole job titles appeared overnight. Prompt libraries were traded like baseball cards. And for a while, it worked — because we were ]]></description><link>https://azureauthority.in/prompt-context-harness-loop-the-four-layers-of-engineering-reliable-ai-agents</link><guid isPermaLink="true">https://azureauthority.in/prompt-context-harness-loop-the-four-layers-of-engineering-reliable-ai-agents</guid><dc:creator><![CDATA[Siddhesh Prabhugaonkar]]></dc:creator><pubDate>Wed, 29 Jul 2026 06:27:18 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/651bff05e4455a8ac9ec7688/2daf6f7d-5633-4de9-8fe3-f115be1e6211.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Two years ago, the advice was simple: <em>"Just write a better prompt."</em> Whole job titles appeared overnight. Prompt libraries were traded like baseball cards. And for a while, it worked — because we were mostly asking a model to produce a single chunk of text in a single shot.</p>
<p>That era is over.</p>
<p>The moment you ask a model to <em>do things</em> — call tools, read files, browse, run code, remember, retry, and keep going for hundreds of steps — the prompt becomes the smallest part of the problem. As Andrej Karpathy put it, the LLM is a new kind of CPU and its context window is the RAM. The prompt is just one instruction. What actually determines success is the entire operating system you build <strong>around</strong> the model.</p>
<p>I've spent the last two years helping enterprise teams move from clever prompts to production agents. The pattern is always the same: teams that treat this as <em>four distinct engineering disciplines</em> ship reliable agents. Teams that keep tweaking prompts stay stuck in demo purgatory.</p>
<p>Those four disciplines are <strong>prompt engineering</strong>, <strong>context engineering</strong>, <strong>harness engineering</strong>, and <strong>loop engineering</strong> — four concentric rings, each wrapping the one inside it.</p>
<blockquote>
<p><strong>Building or scaling agentic AI in your org?</strong> I run hands-on enablement workshops covering exactly this stack — from context design to production harnesses. <a href="https://topmate.io/siddheshp">Book a discovery call →</a></p>
</blockquote>
<hr />
<h2>The Big Picture: Four Concentric Rings</h2>
<p>Each layer wraps a wider concern. The prompt is the innermost instruction. Context is everything the model sees before it responds. The harness is the software scaffolding that lets the model act. The loop is the control flow that decides when to keep going and when to stop.</p>
<img src="https://cdn.hashnode.com/uploads/covers/651bff05e4455a8ac9ec7688/a40744c8-4c8b-4522-af1e-c69f9b558707.png" alt="" style="display:block;margin:0 auto" />

<p>Here's the one-line definition of each, and who owns it:</p>
<table>
<thead>
<tr>
<th>Layer</th>
<th>Question it answers</th>
<th>Failure if you skip it</th>
</tr>
</thead>
<tbody><tr>
<td><strong>Prompt</strong></td>
<td><em>What am I asking the model to do, right now?</em></td>
<td>Vague, inconsistent, unsteerable output</td>
</tr>
<tr>
<td><strong>Context</strong></td>
<td><em>What does the model need to see to plausibly succeed?</em></td>
<td>Hallucination, "it forgot", garbage-in-garbage-out</td>
</tr>
<tr>
<td><strong>Harness</strong></td>
<td><em>What can the model actually do, and how safely?</em></td>
<td>Model can reason but can't act; unsafe actions</td>
</tr>
<tr>
<td><strong>Loop</strong></td>
<td><em>When does it act, retry, escalate, or stop?</em></td>
<td>Infinite loops, runaway cost, compounding errors</td>
</tr>
</tbody></table>
<p>Let's walk each ring from the inside out.</p>
<hr />
<h2>Layer 1: Prompt Engineering — The Instruction</h2>
<p>Prompt engineering is the craft of writing the instruction the model executes: the task description, the role, the constraints, the examples, and the output format.</p>
<p>It is <strong>necessary but no longer sufficient</strong>. It still matters enormously — a badly worded system prompt will sink even a perfect harness — but it is now one input among many.</p>
<img src="https://cdn.hashnode.com/uploads/covers/651bff05e4455a8ac9ec7688/1f3b73f9-0029-4ef3-8166-fd8b01d3b9ef.png" alt="" style="display:block;margin:0 auto" />

<h3>What still earns its keep</h3>
<ul>
<li><p><strong>Explicit role and objective.</strong> "You are a refund-processing agent. Your goal is to resolve the ticket or escalate — never to chit-chat."</p>
</li>
<li><p><strong>Constraints as guardrails.</strong> State what <em>not</em> to do as clearly as what to do.</p>
</li>
<li><p><strong>Few-shot examples</strong> for format and tone — one good example beats a paragraph of description.</p>
</li>
<li><p><strong>Structured output contracts</strong> (JSON schema, XML tags) so downstream code can parse reliably.</p>
</li>
</ul>
<h3>Where it hits a wall</h3>
<p>The prompt is <em>static</em>. It can't know today's inventory, this user's history, or the result of the last tool call. The second your task depends on live, changing information, no amount of prompt polishing helps. That's the handoff to context engineering.</p>
<blockquote>
<p><strong>Rule of thumb:</strong> If you're on your 15th prompt revision and the agent still "forgets" or "makes things up," you don't have a prompt problem. You have a context problem.</p>
</blockquote>
<hr />
<h2>Layer 2: Context Engineering — What the Model Sees</h2>
<p>Shopify's Tobi Lütke defined it best: context engineering is <em>"the art of providing all the context for the task to be plausibly solvable by the LLM."</em> Karpathy amplified it. The field agreed almost overnight, because it named the thing that actually breaks agents.</p>
<p><strong>Most agent failures are not model failures anymore. They are context failures.</strong></p>
<p>Context is <em>everything</em> the model sees before it generates a token — not just your prompt:</p>
<img src="https://cdn.hashnode.com/uploads/covers/651bff05e4455a8ac9ec7688/4d2648b1-5a16-4c9c-a674-c518c30c5ec0.png" alt="" style="display:block;margin:0 auto" />

<p>The context window is finite RAM. The discipline is deciding <em>what earns a place in it at each step</em>. The LangChain team crystallised four strategies — a vocabulary worth memorising:</p>
<img src="https://cdn.hashnode.com/uploads/covers/651bff05e4455a8ac9ec7688/4c749b7a-0543-47cb-9be0-0a6aefbcdb98.png" alt="" style="display:block;margin:0 auto" />

<table>
<thead>
<tr>
<th>Strategy</th>
<th>What it does</th>
<th>Real-world example</th>
</tr>
</thead>
<tbody><tr>
<td><strong>Write</strong></td>
<td>Persist info <em>outside</em> the window so it survives truncation</td>
<td>Anthropic's researcher saves its plan to memory before the window fills; <code>CLAUDE.md</code> files</td>
</tr>
<tr>
<td><strong>Select</strong></td>
<td>Retrieve only the relevant facts, tools, or memories</td>
<td>RAG over docs; semantic search over a large tool catalogue</td>
</tr>
<tr>
<td><strong>Compress</strong></td>
<td>Summarise or trim to retain only necessary tokens</td>
<td>Claude Code's "auto-compact" at 95% window usage</td>
</tr>
<tr>
<td><strong>Isolate</strong></td>
<td>Partition context so pieces don't pollute each other</td>
<td>Sub-agents with separate windows; code sandboxes holding heavy objects</td>
</tr>
</tbody></table>
<h3>The failure modes you're preventing</h3>
<p>Drew Breunig catalogued how long contexts rot, and the names are worth knowing because you <em>will</em> see all four:</p>
<ul>
<li><p><strong>Context Poisoning</strong> — a hallucination gets written into context and is then treated as fact.</p>
</li>
<li><p><strong>Context Distraction</strong> — so much context that it drowns out the model's own training.</p>
</li>
<li><p><strong>Context Confusion</strong> — irrelevant content bleeds into and warps the answer.</p>
</li>
<li><p><strong>Context Clash</strong> — two parts of the context contradict each other.</p>
</li>
</ul>
<p>Context engineering is where most of the real work lives today. But even a perfectly-packed context window is inert if the model can't <em>do</em> anything with it. That's the harness.</p>
<hr />
<h2>Layer 3: Harness Engineering — What the Model Can Do</h2>
<p>Here's the term teams most often miss. The <strong>harness</strong> is the software scaffolding that turns a passive text predictor into an agent that acts on the world. Claude Code, Cursor, and Copilot are, at their core, harnesses. The model is the engine; the harness is the entire car around it.</p>
<p>A harness owns: the <strong>tools</strong> and their schemas, the <strong>agent-computer interface (ACI)</strong>, the <strong>execution sandbox</strong>, the <strong>guardrails</strong>, the <strong>observability</strong>, and the plumbing that feeds results back into context.</p>
<img src="https://cdn.hashnode.com/uploads/covers/651bff05e4455a8ac9ec7688/72d57504-9788-42ad-bcdb-38783146b17e.png" alt="" style="display:block;margin:0 auto" />

<h3>The agent-computer interface is where agents live or die</h3>
<p>Anthropic's team reported that while building their SWE-bench agent, they spent <strong>more time optimising tools than the overall prompt.</strong> That single sentence should reframe how you budget your effort. Their guidance for a good ACI:</p>
<ul>
<li><p><strong>Treat tool definitions like docstrings for a junior engineer.</strong> Include example usage, edge cases, and clear boundaries between similar tools.</p>
</li>
<li><p><strong>Poka-yoke your tools</strong> — design arguments so mistakes are hard to make. (They switched to <em>absolute</em> file paths after the model kept tripping on relative ones once it changed directories.)</p>
</li>
<li><p><strong>Keep formats close to what the model has seen in training.</strong> Writing code inside JSON forces awkward escaping; markdown is friendlier.</p>
</li>
<li><p><strong>Give the model room to think</strong> before it must commit to a tool call.</p>
</li>
</ul>
<h3>The harness also enforces safety</h3>
<p>This is the layer where you decide what the agent is <em>allowed</em> to do: which tools require human approval, what the sandbox can touch, what gets logged. Autonomy without a harness that enforces boundaries is how you get an agent that <code>rm -rf</code>s a production directory because it "seemed like the next step."</p>
<blockquote>
<p><strong>Rule of thumb:</strong> If your agent can reason brilliantly but keeps failing on execution — malformed tool calls, wrong paths, unsafe actions — invest in the harness, not the prompt.</p>
</blockquote>
<p>A great harness with a naive control flow still misbehaves: it loops forever, gives up too early, or repeats the same failing action. That's the outermost ring — the loop.</p>
<hr />
<h2>Layer 4: Loop Engineering — When to Act, Retry, and Stop</h2>
<p>An agent is, at its heart, <em>an LLM using tools in a loop.</em> Loop engineering is the design of that control flow: the iteration cycle, the stopping conditions, error recovery, reflection, and — when needed — delegation to sub-agents.</p>
<p>The base loop is the classic sense-plan-act-reflect cycle:</p>
<img src="https://cdn.hashnode.com/uploads/covers/651bff05e4455a8ac9ec7688/6ef6705b-fd6c-4d42-8f74-1eab7c2b9082.png" alt="" style="display:block;margin:0 auto" />

<h3>The decisions that make or break a loop</h3>
<ul>
<li><p><strong>Stopping conditions.</strong> Task complete? Max iterations hit? Budget exhausted? Confidence too low? Without hard stops, you get infinite loops and runaway bills.</p>
</li>
<li><p><strong>Error recovery.</strong> When a tool fails, does the agent retry, try a different approach, or escalate to a human? Blind retries of the same failing action are a top production pathology.</p>
</li>
<li><p><strong>Human-in-the-loop checkpoints.</strong> Pause for approval before irreversible actions (payments, deletes, sends).</p>
</li>
<li><p><strong>Reflection.</strong> Let the agent critique its own output before continuing — the <em>evaluator-optimizer</em> pattern, where one call generates and another critiques in a loop.</p>
</li>
</ul>
<h3>Loop topologies scale up</h3>
<p>For hard problems, a single loop becomes a <em>system</em> of loops. Anthropic's building blocks map cleanly onto loop-engineering choices:</p>
<img src="https://cdn.hashnode.com/uploads/covers/651bff05e4455a8ac9ec7688/9d83cc1b-f134-45fe-bdce-f87cc69cdca5.png" alt="" style="display:block;margin:0 auto" />

<table>
<thead>
<tr>
<th>Loop pattern</th>
<th>When to use it</th>
</tr>
</thead>
<tbody><tr>
<td><strong>Single loop</strong></td>
<td>Bounded tasks with clear completion (fix a bug, extract fields)</td>
</tr>
<tr>
<td><strong>Evaluator-optimizer</strong></td>
<td>Clear quality criteria + iterative refinement pays off (translation, drafting)</td>
</tr>
<tr>
<td><strong>Orchestrator-workers</strong></td>
<td>Subtasks can't be predicted up front (multi-file code changes, research)</td>
</tr>
<tr>
<td><strong>Parallel / voting</strong></td>
<td>Speed via independent subtasks, or confidence via multiple attempts</td>
</tr>
</tbody></table>
<p>Note the deep connection back to Layer 2: isolating context across sub-agents is <em>both</em> a context strategy and a loop topology. The rings are concentric, not independent — decisions ripple across them.</p>
<blockquote>
<p><strong>The cost warning nobody mentions early enough:</strong> multi-agent loops can burn <strong>15× more tokens</strong> than a single chat turn (Anthropic's own figure). Loop engineering is as much about economics as correctness.</p>
</blockquote>
<hr />
<h2>Putting It Together: How the Four Layers Interact</h2>
<p>The layers aren't a checklist you complete once — they're a system that runs on <em>every step</em> of an agent's trajectory. One full turn looks like this:</p>
<img src="https://cdn.hashnode.com/uploads/covers/651bff05e4455a8ac9ec7688/7620b44e-5962-4b2b-b1b0-df9f5779d58f.png" alt="" style="display:block;margin:0 auto" />

<p>Read it top to bottom and the division of labour is obvious:</p>
<ul>
<li><p><strong>Loop</strong> decides <em>whether</em> to run another step.</p>
</li>
<li><p><strong>Context</strong> decides <em>what the model sees</em> this step.</p>
</li>
<li><p><strong>Prompt</strong> decides <em>what we're asking</em> this step.</p>
</li>
<li><p><strong>Harness</strong> decides <em>what the model can do</em> and <em>how safely</em>.</p>
</li>
</ul>
<p>Break any one ring and the whole agent degrades — usually in a way that <em>looks</em> like a model problem but isn't.</p>
<hr />
<h2>A Maturity Model: Where Is Your Team?</h2>
<p>Use this to locate yourself honestly. Most enterprise teams I meet are at Level 1 or 2 and think their problem is "we need a better model."</p>
<table>
<thead>
<tr>
<th>Level</th>
<th>Name</th>
<th>What it looks like</th>
<th>Ceiling</th>
</tr>
</thead>
<tbody><tr>
<td><strong>0</strong></td>
<td>Prompt tinkering</td>
<td>Copy-pasting prompts into a chat UI</td>
<td>No automation, no reliability</td>
</tr>
<tr>
<td><strong>1</strong></td>
<td>Prompt + RAG</td>
<td>Templated prompts, static retrieval</td>
<td>"It forgets", brittle to edge cases</td>
</tr>
<tr>
<td><strong>2</strong></td>
<td>Context-aware</td>
<td>Dynamic context assembly, memory, compression</td>
<td>Can't take actions safely</td>
</tr>
<tr>
<td><strong>3</strong></td>
<td>Harnessed</td>
<td>Real tools, sandbox, guardrails, tracing</td>
<td>Loops misbehave; cost surprises</td>
</tr>
<tr>
<td><strong>4</strong></td>
<td>Loop-engineered</td>
<td>Stop conditions, recovery, HITL, sub-agents</td>
<td>Production-grade, observable, economical</td>
</tr>
</tbody></table>
<p>The jump from Level 1 to Level 4 is not "a smarter model." It's four engineering disciplines applied deliberately.</p>
<hr />
<h2>Practical Takeaways</h2>
<ol>
<li><p><strong>Diagnose the right layer.</strong> "Forgot / hallucinated" → context. "Reasoned well, executed badly" → harness. "Won't stop / loops / too expensive" → loop. "Inconsistent tone or format" → prompt. Fixing the wrong layer is why teams spin.</p>
</li>
<li><p><strong>Budget effort like the pros do.</strong> Anthropic spent more time on tools than prompts. Your instinct to keep polishing the prompt is almost always misallocated effort past a certain point.</p>
</li>
<li><p><strong>Instrument before you optimise.</strong> You cannot context- or loop-engineer what you can't see. Tracing and token accounting come <em>first</em>.</p>
</li>
<li><p><strong>Add complexity only when it earns its place.</strong> Start with the simplest thing — a single well-scoped LLM call — and climb the rings only when the task demonstrably needs it. Multi-agent is powerful and expensive; reach for it last.</p>
</li>
<li><p><strong>Treat context as a system, not a string.</strong> It's dynamic output assembled per step — the right information and tools, in the right format, at the right time.</p>
</li>
</ol>
<hr />
<h2>Closing Thought</h2>
<p>"Prompt engineering" was never wrong — it was just too small a word for the job. Building a reliable agent is an exercise in building a small operating system around a model: an instruction (<strong>prompt</strong>), working memory (<strong>context</strong>), a body that can act (<strong>harness</strong>), and a nervous system that decides when to keep going (<strong>loop</strong>).</p>
<p>Master all four, in order, and you stop shipping demos and start shipping agents.</p>
<hr />
<p><em>Found this useful? I write regularly on enterprise agentic AI, cloud architecture, and the engineering behind production LLM systems. Follow along, and if you're building this in-house,</em> <a href="https://topmate.io/siddheshp"><em>let's talk →</em></a></p>
]]></content:encoded></item><item><title><![CDATA[AI-DLC: The AI-Driven Development Life Cycle That Replaces Sprints With Bolts]]></title><description><![CDATA[Author: Siddhesh Prabhugaonkar — Enterprise AI & Cloud Advisor
For twenty years we have shipped software the same way: sprints, standups, story points, retros. Then generative AI arrived and we mostly]]></description><link>https://azureauthority.in/ai-dlc-the-ai-driven-development-life-cycle-that-replaces-sprints-with-bolts</link><guid isPermaLink="true">https://azureauthority.in/ai-dlc-the-ai-driven-development-life-cycle-that-replaces-sprints-with-bolts</guid><category><![CDATA[ai-dlc]]></category><category><![CDATA[generative ai]]></category><category><![CDATA[software development]]></category><category><![CDATA[aidlc]]></category><category><![CDATA[SDLC]]></category><category><![CDATA[AWS]]></category><category><![CDATA[Kiro]]></category><dc:creator><![CDATA[Siddhesh Prabhugaonkar]]></dc:creator><pubDate>Sun, 26 Jul 2026 10:43:32 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/651bff05e4455a8ac9ec7688/59aba4c2-7a97-4b42-9059-2ff8e685f2ac.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>Author: Siddhesh Prabhugaonkar — Enterprise AI &amp; Cloud Advisor</em></p>
<p>For twenty years we have shipped software the same way: sprints, standups, story points, retros. Then generative AI arrived and we mostly bolted it onto the side. Copilot in the IDE. A chatbot in Jira. An autonomous coding agent in a sandbox. Productivity moved. The lifecycle did not.</p>
<p>In July 2025, AWS published a piece — and a companion white paper — arguing that this is the wrong game. The article is titled <a href="https://aws.amazon.com/blogs/devops/ai-driven-development-life-cycle"><em>"AI-Driven Development Life Cycle: Reimagining Software Engineering"</em></a> and it introduces <strong>AI-DLC</strong>, a methodology that treats AI not as an assistant but as the <em>primary driver</em> of the development lifecycle, with humans in the loop as validators and decision-makers.</p>
<p>This post unpacks what AI-DLC is, how the three phases actually work, why <em>bolts</em> replace <em>sprints</em>, and where I think it fits — and doesn't fit — in real enterprises.</p>
<blockquote>
<p><strong>Rolling out AI in your engineering org and unsure whether to double-down on Copilot, adopt Kiro/AI-DLC, or wait?</strong> I run enablement workshops for engineering leaders on exactly this question. <a href="https://topmate.io/siddheshp">Book a discovery call →</a></p>
</blockquote>
<hr />
<h2>The problem AI-DLC is trying to solve</h2>
<p>Today, most organisations use AI in software development through one of two patterns:</p>
<table>
<thead>
<tr>
<th>Pattern</th>
<th>What it looks like</th>
<th>The ceiling</th>
</tr>
</thead>
<tbody><tr>
<td><strong>AI-assisted development</strong></td>
<td>Copilot completions, AI-written tests, doc generation, chat-in-IDE</td>
<td>AI enhances individual tasks, but the SDLC itself is unchanged. Product owners still write JIRAs by hand, architects still draw diagrams in Miro, standups still take 30 minutes.</td>
</tr>
<tr>
<td><strong>AI-autonomous development</strong></td>
<td>"Build me a to-do app" style agents that generate an entire codebase from a one-line prompt</td>
<td>Impressive demos, hallucinated architectures. Loses fidelity to actual business intent. Non-deterministic. Impossible to govern at enterprise scale.</td>
</tr>
</tbody></table>
<p>AWS's argument is that both patterns leave enormous productivity on the table because our existing SDLC is <em>designed for human-driven, long-running processes</em>. Product owners, developers and architects spend most of their week on non-core activities — planning meetings, refinement, estimation, ceremonies, status updates. Retrofitting AI as an "assistant" inside that structure reinforces the very inefficiencies we should be tearing down.</p>
<img src="https://cdn.hashnode.com/uploads/covers/651bff05e4455a8ac9ec7688/f975b967-b7da-489b-b0e9-9fbb42865577.png" alt="" style="display:block;margin:0 auto" />

<p>AI-DLC positions itself as the third option — AI runs the workflow, humans steer it.</p>
<hr />
<h2>What AI-DLC actually is</h2>
<p>AI-DLC rests on two dimensions that operate simultaneously through every phase of the lifecycle:</p>
<h3>1. AI-powered execution with human oversight</h3>
<p>AI systematically creates detailed work plans, actively seeks clarification, and defers <em>critical</em> decisions to humans. The premise: only humans possess contextual understanding of business requirements, regulatory context, brand tone, security posture and organisational politics. AI does the mechanical lifting; humans make the calls.</p>
<h3>2. Dynamic team collaboration</h3>
<p>Because AI handles the routine plumbing, product managers, architects and engineers stop working in silos. They converge in high-bandwidth <em>mob</em> sessions to answer AI's clarifying questions, resolve trade-offs, and unlock next steps in real time. The centre of gravity shifts from asynchronous ticket-passing to synchronous decision-making.</p>
<h3>The mental model</h3>
<p>Every AI-DLC activity — writing a requirement, generating an architecture, provisioning infrastructure — follows the same four-step loop:</p>
<img src="https://cdn.hashnode.com/uploads/covers/651bff05e4455a8ac9ec7688/a903fdbd-6567-4810-a3a9-d73691c21a9b.png" alt="" style="display:block;margin:0 auto" />

<p>Two things make this different from just "using Copilot well":</p>
<ul>
<li><p><strong>AI initiates the workflow.</strong> It is not waiting for you to open a ticket and type a prompt. Given a business intent, AI proposes the next unit of work.</p>
</li>
<li><p><strong>Context is persisted to the repo.</strong> Plans, requirements, design decisions and architectural rationale are stored as artifacts — not in someone's head or a Slack thread. Every subsequent activity starts with richer context than the last.</p>
</li>
</ul>
<hr />
<h2>The three phases</h2>
<p>AI-DLC compresses the entire lifecycle into three phases. Each phase builds context that flows into the next.</p>
<img src="https://cdn.hashnode.com/uploads/covers/651bff05e4455a8ac9ec7688/493dc053-c2b3-4dfc-99eb-5fdc4be97a73.png" alt="" style="display:block;margin:0 auto" />

<h3>Phase 1 — Inception</h3>
<p>AI transforms raw business intent into detailed requirements, user stories and <strong>units of work</strong> through a ritual called <strong>Mob Elaboration</strong>. The whole team — product, engineering, design, sometimes even legal or compliance — sits in one room (or one Zoom) and validates AI's proposals in real time. There is no back-and-forth over three sprints while a BA "writes up the story". The story is drafted, questioned, refined and accepted in the same session.</p>
<h3>Phase 2 — Construction</h3>
<p>Using the validated context from Inception, AI proposes a logical architecture, domain model, code and tests through <strong>Mob Construction</strong>. Engineers focus their expensive attention on the choices that actually matter: is a saga the right pattern here? Do we need eventual consistency in this bounded context? Which decisions lock us in and which are reversible? AI writes the mechanical code; the humans in the mob resolve the design trade-offs.</p>
<h3>Phase 3 — Operations</h3>
<p>AI applies the accumulated context to manage infrastructure as code, deployments, monitoring and incident response. Humans oversee production changes and hold the pager. This is essentially platform engineering with an AI operator that already knows the system it is running because <em>it helped design and build it</em>.</p>
<p>The compounding effect is important: the more phases AI has run, the richer its persisted context, the better its next suggestion. Context is the moat.</p>
<hr />
<h2>The new vocabulary: bolts, units, mobs</h2>
<p>AI-DLC deliberately abandons Agile/Scrum terminology because the old words drag old behaviours with them. If you call it a sprint, people will unconsciously plan it for two weeks. If you call it an epic, someone will demand a T-shirt size estimate.</p>
<table>
<thead>
<tr>
<th>Traditional Agile</th>
<th>AI-DLC</th>
<th>Why the change</th>
</tr>
</thead>
<tbody><tr>
<td><strong>Sprint</strong> (2–4 weeks)</td>
<td><strong>Bolt</strong> (hours to days)</td>
<td>Cycles are radically shorter — AI generates artifacts in minutes, so waiting two weeks to review them is malpractice</td>
</tr>
<tr>
<td><strong>Epic</strong></td>
<td><strong>Unit of Work</strong></td>
<td>An epic implies a fixed scope estimated up-front; a unit is scoped just-in-time by the mob</td>
</tr>
<tr>
<td><strong>Story refinement</strong> (async, days)</td>
<td><strong>Mob Elaboration</strong> (sync, hours)</td>
<td>Whole team present, AI drives, decisions in-session</td>
</tr>
<tr>
<td><strong>Sprint planning</strong></td>
<td><em>(mostly eliminated)</em></td>
<td>AI proposes the plan; the mob validates it in minutes</td>
</tr>
<tr>
<td><strong>Standup</strong></td>
<td><em>(mostly eliminated)</em></td>
<td>Persistent AI context replaces status updates</td>
</tr>
<tr>
<td><strong>Backlog grooming</strong></td>
<td><em>(eliminated)</em></td>
<td>Backlog is generated on demand from business intent</td>
</tr>
</tbody></table>
<p>Visually, the tempo change over the same ~4-week window looks like this:</p>
<img src="https://cdn.hashnode.com/uploads/covers/651bff05e4455a8ac9ec7688/be85fca9-0d12-4291-a461-d698ea49934c.png" alt="" style="display:block;margin:0 auto" />

<p>Each bolt closes a specific unit of work — a validated requirement, a working service, a deployed change. The team is <em>always</em> shipping something.</p>
<hr />
<h2>The team topology shifts too</h2>
<p>In traditional scrum, roles are strongly siloed: PO writes stories, dev implements, QA tests, SRE deploys. Handoffs create latency and lose context. In AI-DLC, the mob is the unit of production and AI is the connective tissue.</p>
<img src="https://cdn.hashnode.com/uploads/covers/651bff05e4455a8ac9ec7688/0474146a-28ae-49f6-ab50-bd83f381f243.png" alt="" style="display:block;margin:0 auto" />

<p>The interesting knock-on effect: <strong>role boundaries blur but decision authority sharpens.</strong> Everyone in the mob can propose. The AI drafts. But the human owner of a domain — security for security decisions, the architect for tech-stack decisions, the PO for scope decisions — still calls the shot. AI-DLC does not abolish accountability; it moves it forward and makes it explicit in the moment.</p>
<hr />
<h2>Claimed benefits — and the honest read</h2>
<p>AWS lists five benefits. Here they are, with my practitioner take next to each.</p>
<table>
<thead>
<tr>
<th>Benefit</th>
<th>What AWS claims</th>
<th>Honest read</th>
</tr>
</thead>
<tbody><tr>
<td><strong>Velocity</strong></td>
<td>Hours/days for work that took weeks</td>
<td>Real for greenfield and well-scoped changes. Legacy modernisation still bottlenecks on humans understanding the <em>why</em> of the old code.</td>
</tr>
<tr>
<td><strong>Innovation</strong></td>
<td>Freed-up time for creative exploration</td>
<td>Only if leadership actively protects that time. Otherwise it gets absorbed into "more tickets, faster".</td>
</tr>
<tr>
<td><strong>Quality</strong></td>
<td>Continuous clarification + org-specific standards + AI-generated test suites</td>
<td>The clarification loop is genuinely the biggest quality lever here. AI-generated tests are useful but need human-designed acceptance criteria.</td>
</tr>
<tr>
<td><strong>Market Responsiveness</strong></td>
<td>Faster feedback cycles</td>
<td>True if your deployment pipeline can keep up. AI-DLC upstream + fortnightly release trains downstream = wasted potential.</td>
</tr>
<tr>
<td><strong>Developer Experience</strong></td>
<td>Less grunt work, more problem-solving</td>
<td>For senior engineers, yes. For juniors, there is a real risk of skill atrophy — see below.</td>
</tr>
</tbody></table>
<h3>Where I would be cautious</h3>
<p>Two concerns I would raise in any adoption conversation:</p>
<ul>
<li><p><strong>The juniors problem.</strong> If AI drafts requirements, architecture and code, junior engineers lose the reps that used to build their judgement. AI-DLC works best on teams that already have strong senior architects and engineers in the mob. Green teams will ship faster but learn slower.</p>
</li>
<li><p><strong>Context lock-in.</strong> AI-DLC's power comes from persistent context in the repo. That context becomes a critical asset — and if it lives inside a vendor's proprietary format (Amazon Q rules, Kiro workflows), you have a new flavour of lock-in that is harder to see than a traditional cloud dependency.</p>
</li>
</ul>
<p>Neither is a deal-breaker. Both are worth planning for.</p>
<hr />
<h2>Where AI-DLC fits with what you already run</h2>
<p>You do not need to burn down Scrum to try AI-DLC. A pragmatic staged adoption:</p>
<img src="https://cdn.hashnode.com/uploads/covers/651bff05e4455a8ac9ec7688/e025b648-d0a7-44d2-896f-433cfc9844b1.png" alt="" style="display:block;margin:0 auto" />

<p>Most enterprises I work with are somewhere between Stage 1 and Stage 2. The single highest-leverage move is <strong>Stage 2 — introducing Mob Elaboration for one new product line or platform capability.</strong> It requires no toolchain change, tests the cultural readiness for high-bandwidth collaboration, and produces artifacts (well-written requirements, persisted context) that pay off even if you never adopt the rest.</p>
<hr />
<h2>Getting started</h2>
<p>AWS's suggested on-ramps:</p>
<ol>
<li><p><strong>Read the</strong> <a href="https://aws.amazon.com/blogs/devops/ai-driven-development-life-cycle"><strong>AI-DLC white paper</strong></a> and share it with your engineering leadership team.</p>
</li>
<li><p><strong>Explore tooling:</strong> Amazon Q Developer <em>rules</em> and <em>Kiro</em> custom workflows are AWS's preferred vehicles to codify AI-DLC patterns. If you are on Microsoft's stack, the equivalent building blocks are GitHub Copilot custom instructions, agent modes, and spec-driven workflows — the methodology is portable even if the branding is not.</p>
</li>
<li><p><strong>Pilot on one team, one product line.</strong> Pick a greenfield or well-understood domain. Do not start with your monolithic core banking platform.</p>
</li>
<li><p><strong>Measure the right things.</strong> Not lines of code or PR count — measure time-from-intent-to-production, defect escape rate, and mob participant satisfaction.</p>
</li>
</ol>
<hr />
<h2>The bottom line</h2>
<p>AI-DLC is the first serious attempt I have seen to redesign the software lifecycle <em>around</em> AI rather than <em>for</em> AI. The vocabulary is deliberately provocative — bolts, mobs, units of work — because the authors understand that language shapes behaviour, and Scrum's language quietly enforces Scrum's tempo.</p>
<p>You do not have to buy every claim. You should probably not rip out your Jira boards tomorrow morning. But if you are an engineering leader who has been quietly wondering why your Copilot rollout produced happier developers and roughly the same delivery cadence, AI-DLC is pointing at the answer: the tool changed, the operating model did not.</p>
<p>Fix the operating model.</p>
<hr />
<p><em>If you found this useful, I write regularly on enterprise AI, agentic architectures, and the productivity paradox of generative AI in large organisations. My other recent posts:</em></p>
<ul>
<li><p><a href="https://azureauthority.in/ai-productivity-paradox-botsitting-botshitting"><em>The AI Productivity Paradox: Why 87% of Workers Use AI, But Only 13% of Companies See Real Gains</em></a></p>
</li>
<li><p><a href="https://azureauthority.in/ai-agents-multi-agents-llm-council-enterprise-guide"><em>AI Agents, Multi-Agent Systems &amp; LLM Council: A Practitioner's Guide to Enterprise Agentic AI</em></a></p>
</li>
</ul>
<p><strong>Want to discuss AI-DLC adoption or a broader engineering AI strategy for your organisation?</strong> <a href="https://topmate.io/siddheshp"><strong>Book a discovery call →</strong></a></p>
<hr />
<h3>References</h3>
<ul>
<li><p>AWS DevOps Blog — <a href="https://aws.amazon.com/blogs/devops/ai-driven-development-life-cycle"><em>AI-Driven Development Life Cycle: Reimagining Software Engineering</em></a> (Raja SP, 31 July 2025)</p>
</li>
<li><p><a href="https://aws.amazon.com/q/developer/">Amazon Q Developer</a></p>
</li>
<li><p><a href="https://kiro.dev/">Kiro — spec-driven AI IDE from AWS</a></p>
</li>
</ul>
<hr />
<h2>About the Author</h2>
<p><strong>Siddhesh Prabhugaonkar</strong> is a <strong>Generative AI &amp; Agentic AI Enablement and Adoption Specialist</strong> with two decades as an Architect, Consultant, and Trainer across IT, Cloud, and Generative AI. He is a <strong>Microsoft Certified Trainer</strong>, a <strong>Pluralsight Instructor</strong>, and helps enterprises move from GenAI curiosity to production adoption at scale.</p>
<p>His consulting and training practice spans <strong>GenAI, Azure, Microsoft Foundry, Anthropic Claude, GitHub Copilot, Amazon Q, Kiro, Google Gemini, OpenAI Codex, Cursor, Windsurf/Devin</strong>, and modern full‑stack engineering (.NET, MEAN, MERN). Notable engagements include GenAI enablement for <strong>ADP</strong>, IoT platform consulting for <strong>IIT Bombay's E‑Yantra</strong> program, and early work on Microsoft's Repository platform (which later became <strong>Entity Framework</strong>).</p>
<blockquote>
<p><em>Empowering organizations and individuals to adopt, build, and scale with Generative AI, Cloud, and Modern Software Engineering.</em></p>
</blockquote>
<p><strong>Connect &amp; explore:</strong></p>
<ul>
<li><p>💼 LinkedIn — <a href="https://www.linkedin.com/in/siddheshprabhugaonkar">linkedin.com/in/siddheshprabhugaonkar</a></p>
</li>
<li><p>📝 Blog — <a href="https://azureauthority.in/">azureauthority.in</a></p>
</li>
<li><p>📬 Newsletter — <a href="https://cloud-authority.com/">cloud-authority.com</a></p>
</li>
<li><p>🎥 YouTube — <a href="https://www.youtube.com/c/SiddheshPrabhugaonkar">youtube.com/c/SiddheshPrabhugaonkar</a></p>
</li>
<li><p>🤝 Book a 1:1 on Topmate — <a href="https://topmate.io/siddheshp">topmate.io/siddheshp</a></p>
</li>
<li><p>🎓 Research Papers (Google Scholar) — <a href="https://scholar.google.com/citations?user=TuqOYtwAAAAJ&amp;hl=en">scholar.google.com</a></p>
</li>
</ul>
]]></content:encoded></item><item><title><![CDATA[The AI Productivity Paradox: Why 87% of Workers Use AI, But Only 13% of Companies See Real Gains]]></title><description><![CDATA[The uncomfortable number
Here is the statistic that should stop every CIO, CHRO and CEO cold this quarter:

87% of digital workers now use AI at work. 75% say it makes them personally more productive,]]></description><link>https://azureauthority.in/the-ai-productivity-paradox-why-87-of-workers-use-ai-but-only-13-of-companies-see-real-gains</link><guid isPermaLink="true">https://azureauthority.in/the-ai-productivity-paradox-why-87-of-workers-use-ai-but-only-13-of-companies-see-real-gains</guid><category><![CDATA[AI]]></category><category><![CDATA[Artificial Intelligence]]></category><category><![CDATA[Productivity]]></category><category><![CDATA[AI Adoption]]></category><category><![CDATA[ai enablment]]></category><dc:creator><![CDATA[Siddhesh Prabhugaonkar]]></dc:creator><pubDate>Wed, 08 Jul 2026 06:17:31 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/651bff05e4455a8ac9ec7688/1bd2013a-170a-41d8-bea9-adb2b41a1d37.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2>The uncomfortable number</h2>
<p>Here is the statistic that should stop every CIO, CHRO and CEO cold this quarter:</p>
<blockquote>
<p><strong>87%</strong> of digital workers now use AI at work. <strong>75%</strong> say it makes them personally more productive, saving them roughly <strong>11 hours a week</strong>. Yet only <strong>13%</strong> say their organisation is performing significantly better because of it.</p>
</blockquote>
<p>That is not a rounding error. It is a 62-point gap between what individuals feel and what companies can measure. And it lines up almost perfectly with the U.S. Bureau of Labor Statistics data that Tom Davenport pointed to last week: aggregate non-farm productivity growth over the last seven years — half of which is the genAI era — has been <strong>2.1%</strong>, exactly the long-run average since 1947. Q1 2026 clocked in at <strong>0.3%</strong>.</p>
<p>Two of the most-read pieces of the past week try to explain this gap from different angles:</p>
<ul>
<li><p>The <a href="https://www.glean.com/work-ai-institute/reports/work-ai-index">Glean Work AI Institute's <em>Work AI Index</em></a>, based on a survey of 6,000 full-time digital workers in the US, UK and Australia (Dec 2025 – Jan 2026).</p>
</li>
<li><p>Tom Davenport's Substack post, <a href="https://tdavenport.substack.com/p/ten-reasons-why-we-wont-see-productivity"><em>"Ten Reasons Why We Won't See Productivity Improvements from GenAI"</em></a>.</p>
</li>
</ul>
<p>Read together, they paint the same picture from two directions: individually, AI is doing a lot; institutionally, almost nothing is showing up. Below is what they found, why it happens, and — most importantly — what leaders can actually do about it.</p>
<hr />
<h2>Where the 11 hours are going: botsitting and botshitting</h2>
<p>Glean's most useful contribution is a pair of words for what we have all been doing without naming it.</p>
<ul>
<li><p><strong>Botsitting</strong> <em>(n.)</em> — the largely unrecognised, unbudgeted labour of making AI usable: feeding it context, checking its outputs, debugging its mistakes, re-prompting, and cleaning up after it.</p>
</li>
<li><p><strong>Botshitting</strong> <em>(n.)</em> — shipping AI-generated work that the worker has not verified, doesn't fully understand, or couldn't defend if asked.</p>
</li>
</ul>
<p>The numbers are not subtle:</p>
<table>
<thead>
<tr>
<th>Metric</th>
<th>Value</th>
</tr>
</thead>
<tbody><tr>
<td>Time workers spend botsitting each week</td>
<td><strong>6.4 hours</strong> (most of a workday)</td>
</tr>
<tr>
<td>Share of AI-related time that goes to botsitting</td>
<td><strong>37%</strong></td>
</tr>
<tr>
<td>Share that goes to actually using AI to produce work</td>
<td><strong>36%</strong></td>
</tr>
<tr>
<td>Share that goes to learning tools and building agents</td>
<td><strong>27%</strong></td>
</tr>
<tr>
<td>AI sessions that "fail" outright and require a full restart</td>
<td><strong>36%</strong></td>
</tr>
<tr>
<td>Workers who admit to botshitting</td>
<td><strong>69%</strong></td>
</tr>
<tr>
<td>Workers who ship AI output they cannot explain</td>
<td><strong>41%</strong></td>
</tr>
<tr>
<td>Workers who have blamed AI for their own mistakes</td>
<td><strong>28%</strong></td>
</tr>
<tr>
<td>Frequent botsitters who are actively job-hunting</td>
<td><strong>73% more likely</strong></td>
</tr>
</tbody></table>
<p>Where does all that hidden labour come from? Glean's breakdown:</p>
<img src="https://cdn.hashnode.com/uploads/covers/651bff05e4455a8ac9ec7688/6e8ebe3e-d1d6-4905-8653-af3d286e8c9f.png" alt="" style="display:block;margin:0 auto" />

<p>Feeding AI context alone eats <strong>2.3 hours a week</strong>. Supervising outputs takes <strong>2.2 hours</strong>. Debugging burns <strong>1.7 hours</strong> — and it carries a <strong>1.4× exhaustion multiplier</strong>, meaning it wears people out faster than any other AI-related activity.</p>
<p>The really damaging finding: for every 10% more time workers spend feeding AI context, they are <strong>25% more likely to report feeling worn out</strong>. Glean calls it the <em>context tax</em>. Davenport, from a different angle, calls it reason #3 on his list: <em>"If you use genAI the 'right way,' you don't save a lot of time and effort."</em></p>
<hr />
<h2>The cycle that keeps grinding forward</h2>
<p>Both sources describe the same self-reinforcing loop. Here it is as a diagram:</p>
<img src="https://cdn.hashnode.com/uploads/covers/651bff05e4455a8ac9ec7688/db944552-33f0-4637-aa3b-48cfa3d6a3cf.png" alt="" style="display:block;margin:0 auto" />

<p>Stanford's Bob Sutton has a name for the "response" step: <strong>addition sickness</strong> — the reflex to solve every problem by piling more on top. Its GenAI variant is <strong>tokenmaxxing</strong>: rewarding people (or letting people reward themselves) for burning more tokens, regardless of whether the tokens produced anything useful. Meta ran an internal leaderboard until early 2026 that ranked engineers by token consumption; the "winner" averaged <strong>281 billion tokens/month</strong> at a compute cost of hundreds of thousands of dollars. Whether any of that was useful was, as Glean drily notes, "beside the point."</p>
<hr />
<h2>Tool sprawl and the AI toggle tax</h2>
<p>Part of the reason botsitting eats so much time is that nobody uses just one AI tool. Glean's data:</p>
<ul>
<li><p><strong>77%</strong> of AI users bounce between multiple tools every week; <strong>33%</strong> juggle four or more.</p>
</li>
<li><p>Only <strong>0.5%</strong> of Claude users use Claude alone; the average Claude user runs four other AI tools alongside it.</p>
</li>
<li><p><strong>60%</strong> of workers rerun the same prompt across multiple tools because the first output wasn't good enough.</p>
</li>
<li><p>Workers who juggle multiple tools are <strong>35% more likely</strong> to be frequent botsitters.</p>
</li>
</ul>
<p>Each switch costs context, focus and time. Glean calls it the <strong>AI toggle tax</strong>. MCP and APIs help with plumbing but do not solve the deeper problem: <strong>context</strong>. Knowing which file is authoritative, which "Q3" you mean, or which unwritten rule keeps the workflow moving — those live in people, not in your data warehouse.</p>
<p>So the worker becomes the integration layer. They paste context into one tool, re-paste it into another, then referee disputes between two confident answers, neither of which is fully right.</p>
<hr />
<h2>Why the individual gains never roll up: Davenport's ten reasons</h2>
<p>Where Glean documents the <em>behaviour</em>, Davenport explains the <em>economics</em>. His ten reasons for why individual productivity claims don't show up in company or macro numbers:</p>
<ol>
<li><p><strong>You need to redesign end-to-end processes around AI capabilities.</strong> That takes years, and most companies won't do it.</p>
</li>
<li><p><strong>Training is generic.</strong> People get a webinar on summarising emails, not on their actual Tuesday-morning workflow.</p>
</li>
<li><p><strong>Doing it right doesn't save much time.</strong> Multiple prompts, hallucination checks, editing out clichés, adding your own voice — often no faster than writing it yourself.</p>
</li>
<li><p><strong>Measuring aggregate individual gains is genuinely hard.</strong> Few companies do proper before/after task timing across enough jobs.</p>
</li>
<li><p><strong>We don't know what people do with the saved hour.</strong> More work? More streaming? Layoffs almost never follow the "we could reduce headcount by 1/8" logic.</p>
</li>
<li><p><strong>Token costs are rising.</strong> Any real productivity gain now has to be netted against a real, growing cost line.</p>
</li>
<li><p><strong>Personal infrastructure investment is rare.</strong> Yes, some people build agents that automate half their job. Almost no one you actually know does this.</p>
</li>
<li><p><strong>Organisations don't run controlled experiments.</strong> A/B tests on AI usage are academic novelties, not corporate practice.</p>
</li>
<li><p><strong>Workslop and process slop.</strong> Bad AI output that lowers <em>other people's</em> productivity — and worse, degrades trust in whole cross-org processes.</p>
</li>
<li><p><strong>Agents help but don't solve it.</strong> Somebody still has to supervise the agents, and that supervision is itself botsitting at scale.</p>
</li>
</ol>
<p>Davenport's punchline: <em>"AI providers are over-valued by the market, GDP growth largely driven by data-centre construction is unhealthy, and generative AI is not enough to power the economy on its own."</em></p>
<p>Uncomfortable, but hard to argue with when Q1 2026 productivity growth is 0.3%.</p>
<hr />
<h2>The three paradoxes that keep the gap open</h2>
<p>Glean crystallises the whole thing into three paradoxes worth memorising:</p>
<img src="https://cdn.hashnode.com/uploads/covers/651bff05e4455a8ac9ec7688/ee42e921-bb28-47e4-9b10-a2af7ebf859b.png" alt="" style="display:block;margin:0 auto" />

<p>Two more findings that deserve their own callout, because they cut against intuition:</p>
<ul>
<li><p><strong>"Smarter" tools produce more botshit, not less.</strong> ChatGPT and Claude users report the biggest productivity gains — <em>and</em> the highest rates of botshitting (71% and 92% at least monthly). Better output makes people stop watching. Aviation psychologists have called this <em>automation complacency</em> since the 1970s.</p>
</li>
<li><p><strong>Fear correlates with more AI use, not less.</strong> Workers most afraid AI will eliminate their role are the ones using it most, automating the most of their own work, and wanting to automate even more. Visible AI usage has become a form of career insurance.</p>
</li>
</ul>
<hr />
<h2>What can actually be done: the human infrastructure of AI</h2>
<p>Here is where both sources converge. Glean's finding is that the 13% of organisations that <em>do</em> see performance gains are not spending more time inside AI tools. They spend <strong>less</strong> — 27% of their AI-related time inside the tools, versus 49% at low-impact organisations. They spend the rest on <strong>the work around the tool</strong>: setting context, defining what "good" looks like, catching errors, and deciding when <em>not</em> to use AI at all.</p>
<p>That "human infrastructure" has to be built at three levels. Think of it as a temple: a pediment declaring the goal, three load-bearing pillars, and a foundation of actual business impact. Knock out any one pillar and the whole thing comes down.</p>
<img src="https://cdn.hashnode.com/uploads/covers/651bff05e4455a8ac9ec7688/1393fb87-beb6-4f0b-9527-7b6c02decb3f.png" alt="" style="display:block;margin:0 auto" />

<h3>At the individual level</h3>
<ol>
<li><p><strong>Draw a Centaur line.</strong> Wharton's Ethan Mollick uses the term for workers who explicitly split tasks between what they will do themselves and what they will hand to the model. High AI achievers spend <strong>38%</strong> of their AI time on core tasks; low achievers spend <strong>48%</strong>. Keep the judgement work; hand off the mechanical work.</p>
</li>
<li><p><strong>Botsit on purpose.</strong> High achievers spend <em>more</em> time supervising, not less — and they treat every bad output as free training data about what the model can and cannot be trusted with. They are <strong>2.4× more likely</strong> to rate AI itself as a valuable teacher.</p>
</li>
<li><p><strong>Guard the dividend.</strong> When AI gives you an hour back, do not spend it doing 20% more of the same task. Spend it building the skill you did not have — running agents, writing better prompts, learning where AI is <em>wrong</em>.</p>
</li>
<li><p><strong>Practise restraint.</strong> Only <strong>33%</strong> of workers are extremely confident they know when <em>not</em> to use AI. This is the hardest skill and the highest-value one. If prompting and verifying would take twelve minutes and you can write the function in eight, write it.</p>
</li>
</ol>
<h3>At the team level</h3>
<ol>
<li><p><strong>Frame AI as a teammate, not an employee.</strong> BCG's 2026 randomised study found that when AI was framed as an <em>employee</em> rather than a <em>tool</em>, workers felt less accountable for its output and reviewed it less carefully. Teammate is the sweet spot: you argue with a teammate, you accept a tool's output.</p>
</li>
<li><p><strong>Invest in cross-functional AI builders.</strong> Employees are <strong>5.6× more likely</strong> to adopt AI when a cross-functional teammate uses it, versus 2.4× for a leader. Cross-functional builders design for the messy version of work, not the tidy fantasy version.</p>
</li>
<li><p><strong>Managers: reclaim your job.</strong> High AI-achieving managers delegate <strong>32% more</strong> of their coordination work to AI. They don't compete with AI on status updates. They use the reclaimed time for the coaching and mentoring they were supposed to be doing all along. <strong>44%</strong> of workers already say AI is fairer than their manager; the number climbs with span of control.</p>
</li>
</ol>
<h3>At the organisational level</h3>
<ol>
<li><p><strong>Kill the vanity metrics.</strong> Tokens, logins, "lines of AI-generated code" — Goodhart's Law will eat you alive. Workers in organisations that measure only productivity botshit at <strong>74%</strong>; where quality is also measured, it drops to 64%. Track a basket of at least five dimensions: efficiency, quality, employee experience, adoption breadth ("intent diversity" — how many distinct use cases per employee), and revenue/cost impact.</p>
</li>
<li><p><strong>Turn the AI policy into governance.</strong> <strong>40%</strong> of workers have not read their AI policy. Review it quarterly, explain the <em>why</em>, enforce it visibly, and define clearly who can build and deploy agents. Otherwise, you get <em>agent sprawl</em>: three teams building three bots to do the same thing, two of them running on unsanctioned data.</p>
</li>
<li><p><strong>Start with the work, not the vendor contract.</strong> Employees at high-impact organisations are 33% less likely to say vendor lock-in constrains their AI strategy. If your "AI strategy" is a roll-up of what your Microsoft, Salesforce and Google licences already include, you have a procurement plan, not a strategy.</p>
</li>
<li><p><strong>Fund the context layer.</strong> Context-poor AI (workers say critical info is not accessible via their AI tools) correlates with dramatically more fatigue, cleanup, shadow usage and botshitting. <strong>53%</strong> of workers say the info they need isn't accessible through their AI systems. Fixing that — through retrieval, MCP servers, forward-deployed engineers, and yes, connectors — pays back faster than another tool licence.</p>
</li>
<li><p><strong>Redesign work; don't just squeeze people.</strong> <strong>90%</strong> of workers at transformative organisations say their employer treats AI as a chance to redesign the work, versus <strong>54%</strong> everywhere else. When AI is named as the reason for layoffs, <strong>62%</strong> of the survivors start job-hunting. That is the most expensive cost line in your P&amp;L.</p>
</li>
<li><p><strong>Have the CEO actually use it, visibly.</strong> Employees who have seen their CEO personally use AI use it <strong>67% more</strong> than those who haven't. This is not theatre; this is the cheapest, highest-leverage adoption intervention available.</p>
</li>
</ol>
<hr />
<h2>A concrete 90-day starting point</h2>
<p>If you lead an enterprise function and want to move on this before the next board meeting, here is a compressed sequence that has worked with clients:</p>
<img src="https://cdn.hashnode.com/uploads/covers/651bff05e4455a8ac9ec7688/607c76f4-bf6c-4424-84d8-c6ee76f67331.png" alt="" style="display:block;margin:0 auto" />

<p>You don't need everything. You need <strong>something you can measure</strong>, in the messy conditions of your real work, that lets you defend the answer to the only question that matters at the next board meeting:</p>
<blockquote>
<p><em>"Are we in the 13% or the 87%?"</em></p>
</blockquote>
<p>If you can't answer that, you're the 87%.</p>
<hr />
<h2>The bottom line</h2>
<p>Two independent lenses — Glean's survey of 6,000 workers and Davenport's economics-of-work analysis — are telling the same story:</p>
<ul>
<li><p><strong>AI is real for individuals.</strong> The 11 hours and the 75% productivity self-report are not fabricated.</p>
</li>
<li><p><strong>The gains disappear on the way to the P&amp;L.</strong> Coordination neglect, botsitting, botshitting, workslop, process slop, token costs, missing measurement, and above all the failure to redesign end-to-end work.</p>
</li>
<li><p><strong>The winners are not the biggest spenders.</strong> They are the ones who built the human infrastructure — measurement, governance, context, and management discipline — that makes the tool worth using.</p>
</li>
</ul>
<p>You cannot buy your way out of this with another licence. You have to build it. And you have to start from the work, not from the tech stack.</p>
<hr />
<h3>Further reading</h3>
<ul>
<li><p>Glean Work AI Institute — <a href="https://www.glean.com/work-ai-institute/reports/work-ai-index"><em>Work AI Index: Botsitting, Botshitting and the Hidden Human Labor of AI at Work</em></a></p>
</li>
<li><p>Tom Davenport — <a href="https://tdavenport.substack.com/p/ten-reasons-why-we-wont-see-productivity"><em>Ten Reasons Why We Won't See Productivity Improvements from GenAI</em></a></p>
</li>
<li><p>HBR — <a href="https://hbr.org/2025/09/ai-generated-workslop-is-destroying-productivity"><em>AI-Generated "Workslop" Is Destroying Productivity</em></a></p>
</li>
<li><p>Ethan Mollick — <a href="https://www.oneusefulthing.org/p/centaurs-and-cyborgs-on-the-jagged"><em>Centaurs and Cyborgs on the Jagged Frontier</em></a></p>
</li>
<li><p>U.S. BLS — <a href="https://www.bls.gov/productivity/">Productivity data</a></p>
</li>
</ul>
<hr />
<p><em>If you're building or fixing GenAI enablement inside a large enterprise and want to compare notes on what's actually working, I'd love to hear from you.</em></p>
<hr />
<h2>About the Author</h2>
<p><strong>Siddhesh Prabhugaonkar</strong> is a <strong>Generative AI &amp; Agentic AI Enablement and Adoption Specialist</strong> with two decades as an Architect, Consultant, and Trainer across IT, Cloud, and Generative AI. He is a <strong>Microsoft Certified Trainer</strong>, a <strong>Pluralsight Instructor</strong>, and helps enterprises move from GenAI curiosity to production adoption at scale.</p>
<p>His consulting and training practice spans <strong>GenAI, Azure, Microsoft Foundry, Anthropic Claude, GitHub Copilot, Amazon Q, Kiro, Google Gemini, OpenAI Codex, Cursor, Windsurf</strong>, and modern full‑stack engineering (.NET, MEAN, MERN). Notable engagements include GenAI enablement for <strong>ADP</strong>, IoT platform consulting for <strong>IIT Bombay's E‑Yantra</strong> program, and early work on Microsoft's Repository platform (which later became <strong>Entity Framework</strong>).</p>
<blockquote>
<p><em>Empowering organizations and individuals to adopt, build, and scale with Generative AI, Cloud, and Modern Software Engineering.</em></p>
</blockquote>
<p><strong>Connect &amp; explore:</strong></p>
<ul>
<li><p>💼 LinkedIn — <a href="https://www.linkedin.com/in/siddheshprabhugaonkar">linkedin.com/in/siddheshprabhugaonkar</a></p>
</li>
<li><p>📝 Blog — <a href="https://azureauthority.in/">azureauthority.in</a></p>
</li>
<li><p>📬 Newsletter — <a href="https://cloud-authority.com/">cloud-authority.com</a></p>
</li>
<li><p>🎥 YouTube — <a href="https://www.youtube.com/c/SiddheshPrabhugaonkar">youtube.com/c/SiddheshPrabhugaonkar</a></p>
</li>
<li><p>🤝 Book a 1:1 on Topmate — <a href="https://topmate.io/siddheshp">topmate.io/siddheshp</a></p>
</li>
<li><p>🎓 Research Papers (Google Scholar) — <a href="https://scholar.google.com/citations?user=TuqOYtwAAAAJ&amp;hl=en">scholar.google.com</a></p>
</li>
</ul>
]]></content:encoded></item><item><title><![CDATA[Sakana Fugu vs. LLM Council: Two Very Different Bets on Multi-Model Intelligence]]></title><description><![CDATA["One model to command them all." — that's how Sakana AI pitches Fugu. "A Saturday hack to read books with LLMs together." — that's how Andrej Karpathy pitches LLM Council.
Same underlying instinct — t]]></description><link>https://azureauthority.in/sakana-fugu-vs-llm-council-two-very-different-bets-on-multi-model-intelligence</link><guid isPermaLink="true">https://azureauthority.in/sakana-fugu-vs-llm-council-two-very-different-bets-on-multi-model-intelligence</guid><category><![CDATA[llm council]]></category><category><![CDATA[sakan-fugu]]></category><category><![CDATA[multi-agent systems]]></category><category><![CDATA[Multi-agent AI]]></category><category><![CDATA[large language models]]></category><dc:creator><![CDATA[Siddhesh Prabhugaonkar]]></dc:creator><pubDate>Mon, 06 Jul 2026 14:13:30 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/651bff05e4455a8ac9ec7688/666f0a3c-01bb-41fb-aa1f-49b61c8de63d.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<blockquote>
<p><em>"One model to command them all."</em> — that's how Sakana AI pitches <strong>Fugu</strong>. <em>"A Saturday hack to read books with LLMs together."</em> — that's how Andrej Karpathy pitches <strong>LLM Council</strong>.</p>
<p>Same underlying instinct — <em>the best answer isn't from one model, it's from a coordinated team of models</em> — but two radically different execution philosophies. One is a productized, research-grade orchestrator sold behind an OpenAI-compatible endpoint. The other is a 99% vibe-coded local web app that fits on a laptop.</p>
<p>This post is a deep dive into what Sakana Fugu actually is, how it works, and how it compares with LLM Council.</p>
</blockquote>
<hr />
<h2>Executive Summary</h2>
<p>Multi-model orchestration is quietly becoming the next frontier in Generative AI — the belief that no single model, however large, will consistently beat a well-coordinated <em>team</em> of models. Two projects, released within months of each other, put this thesis to the test from opposite ends of the spectrum:</p>
<ul>
<li><p><strong>Sakana Fugu</strong> (2026) — a productized, research-backed system from Sakana AI that hides a <em>learned coordinator</em> (Trinity + Conductor) behind a single OpenAI-compatible API. It dynamically assembles frontier models into Thinker / Worker / Verifier roles, loops until a verifier is satisfied, and bills you a single blended rate. It targets <strong>autonomous, long-horizon agentic workloads</strong> — coding, paper reproduction, security assessments, Kaggle-style research.</p>
</li>
<li><p><strong>LLM Council</strong> (2025) — Andrej Karpathy's tiny, transparent, local web app that fans a query out to a panel of frontier LLMs, has them anonymously peer-review each other, and lets a Chairman model synthesize the answer. It targets <strong>humans doing hard thinking</strong> — reading, evaluating, comparing.</p>
</li>
</ul>
<p>Fugu optimizes for <strong>answer quality on autonomous tasks with opaque routing</strong>. Council optimizes for <strong>transparency and human insight</strong>. Both are early signals that the "one giant model" era is peaking and the next axis of progress is coordination — but each is pointed at a fundamentally different job-to-be-done.</p>
<p>If you're building an agentic product and want frontier quality without single-vendor lock-in, Fugu is the more serious answer today. If you're a human trying to reason through a hard question and want to <em>see</em> where the frontier disagrees, Council is unbeatable. This post breaks down how each works, where each breaks, and how to choose between them.</p>
<hr />
<h2>1. The problem both are trying to solve</h2>
<p>Frontier LLMs — GPT-5.x, Claude 4.x, Gemini 3.x, Grok 4, etc. — are astonishingly capable, but each one:</p>
<ul>
<li><p>has different strengths (Claude tends to reason carefully, GPT tends to code confidently, Gemini tends to search and synthesize, Grok tends to be bold)</p>
</li>
<li><p>has different failure modes (hallucination patterns, refusal patterns, long-context regressions)</p>
</li>
<li><p>comes with vendor lock-in, price shocks, and geopolitical/export-control risk</p>
</li>
</ul>
<p>If you <em>combine</em> them intelligently — let them critique each other, delegate to each other, verify each other — you can plausibly beat any single one. That's the shared thesis. Everything else is engineering.</p>
<hr />
<h2>2. What is Sakana Fugu?</h2>
<p><a href="https://sakana.ai/fugu">Sakana Fugu</a> is Sakana AI's new offering (2026). It packages a <strong>multi-agent orchestration system behind a single OpenAI-compatible API</strong>. From the outside it looks like just another model endpoint. Inside, it's a <em>learned coordinator</em> that dynamically assembles a team of frontier LLMs for each query.</p>
<p>Two SKUs:</p>
<table>
<thead>
<tr>
<th>Model</th>
<th>Positioning</th>
</tr>
</thead>
<tbody><tr>
<td><strong>Fugu</strong></td>
<td>Balanced latency / quality. Drop-in default for coding, code review, chatbots. Supports opting individual providers out of the agent pool for compliance.</td>
</tr>
<tr>
<td><strong>Fugu Ultra</strong></td>
<td>Deeper pool, maximum quality. Used for Kaggle competitions, paper reproduction, cybersecurity assessments, patent landscape analysis. Pool is fixed.</td>
</tr>
</tbody></table>
<p>Both models are billed and served through one endpoint — you switch by changing the model name, not your SDK.</p>
<h3>2.1 The pool metaphor</h3>
<p>Sakana's own visual for Fugu is a <strong>fish (the fugu) picking teammates out of an LLM pool</strong> — closed-source and open-source models sitting alongside Sakana's own model.</p>
<img src="https://cdn.hashnode.com/uploads/covers/651bff05e4455a8ac9ec7688/96a69959-0059-4a8a-a15e-d0ed440b2fea.png" alt="" style="display:block;margin:0 auto" />

<p>The important bit: Fugu <strong>is not a router that picks one model per request</strong>. It picks a <em>team</em>, assigns roles, runs multi-turn coordination, and returns one answer.</p>
<h3>2.2 The architecture: coordinator, roles, verifier</h3>
<p>Under the hood, Fugu is grounded in two ICLR 2026 papers from Sakana:</p>
<ul>
<li><p><a href="https://arxiv.org/abs/2512.04695"><strong>TRINITY: An Evolved LLM Coordinator</strong></a> — a lightweight evolved coordinator that hands out <strong>Thinker / Worker / Verifier</strong> roles across turns.</p>
</li>
<li><p><a href="https://arxiv.org/abs/2512.04388"><strong>Learning to Orchestrate Agents in Natural Language with the Conductor</strong></a> — an RL-trained "Conductor" that discovers natural-language coordination strategies (which agent talks to which, and with what prompt).</p>
</li>
</ul>
<p>Put together, the runtime loop looks roughly like this:</p>
<img src="https://cdn.hashnode.com/uploads/covers/651bff05e4455a8ac9ec7688/139968c0-02ed-472e-84eb-1393c2f7f9f1.png" alt="" style="display:block;margin:0 auto" />

<p>Three things worth calling out:</p>
<ol>
<li><p><strong>The coordinator sometimes solves directly.</strong> Not every query needs a committee — trivial ones are answered inline. This is the "fugu solves it itself" path.</p>
</li>
<li><p><strong>The verifier can loop.</strong> If the verifier isn't satisfied, control goes back to the coordinator, which can re-team, re-prompt, or escalate. This is why Fugu Ultra can spend hours on a single hard problem (paper reproduction, Kaggle).</p>
</li>
<li><p><strong>The coordination strategy is learned, not hand-written.</strong> This is the biggest differentiator from every "multi-agent framework" you've seen on GitHub. Nobody wrote "for coding, ask Claude, then have GPT critique." A coordinator was trained (evolutionary search + RL) to discover such patterns.</p>
</li>
</ol>
<h3>2.3 What Sakana claims</h3>
<p>From the <a href="https://sakana.ai/fugu">Fugu benchmarks page</a>:</p>
<ul>
<li><p>Beats publicly accessible frontier models on SWE-Bench Pro, LiveCodeBench (Pro), GPQA-D, TerminalBench 2.1, Humanity's Last Exam, CharXiv Reasoning, and more.</p>
</li>
<li><p>Shoulder-to-shoulder with non-public frontier "Fable 5" and "Mythos Preview" — while being reachable via a normal API and outside export-control chokepoints.</p>
</li>
<li><p>On an AutoResearch-style GPT training loop (Karpathy's setup), Fugu-Ultra reached the best mean BPB (0.9774) across 123 experiments in ~14 hours on a single H100, beating three anonymized frontier baselines.</p>
</li>
</ul>
<h3>2.4 Pricing model (worth understanding)</h3>
<p>Fugu's pricing is subtly clever:</p>
<ul>
<li><p><strong>Fugu</strong> — you pay the standard rate of whichever model is active. When multiple agents are active, <strong>fees don't stack</strong> — you pay a single blended rate based on the top-tier model in the pool.</p>
</li>
<li><p><strong>Fugu Ultra</strong> — fixed pricing: \(5 in / \)30 out per 1M tokens, jumping to \(10 / \)45 for contexts &gt;272K.</p>
</li>
<li><p>Subscription tiers (\(20 / \)100 / $200 per month) for casual use.</p>
</li>
</ul>
<p>Translation: enterprises don't get hit with N× cost for using N models. That's a real go-to-market wedge.</p>
<hr />
<h2>3. What is LLM Council?</h2>
<p><a href="https://github.com/karpathy/llm-council">LLM Council</a> is Andrej Karpathy's small, local, "99% vibe coded" web app (22.3k stars at time of writing) that he built on a Saturday to help him read books with LLMs. It looks like ChatGPT, but every query fans out to a <strong>panel of frontier LLMs</strong> — via OpenRouter — who then critique and rank each other, and finally a <strong>Chairman</strong> LLM writes the final answer.</p>
<p>Default council in <code>backend/config.py</code>:</p>
<pre><code class="language-python">COUNCIL_MODELS = [
    "openai/gpt-5.1",
    "google/gemini-3-pro-preview",
    "anthropic/claude-sonnet-4.5",
    "x-ai/grok-4",
]
CHAIRMAN_MODEL = "google/gemini-3-pro-preview"
</code></pre>
<h3>3.1 The three-stage flow</h3>
<img src="https://cdn.hashnode.com/uploads/covers/651bff05e4455a8ac9ec7688/79634c5b-5aa0-4ec9-a031-ce2aacb8955e.png" alt="" style="display:block;margin:0 auto" />

<p>Key design choices:</p>
<ul>
<li><p><strong>Anonymization for judging</strong> — models don't know whose answer they're reviewing, to reduce brand bias.</p>
</li>
<li><p><strong>All opinions are visible</strong> — the tabs let <em>you</em> be the real judge; the Chairman is a convenience.</p>
</li>
<li><p><strong>Chairman is configurable</strong> — pick whichever model you trust to synthesize.</p>
</li>
<li><p><strong>OpenRouter as the transport</strong> — one API key, many providers.</p>
</li>
</ul>
<h3>3.2 What it's for</h3>
<p>It is explicitly <em>not</em> a production system. Karpathy's README literally says:</p>
<blockquote>
<p><em>"I'm not going to support it in any way, it's provided here as is for other people's inspiration."</em></p>
</blockquote>
<p>It's for <strong>humans in the loop</strong> — reading books, exploring hard questions, wanting to <em>see</em> which model disagrees with which. The value is <em>transparency</em>, not throughput.</p>
<hr />
<h2>4. Sakana Fugu vs. LLM Council — side by side</h2>
<img src="https://cdn.hashnode.com/uploads/covers/651bff05e4455a8ac9ec7688/49c0949d-64fd-4693-837c-fad0ef097616.png" alt="" style="display:block;margin:0 auto" />

<table>
<thead>
<tr>
<th>Dimension</th>
<th><strong>Sakana Fugu</strong></th>
<th><strong>LLM Council</strong></th>
</tr>
</thead>
<tbody><tr>
<td><strong>Origin</strong></td>
<td>Sakana AI research + product, 2026</td>
<td>Karpathy Saturday hack, 2025</td>
</tr>
<tr>
<td><strong>Delivery</strong></td>
<td>Hosted, OpenAI-compatible API (<code>fugu</code>, <code>fugu-ultra</code>)</td>
<td>Local web app (FastAPI + React + OpenRouter)</td>
</tr>
<tr>
<td><strong>Coordination strategy</strong></td>
<td><em>Learned</em> (evolutionary + RL) — Trinity / Conductor</td>
<td><em>Hand-coded</em> three-stage pipeline (fan out → review → chair)</td>
</tr>
<tr>
<td><strong>Roles</strong></td>
<td>Dynamic: Thinker / Worker / Verifier per turn</td>
<td>Fixed: Members + Chairman</td>
</tr>
<tr>
<td><strong>Loops</strong></td>
<td>Verifier can send work back to coordinator over many turns</td>
<td>Single-shot pipeline (no revision loop)</td>
</tr>
<tr>
<td><strong>Model pool</strong></td>
<td>Frontier closed + open + Sakana's own; opt-out for Fugu, fixed for Ultra</td>
<td>User-editable list in <code>config.py</code></td>
</tr>
<tr>
<td><strong>UX</strong></td>
<td>One answer, one endpoint; routing is opaque by design</td>
<td>All opinions shown as tabs; full transparency</td>
</tr>
<tr>
<td><strong>Judge bias mitigation</strong></td>
<td>Learned; not documented as anonymized</td>
<td>Explicit anonymization for peer ranking</td>
</tr>
<tr>
<td><strong>Best for</strong></td>
<td>Agentic coding, paper reproduction, security assessments, long-running autonomy</td>
<td>Exploring a hard question yourself, reading, evaluating models side-by-side</td>
</tr>
<tr>
<td><strong>Cost model</strong></td>
<td>Blended single-model rate; no fee stacking; Ultra is fixed $/token</td>
<td>You pay OpenRouter for every call to every council member (fees <em>do</em> stack)</td>
</tr>
<tr>
<td><strong>Vendor lock-in</strong></td>
<td>Sakana becomes the abstraction layer</td>
<td>You own the code and the router config</td>
</tr>
<tr>
<td><strong>Data governance</strong></td>
<td>Opt-in training; can opt out of specific providers on Fugu</td>
<td>Fully local, your keys, your machine</td>
</tr>
</tbody></table>
<h3>4.1 The philosophical fork</h3>
<p>The two systems answer <em>"how do we combine LLMs?"</em> differently:</p>
<ul>
<li><p><strong>Fugu</strong> says: <em>the coordination policy is itself a machine-learning problem — train it, evolve it, hide it, sell it.</em> The API caller shouldn't (and can't) see which model did what.</p>
</li>
<li><p><strong>Council</strong> says: <em>the coordination policy is a human-reasoning tool — expose every opinion, let the human see disagreement, and use a simple Chairman synthesizer as a courtesy.</em></p>
</li>
</ul>
<p>Fugu optimizes for <strong>answer quality on autonomous long-horizon tasks</strong>. Council optimizes for <strong>human insight on hard subjective questions</strong>.</p>
<p>Neither is wrong. They're pointed at different jobs-to-be-done.</p>
<h3>4.2 Where each one breaks</h3>
<p><strong>Fugu weaknesses</strong></p>
<ul>
<li><p>Opaque by design. You can't see which model answered — a real problem in regulated industries where you need to attribute <em>which</em> model produced <em>which</em> claim.</p>
</li>
<li><p>Latency for Ultra is high (deep pool + verifier loops).</p>
</li>
<li><p>You depend on Sakana's coordinator quality; if the learned policy regresses, your agent regresses invisibly.</p>
</li>
<li><p>Not available in EU / EEA at launch.</p>
</li>
</ul>
<p><strong>Council weaknesses</strong></p>
<ul>
<li><p>Costs stack: 4 members + 1 Chairman = ~5× the tokens of a single model, every query.</p>
</li>
<li><p>No revision loop — if all four members are wrong in the same direction (very common on frontier-adjacent problems), the Chairman just averages the wrongness.</p>
</li>
<li><p>Peer review is one-shot; models don't get to argue back after being critiqued.</p>
</li>
<li><p>Not designed for autonomy — it's a chat UI, not an agent runtime.</p>
</li>
</ul>
<hr />
<h2>5. When to use which (practical guide)</h2>
<p><strong>Reach for Sakana Fugu when:</strong></p>
<ul>
<li><p>You're building an <em>agentic</em> product — coding assistant, code review bot, security assessment agent, research automation — and you want frontier quality without picking a single vendor.</p>
</li>
<li><p>You care about resilience: if one provider goes down or gets export-restricted, Fugu keeps working.</p>
</li>
<li><p>You want one bill, one endpoint, one SDK.</p>
</li>
</ul>
<p><strong>Reach for LLM Council when:</strong></p>
<ul>
<li><p>You're a human doing hard thinking (reading, writing, analyzing) and you want to <em>see</em> how the frontier disagrees before deciding.</p>
</li>
<li><p>You want full local control, your own API keys, your own model list.</p>
</li>
<li><p>You're using it as an evaluation harness to compare models on your own prompts.</p>
</li>
</ul>
<p><strong>Reach for neither when:</strong></p>
<ul>
<li><p>The task is trivial and one frontier model already crushes it — don't pay the coordination tax.</p>
</li>
<li><p>The task is highly domain-specific and a fine-tuned small model would beat any generalist committee.</p>
</li>
</ul>
<hr />
<h2>6. The bigger picture</h2>
<p>Both projects are pointing at the same thing everyone in the field has quietly agreed on: <strong>the "one giant model" era is peaking, and the next axis of progress is coordination</strong>.</p>
<ul>
<li><p>Karpathy is showing the <em>shape</em> — fan out, review, synthesize, keep humans in the loop.</p>
</li>
<li><p>Sakana is showing the <em>product</em> — hide the shape behind an API, learn the policy, and sell the outcome.</p>
</li>
</ul>
<p>If Fugu's benchmarks hold up in independent evaluation and if the "no fee stacking" pricing survives contact with reality, this is a real category, not a demo. And if it <em>does</em> become a category, expect every hyperscaler to ship their own "council behind one endpoint" within a year.</p>
<p>Meanwhile, the LLM Council repo will keep being what it always was — a tiny, transparent, hackable tool that shows you the <em>idea</em> in 800 lines of Python and React.</p>
<p>Both are worth understanding. Only one is worth putting behind your production traffic today. Which one depends entirely on whether you're building for a human or for an agent.</p>
<hr />
<h2>References</h2>
<ul>
<li><p><a href="https://sakana.ai/fugu">Sakana Fugu — official product page</a></p>
</li>
<li><p><a href="https://arxiv.org/abs/2512.04695">TRINITY: An Evolved LLM Coordinator (arXiv 2512.04695)</a></p>
</li>
<li><p><a href="https://arxiv.org/abs/2512.04388">Learning to Orchestrate Agents in Natural Language with the Conductor (arXiv 2512.04388)</a></p>
</li>
<li><p><a href="https://github.com/karpathy/llm-council">karpathy/llm-council on GitHub</a></p>
</li>
<li><p><a href="https://x.com/karpathy/status/1990577951671509438">Andrej Karpathy — reading books with LLMs (tweet)</a></p>
</li>
</ul>
<hr />
<h2>About the Author</h2>
<p><strong>Siddhesh Prabhugaonkar</strong> is a <strong>Generative AI &amp; Agentic AI Enablement and Adoption Specialist</strong> with two decades as an Architect, Consultant, and Trainer across IT, Cloud, and Generative AI. He is a <strong>Microsoft Certified Trainer</strong>, a <strong>Pluralsight Instructor</strong>, and helps enterprises move from GenAI curiosity to production adoption at scale.</p>
<p>His consulting and training practice spans <strong>GenAI, Azure, Microsoft Foundry, Claude, GitHub Copilot, Cursor, Windsurf</strong>, and modern full‑stack engineering (.NET, MEAN, MERN). Notable engagements include GenAI enablement for <strong>ADP</strong>, IoT platform consulting for <strong>IIT Bombay's E‑Yantra</strong> program, and early work on Microsoft's Repository platform (which later became <strong>Entity Framework</strong>).</p>
<blockquote>
<p><em>Empowering organizations and individuals to adopt, build, and scale with Generative AI, Cloud, and Modern Software Engineering.</em></p>
</blockquote>
<p><strong>Connect &amp; explore:</strong></p>
<ul>
<li><p>💼 LinkedIn — <a href="https://www.linkedin.com/in/siddheshprabhugaonkar">linkedin.com/in/siddheshprabhugaonkar</a></p>
</li>
<li><p>📝 Blog — <a href="https://azureauthority.in/">azureauthority.in</a></p>
</li>
<li><p>📬 Newsletter — <a href="https://cloud-authority.com/">cloud-authority.com</a></p>
</li>
<li><p>🎥 YouTube — <a href="https://www.youtube.com/c/SiddheshPrabhugaonkar">youtube.com/c/SiddheshPrabhugaonkar</a></p>
</li>
<li><p>🤝 Book a 1:1 on Topmate — <a href="https://topmate.io/siddheshp">topmate.io/siddheshp</a></p>
</li>
<li><p>🎓 Research Papers (Google Scholar) — <a href="https://scholar.google.com/citations?user=TuqOYtwAAAAJ&amp;hl=en">scholar.google.com</a></p>
</li>
</ul>
]]></content:encoded></item><item><title><![CDATA[From Sketch to Spec to Ship: Spec-Driven Development with Spec-Kit and GitHub Copilot]]></title><description><![CDATA[I wanted to build a Flappy Ghost game — a browser-based, zero-dependency HTML5 canvas game — but instead of just vibe-coding it with an AI, I challenged myself to do it properly using Specification-Dr]]></description><link>https://azureauthority.in/from-sketch-to-spec-to-ship-spec-driven-development-with-spec-kit-and-github-copilot</link><guid isPermaLink="true">https://azureauthority.in/from-sketch-to-spec-to-ship-spec-driven-development-with-spec-kit-and-github-copilot</guid><category><![CDATA[GitHub]]></category><category><![CDATA[github copilot]]></category><category><![CDATA[SDD]]></category><category><![CDATA[Spec-Driven-Development]]></category><category><![CDATA[spec-kit]]></category><dc:creator><![CDATA[Siddhesh Prabhugaonkar]]></dc:creator><pubDate>Tue, 23 Jun 2026 14:29:20 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/651bff05e4455a8ac9ec7688/bb4e3021-c0c1-4b3d-b9a5-bf92f653ddcd.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I wanted to build a Flappy Ghost game — a browser-based, zero-dependency HTML5 canvas game — but instead of just vibe-coding it with an AI, I challenged myself to do it properly using <strong>Specification-Driven Development (SDD)</strong> with <strong>Spec-Kit</strong> and <strong>GitHub Copilot</strong> inside VS Code. This post walks through exactly what I did, why SDD matters, and how the whole thing came together.</p>
<hr />
<h2>The Problem with "Just Prompt It"</h2>
<p>When most developers use AI coding assistants, the workflow looks like this:</p>
<blockquote>
<p>Describe what you want → get code → tweak it → ship it</p>
</blockquote>
<p>It works, kind of. But you end up with code that has no traceable spec, no acceptance criteria, and no plan. You can't answer "does this code actually match what was intended?" because there was never a written intention to begin with. That's vibe-coding — and it gets messy fast.</p>
<hr />
<h2>What Is Specification-Driven Development (SDD)?</h2>
<p>SDD flips the order. You write the <strong>specification first</strong>, then derive the implementation from it — with AI doing the heavy lifting at every step, but always anchored to a written artifact you've reviewed and approved.</p>
<p>The SDD cycle looks like this:</p>
<pre><code class="language-plaintext">Visual Mockup / Idea
        │
        ▼
  spec.md      ← BDD acceptance criteria (Given/When/Then)
        │
        ▼
  plan.md      ← Architecture, technical decisions, file structure
        │
        ▼
  tasks.md     ← Checkbox task list, ordered and granular
        │
        ▼
  Code         ← Generated against the tasks, traceable to spec
        │
        ▼
  Validate     ← Does the code satisfy spec.md acceptance criteria?
</code></pre>
<p>At each phase, a <strong>human reviews and approves</strong> the artifact before the next phase begins. Copilot doesn't proceed until you say so. This enforces spec-first discipline and gives you traceability from every line of code back to a user story.</p>
<hr />
<h2>What Is Spec-Kit?</h2>
<p><a href="https://github.github.com/spec-kit">Spec-Kit</a> is an open-source CLI tool from GitHub that scaffolds the SDD workflow directly into your project. It installs a set of <strong>Copilot agent files</strong> (<code>.github/agents/</code>) that extend GitHub Copilot Chat with slash commands like <code>/speckit.specify</code>, <code>/speckit.plan</code>, <code>/speckit.tasks</code>, and <code>/speckit.implement</code>.</p>
<p>Once initialised, your project has a structured <code>.specify/</code> folder with templates, scripts, memory (a project constitution), and integration configs. Copilot reads the agent files automatically — no extra configuration needed.</p>
<hr />
<h2>My Scenario: Flappy Ghost 👻</h2>
<p>I had a hand-drawn mockup image of a Flappy Bird-style game with a ghost as the player. The design showed:</p>
<ul>
<li><p>Light blue sketchy/pencil-textured background</p>
</li>
<li><p>Green pipes extending from top and bottom edges</p>
</li>
<li><p>Rounded cloud platforms as mid-field obstacles</p>
</li>
<li><p>A dark floor strip with a score HUD: <code>Score: X | High: X</code></p>
</li>
<li><p>A ghost emoji (<code>👻</code>) as the player character</p>
</li>
</ul>
<p>The goal: a single self-contained <code>index.html</code> — no frameworks, no build tools, no CDN links. Just vanilla HTML5 Canvas and JavaScript.</p>
<hr />
<h2>Step-by-Step: How I Built It</h2>
<h3>Step 1 — Install the Tooling</h3>
<p>Spec-Kit's CLI (<code>specify</code>) is installed from GitHub, not PyPI. Use <code>uv</code> (a fast Python package manager):</p>
<pre><code class="language-powershell"># Install uv (Windows)
winget install --id=astral-sh.uv -e

# Install specify CLI (check releases for latest tag)
uv tool install specify-cli --from git+https://github.com/github/spec-kit.git@v0.11.5

# Verify
specify version
</code></pre>
<blockquote>
<p>⚠️ <code>pip install speckit</code> installs a completely unrelated spectral analysis library. Always use the <code>uv tool install</code> command above.</p>
</blockquote>
<hr />
<h3>Step 2 — Initialise the Project</h3>
<pre><code class="language-powershell">mkdir flappy-ghost
cd flappy-ghost
git init
specify init flappy-ghost --integration copilot
code .
</code></pre>
<p>This scaffolds everything into <code>.github/agents/</code>, <code>.github/prompts/</code>, and <code>.specify/</code>. Open <code>.github/agents/</code> — you'll see agent files like <code>speckit.specify.agent.md</code>, <code>speckit.plan.agent.md</code>, etc. These extend Copilot Chat with the <code>/speckit.*</code> slash commands.</p>
<hr />
<h3>Step 3 — Generate the Spec from the Mockup Image</h3>
<p>This is where SDD gets interesting. I opened <strong>GitHub Copilot Chat</strong> in Agent mode (<code>Ctrl+Alt+I</code>), selected the <code>speckit.specify</code> agent, attached my mockup image, and described the feature:</p>
<pre><code class="language-plaintext">Use the attached sketch as the visual specification for a browser-based 
HTML5 canvas game called "Flappy Ghost".

The game must match everything visible in the image:
- Hand-drawn / sketchy art style for all visuals
- Small ghost emoji as the player character
- Green pipe obstacles from top and bottom
- Rounded cloud platforms as mid-field obstacles
- Light blue pencil-stroke textured background
- Dark grey floor strip at the bottom
- Score HUD: "Score: X | High: X"
- Spacebar or click to flap; gravity pulls down
- Collision with pipes, clouds, floor, or ceiling ends the game
</code></pre>
<p>Copilot generated <code>features/001-flappy-ghost-game/spec.md</code> — a full BDD spec with user stories and acceptance scenarios. For example:</p>
<blockquote>
<p><strong>Given</strong> the game is running and the player does nothing, <strong>When</strong> each frame advances, <strong>Then</strong> the ghost's vertical velocity increases by the gravity constant until it reaches terminal velocity.</p>
</blockquote>
<p>Seven user stories covered: flight loop, pipe obstacles, cloud platforms, floor/ceiling boundaries, score tracking, game over/restart, and the hand-drawn art style.</p>
<pre><code class="language-powershell">git add .
git commit -m "feat(spec): flappy-ghost-game specification"
</code></pre>
<hr />
<h3>Step 4 — Generate the Implementation Plan</h3>
<p>Back in Copilot Chat:</p>
<pre><code class="language-plaintext">/speckit.plan The game is a single self-contained index.html file.
Use vanilla HTML5 Canvas and JavaScript — no frameworks or build tools.
</code></pre>
<p>Copilot read <code>spec.md</code> and wrote <code>plan.md</code> covering canvas setup, the <code>requestAnimationFrame</code> game loop, physics model (gravity constant + flap impulse), pipe and cloud spawning, collision detection (AABB), score tracking with <code>localStorage</code>, and the sketchy rendering approach.</p>
<pre><code class="language-powershell">git add .
git commit -m "feat(plan): flappy-ghost-game implementation plan"
</code></pre>
<hr />
<h3>Step 5 — Break It into Tasks</h3>
<pre><code class="language-plaintext">/speckit.tasks
</code></pre>
<p>Copilot produced <code>tasks.md</code> — a numbered checkbox list:</p>
<ul>
<li><p>[ ] T1: Create <code>index.html</code> with canvas element and score HUD</p>
</li>
<li><p>[ ] T2: Implement game loop with <code>requestAnimationFrame</code></p>
</li>
<li><p>[ ] T3: Render ghost as 👻 emoji on canvas (34px, velocity-rotated)</p>
</li>
<li><p>[ ] T4: Implement gravity and flap physics</p>
</li>
<li><p>[ ] T5: Pipe spawning at random heights with fixed gap</p>
</li>
<li><p>[ ] T6: Cloud platform spawning (white rounded rects, mid-screen)</p>
</li>
<li><p>[ ] T7: Collision detection (ghost vs pipes, clouds, floor, ceiling)</p>
</li>
<li><p>[ ] T8: Score increment on pipe pass; high score via <code>localStorage</code></p>
</li>
<li><p>[ ] T9: Game-over overlay with restart prompt</p>
</li>
<li><p>[ ] T10: Sketchy background — pencil-line pattern pre-rendered to off-screen canvas</p>
</li>
</ul>
<pre><code class="language-powershell">git add .
git commit -m "feat(tasks): flappy-ghost-game task breakdown"
</code></pre>
<hr />
<h3>Step 6 — Implement</h3>
<pre><code class="language-plaintext">/speckit.implement
</code></pre>
<p>Copilot worked through <code>tasks.md</code> top-to-bottom and generated <code>index.html</code>. When the first pass looked too clean, I followed up with a targeted style prompt:</p>
<pre><code class="language-plaintext">The art style must look hand-drawn:
- strokeRect with ±3px random jitter on pipes and floor
- Ghost as 👻 at 34px, rotated proportionally to vertical velocity
- Background: #a8d5e8 fill, overlaid with diagonal pencil strokes (off-screen canvas)
- Clouds: white rounded rectangles with canvas shadow blur glow
- Floor: #2d2d2d strip, 40px tall
- HUD: monospace, white, centred in the floor strip
</code></pre>
<p>Result: a working <code>index.html</code> that opens directly in the browser, no server needed.</p>
<hr />
<h3>Step 7 — Validate Against the Spec</h3>
<p>I opened <code>index.html</code> in the browser and manually tested against each acceptance scenario in <code>spec.md</code>:</p>
<ul>
<li><p>✅ Press Space → ghost flaps upward, gravity pulls it back down</p>
</li>
<li><p>✅ Fly into a pipe → Game Over triggers</p>
</li>
<li><p>✅ Pass through a gap → score increments</p>
</li>
<li><p>✅ Reload the page → high score persists via <code>localStorage</code></p>
</li>
<li><p>✅ Background has visible pencil-stroke texture</p>
</li>
<li><p>✅ Ghost rotates with velocity direction</p>
</li>
</ul>
<p>Every test traced back to a specific Given/When/Then in the spec.</p>
<hr />
<h2>The Key Insight: Traceability</h2>
<p>Without SDD, you have code. With SDD, you have:</p>
<ul>
<li><p><strong>spec.md</strong> → what the software must do (acceptance criteria)</p>
</li>
<li><p><strong>plan.md</strong> → how it will be built (architecture decisions)</p>
</li>
<li><p><strong>tasks.md</strong> → what was built and in what order</p>
</li>
<li><p><strong>code</strong> → the implementation, traceable to every task above</p>
</li>
</ul>
<p>If a bug appears, you don't just fix it — you check which acceptance scenario it violates and trace it back. That's the discipline SDD enforces.</p>
<hr />
<h2>Spec-Kit Slash Commands Reference</h2>
<table>
<thead>
<tr>
<th>Command</th>
<th>Purpose</th>
</tr>
</thead>
<tbody><tr>
<td><code>/speckit.constitution</code></td>
<td>Establish project coding standards</td>
</tr>
<tr>
<td><code>/speckit.specify</code></td>
<td>Create feature spec from description or image</td>
</tr>
<tr>
<td><code>/speckit.clarify</code></td>
<td>Surface ambiguities before planning</td>
</tr>
<tr>
<td><code>/speckit.plan</code></td>
<td>Generate technical implementation plan</td>
</tr>
<tr>
<td><code>/speckit.analyze</code></td>
<td>Cross-check spec, plan, and tasks for consistency</td>
</tr>
<tr>
<td><code>/speckit.tasks</code></td>
<td>Break plan into actionable task checklist</td>
</tr>
<tr>
<td><code>/speckit.implement</code></td>
<td>Execute tasks and generate code</td>
</tr>
<tr>
<td><code>/speckit.checklist</code></td>
<td>Generate quality checklist for the feature</td>
</tr>
<tr>
<td><code>/speckit.converge</code></td>
<td>Assess codebase against spec and append remaining work</td>
</tr>
</tbody></table>
<hr />
<h2>Final Thoughts</h2>
<p>SDD with Spec-Kit didn't slow me down — it made every AI-generated output useful because it was grounded in something I had reviewed. The mockup image became a living specification. The spec became the plan. The plan became tasks. The tasks became working code.</p>
<p>If you're using GitHub Copilot and finding that "just prompt it" leaves you with code you can't justify, this workflow is worth trying. The spec is the contract — everything else follows from it.</p>
<hr />
<p><em>Try it yourself:</em> <a href="https://github.github.com/spec-kit"><em>github.github.com/spec-kit</em></a></p>
]]></content:encoded></item><item><title><![CDATA[From Instructions to Intentions: The Next Programming Paradigm]]></title><description><![CDATA["Programs must be written for people to read, and only incidentally for machines to execute." — Harold Abelson & Gerald Jay Sussman, Structure and Interpretation of Computer Programs


This essay star]]></description><link>https://azureauthority.in/from-instructions-to-intentions-the-next-programming-paradigm</link><guid isPermaLink="true">https://azureauthority.in/from-instructions-to-intentions-the-next-programming-paradigm</guid><category><![CDATA[Functional Programming]]></category><category><![CDATA[Object Oriented Programming]]></category><category><![CDATA[programming paradigm]]></category><category><![CDATA[intent oriented progra]]></category><category><![CDATA[Spec-Driven-Development]]></category><category><![CDATA[structural programming]]></category><dc:creator><![CDATA[Siddhesh Prabhugaonkar]]></dc:creator><pubDate>Sun, 10 May 2026 15:09:56 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/651bff05e4455a8ac9ec7688/ebd059bc-af2b-477f-9115-7031d18880e3.jpg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<hr />
<blockquote>
<p>"Programs must be written for people to read, and only incidentally for machines to execute." — Harold Abelson &amp; Gerald Jay Sussman, <em>Structure and Interpretation of Computer Programs</em></p>
</blockquote>
<hr />
<p>This essay started as a conversation, not a thesis.</p>
<p>My friend Zia and I had been going deep on a question that sounds deceptively simple: <strong>what do AI tools actually do in programming and software engineering?</strong> Are they clever autocomplete? Are they a new kind of collaborator? Are they replacing the programmer, augmenting them, or fundamentally changing what the job even is?</p>
<p>We kept circling back to history. Because if you want to understand whether something is genuinely new, you have to understand what came before — not just the tools, but the ideas. The people who shaped how we think about computation in the first place.</p>
<p>Somewhere in that conversation, Zia proposed something that I haven't been able to stop thinking about since. He suggested that what we are witnessing is not just a new tool or a new workflow, but the emergence of a new programming paradigm — one that deserves its own name: <strong>Intent-Oriented Programming</strong>.</p>
<p>That lineage runs through something most working engineers have touched but few have named as a philosophical moment: specification-driven development — the quiet, decade-long rehearsal that made Zia's proposal possible.</p>
<p>This essay is my attempt to trace that lineage, to understand why Zia's proposal might be right, and to think honestly about what it means.</p>
<hr />
<h2>Part One: The Founding Fathers of Thought</h2>
<p>Before there were programs, there were ideas about what programs could even be. Three figures loom largest in that prehistory, and understanding them is essential for grasping what is genuinely radical about Zia's proposal.</p>
<hr />
<h3>Alonzo Church — Computation as Transformation</h3>
<p>In 1936, a Princeton mathematician named <strong>Alonzo Church</strong> published a formal system for expressing computation using only functions and their applications. He called it the <strong>lambda calculus</strong>. No loops. No mutable variables. No state. Just functions taking inputs and returning outputs, composed together in arbitrarily complex ways.</p>
<p>Church was trying to answer a fundamental question — what does it mean to <em>compute</em> something? — and his answer was radical: computation is transformation. You take a value, apply a rule, and get a new value. Everything else is notation.</p>
<p>The lambda calculus is the theoretical bedrock of functional programming. Haskell, Lisp, Erlang, and much of what drives modern language design trace their intellectual lineage directly to Church's 1936 paper. When you use <code>map</code>, <code>filter</code>, or <code>reduce</code> in Python, you are thinking, in some small way, the way Alonzo Church thought.</p>
<p><strong>What would Church make of AI agents?</strong></p>
<p>It is tempting to imagine him horrified — all that non-determinism, all those side effects, all that stochastic messiness. But I think he would be more interested than appalled. The lambda calculus was, at its heart, a system for expressing transformations <em>without</em> specifying the mechanism. You declare <em>what</em> the transformation is; the system figures out <em>how</em> to apply it. That is, in spirit, exactly what intent-oriented systems do. Church might see in large language models an impure but fascinatingly powerful realisation of something he glimpsed theoretically: computation that operates on meaning rather than symbols alone.</p>
<hr />
<h3>Edsger W. Dijkstra — Programming as Proof</h3>
<p>If Church gave us the theory, <strong>Edsger W. Dijkstra</strong> gave us the conscience.</p>
<p>Dijkstra was Dutch, combative, deeply principled, and constitutionally incapable of tolerating sloppiness. He is best known for two things: the shortest-path algorithm that bears his name, and a lifelong campaign for what he called the discipline of programming — the idea that code should be <em>proven correct</em>, not merely <em>tested until it seems okay</em>.</p>
<p>He is the one who declared that the <code>GOTO</code> statement should be considered harmful, in a 1968 letter that changed how an entire generation thought about program structure. He championed structured programming — clear, composable control flow, not arbitrary jumps. He argued that programs should be built from their correctness proofs, not the other way around. You should know <em>why</em> a program works before you run it.</p>
<p>Dijkstra was famously withering about testing as a substitute for reasoning:</p>
<blockquote>
<p>"Program testing can be used to show the presence of bugs, but never to show their absence."</p>
</blockquote>
<p>He believed software engineering was, at its core, a mathematical discipline — and that the failure to treat it as such was the root cause of nearly every software disaster.</p>
<p><strong>What would Dijkstra make of AI agents?</strong></p>
<p>Almost certainly appalled — and he would have had a point. The AI approach to software is fundamentally empirical where Dijkstra wanted deductive. You run the code, see if it works, iterate. You test against examples. You accept that the system might sometimes be wrong. These are precisely the habits of mind Dijkstra spent his career railing against.</p>
<p>But here is the tension: his deepest goal was to close the gap between what a programmer <em>intended</em> and what the code <em>did</em>. Intent-Oriented Programming attempts to close that gap differently — by making intent itself the specification, and delegating verification to automated systems. He might find the outputs interesting while remaining appalled by the process. That sounds about right for Dijkstra.</p>
<hr />
<h3>Alan Kay — Programming as Medium</h3>
<p><strong>Alan Kay</strong> is the third figure, and perhaps the most visionary. Kay, working at Xerox PARC in the 1970s, did not invent object-oriented programming in any strict sense — Simula came earlier — but he gave it its modern philosophy and ambition.</p>
<p>Kay's insight was that the computer was, above all else, a <strong>medium for thought</strong>. Not a calculator, not a business machine — a medium, like paper or paint, through which humans could express and explore ideas. His creation, Smalltalk, was a language where <em>everything</em> is an object, where objects communicate by sending messages, and where the programmer models the world rather than describes procedures.</p>
<p>Object-oriented programming, in Kay's view, was not primarily about code reuse or encapsulation. It was about <strong>expressiveness</strong> — giving programmers a language whose structure matched the structure of the problems they were solving.</p>
<p>Kay has spent decades arguing that we are not nearly ambitious enough about computing. He has consistently maintained that the personal computer revolution barely scratched the surface — that truly powerful computing should feel like learning to read and write, transformative in a civilisational sense.</p>
<p><strong>What would Alan Kay make of AI agents?</strong></p>
<p>Of all three figures, Kay is the most likely to be genuinely excited — and the most likely to think we are still thinking too small. He would probably note, with characteristic impatience, that we have built very powerful autocomplete and called it intelligence. But he would also see in natural-language interfaces the seed of something he has always wanted: computing truly accessible to anyone with an idea. His question would not be whether AI can write code, but whether it can help people <em>think</em>. Whether it expands the range of who gets to be a computational thinker.</p>
<p>That has always been Kay's deepest question. Zia's paradigm offers his most compelling answer yet.</p>
<hr />
<h2>Part Two: The Long Arc of Abstraction</h2>
<p>With those three figures as anchors, the history of programming paradigms becomes a coherent story rather than a series of disconnected fashions. Each shift is not just a new way to write code — it is a new way to think about computation. And each one moves in the same direction.</p>
<img src="https://cdn.hashnode.com/uploads/covers/651bff05e4455a8ac9ec7688/ff27245e-d4f2-412d-a1be-5124bce9848c.png" alt="" style="display:block;margin:0 auto" />

<hr />
<h3>1940s: Machine Code — Speaking the Machine's Language</h3>
<p>The earliest programmers had no abstraction at all. They wrote binary instructions directly — specific patterns of ones and zeros mapping to specific processor operations. The mental model required was that of the machine itself: registers, memory addresses, instruction cycles.</p>
<p>This was enormously powerful and completely inaccessible to anyone who had not spent years learning a specific architecture. Knowledge did not transfer. Humanity did not transfer. You were, in a very real sense, thinking like a circuit.</p>
<hr />
<h3>1950s: Assembly — A First Layer of Humanity</h3>
<p>Assembly gave programmers human-readable mnemonics: <code>MOV</code>, <code>ADD</code>, <code>JMP</code>. Each instruction still mapped one-to-one to a machine operation, but you could at least read code aloud and have it sound vaguely like instructions. The assembler did the mechanical work of translating.</p>
<p>This is the first instance of a pattern that would repeat many times: <strong>humans offload mechanical translation to a program, freeing themselves to think at a higher level.</strong> The assembler was, in a sense, the first coding assistant.</p>
<hr />
<h3>1960s–70s: Structured Programming — The Dijkstra Revolution</h3>
<p>Structured programming replaced arbitrary jumps and <code>goto</code>s with disciplined control flow: <code>if/then/else</code>, <code>for</code>, <code>while</code>, functions. Languages like C, Pascal, and ALGOL made programs readable in a way they never had been.</p>
<p>The mental model shifted from "instructions for a machine" to "a logical argument expressed in code." You could read a well-structured program and follow its reasoning.</p>
<p>This is when programming became a profession in the full sense. The skills were teachable, the concepts transferable, the output legible to anyone trained in the discipline.</p>
<hr />
<h3>1970s–80s: Object-Oriented Programming — The Kay Revolution</h3>
<p>Object-oriented programming made the programmer a modeller rather than a sequencer. Instead of describing procedures, you described entities — their properties, their behaviours, the messages they exchange.</p>
<p>The mental model: the program is a <em>society of interacting objects</em>. Understanding a system means understanding its inhabitants and their relationships, not the precise instruction sequence that will execute.</p>
<p>This shift made very large systems manageable and made collaboration possible at scale. It is still the dominant paradigm in most professional software development.</p>
<hr />
<h3>2000s–2020s: Specification-Driven Development — The Rehearsal Nobody Named</h3>
<p>Somewhere in this period, a quieter revolution was building — one that did not arrive with a manifesto or a famous letter, but accumulated gradually across tools, frameworks, and practices that each pointed in the same direction.</p>
<p><strong>Behaviour-Driven Development (BDD)</strong>, introduced by Dan North in 2006, was one of the clearest expressions of it. BDD asked teams to write tests before code — but not in programming syntax. In plain English. Structured, yes, but readable by anyone:</p>
<pre><code class="language-gherkin">Given a logged-in user
When they submit the checkout form
Then a payment should be processed
And a confirmation email should be sent
</code></pre>
<p>The specification <em>was</em> the test. The specification <em>was</em>, in some sense, the program. The code that followed was an implementation detail.</p>
<p><strong>GraphQL</strong> (2015) made the same move at the data layer. Instead of writing queries that described <em>how</em> to join tables, you declared the <em>shape</em> of the data you wanted. The execution engine figured out the rest.</p>
<p><strong>Terraform</strong> and infrastructure-as-code did it for systems. You wrote a description of the infrastructure you wanted to exist — servers, networks, permissions — and the tool reconciled the current state of the world with your specification. You were not scripting actions; you were declaring outcomes.</p>
<p><strong>Advanced type systems</strong> — in Haskell, Rust, TypeScript, and others — took it further still. A sufficiently expressive type signature is a machine-checkable specification. When you encode your business rules in types, you are not writing comments or documentation. You are writing a formal description of what is and is not permitted, and letting the compiler enforce it. Making illegal states literally unrepresentable.</p>
<p>What unites all of these is a single principle: <strong>the distance between the human's description of what they want and the system's execution of it should be as small as possible.</strong> The programmer's job is to specify; the tooling's job is to satisfy.</p>
<p>This is specification-driven development. It was not called a paradigm, and perhaps that is why it has been underestimated. But in retrospect, it was the dress rehearsal for everything that follows.</p>
<img src="https://cdn.hashnode.com/uploads/covers/651bff05e4455a8ac9ec7688/7f2371b7-2723-4749-945b-b167203616bc.png" alt="" style="display:block;margin:0 auto" />

<p><em>In specification-driven development, the human describes; the toolchain executes. The gap narrows — but the human is still writing in formal notation. Intent-Oriented Programming removes that last constraint.</em></p>
<p>Dijkstra would have admired the rigour of type-driven development — it is the closest practical programming has come to his vision of programs proven correct before they run. Church would have recognised BDD's declarative structure as a cousin of the lambda calculus: express the transformation, not the mechanism. Kay would have appreciated that specification languages were getting closer to natural thought — but would have noted, impatiently, that they were still formal languages. Still notation.</p>
<p>That impatience is precisely what Zia's proposal answers.</p>
<hr />
<h2>Part Three: What AI Tools Actually Do</h2>
<p>This is the heart of what Zia and I kept returning to. Strip away the hype, the breathless announcements, the fears — what do AI tools <em>actually</em> do in the practice of software engineering?</p>
<p>The answer is more interesting than either optimists or pessimists usually acknowledge.</p>
<hr />
<h3>What They Do Well</h3>
<p><strong>AI tools are compression engines for tacit knowledge.</strong> When you ask an AI assistant to write a debounce function, scaffold a Next.js project, or write a regex for email validation — you are not asking it to think. You are asking it to recall, pattern-match, and assemble. It does this at a scale and speed no human could match, drawing on the accumulated written knowledge of the entire software engineering profession.</p>
<p>For this category of work — boilerplate, scaffolding, standard patterns — AI tools are genuinely transformative. Work that used to take an hour takes two minutes.</p>
<p><strong>They are remarkably good at translation.</strong> They bridge gaps between a vague description and a plausible implementation, between a codebase in Python and one in Go, between undocumented code and readable comments. In each case, they are doing the same thing: closing the gap between a human expression and a formal computational one. This is, in other words, what specification-driven tooling was already doing — but with natural language as the interface instead of Gherkin or a type signature.</p>
<p><strong>They function as thinking partners.</strong> Not oracles — they are wrong often enough that uncritical trust is dangerous — but as rubber ducks with opinions. Explaining your problem to an AI assistant, getting a response that misses the point, and then articulating <em>why</em> it missed the point is often enough to unlock the solution yourself. The Socratic function, it turns out, does not require genuine understanding to be useful.</p>
<hr />
<h3>What They Do Not Do</h3>
<p>AI tools do not understand your problem in any deep sense. They do not know that your authentication system is part of a healthcare product with regulatory constraints. They do not know that your "simple refactor" is happening the week before a major launch. They do not know the history of the codebase, the political dynamics of the team, or the technical debt accumulated three years ago that must now be carefully navigated.</p>
<p><strong>Context that is not written down is invisible to them.</strong></p>
<p>This is the first and most important limitation. Most of the important knowledge in software engineering is never written down. It lives in heads, in habits, in the careful judgments engineers make a hundred times a day without articulating them. This was true of BDD specifications too — a Gherkin scenario only captures what someone thought to write down. AI amplifies that problem rather than solves it.</p>
<p>AI tools also do not have aesthetic judgment in any meaningful sense. They produce code that works. They rarely produce code that is <em>beautiful</em> — structured in a way that will be easy to extend, easy to read, easy to reason about six months from now. The craft of software engineering remains stubbornly human.</p>
<p>And AI tools do not tell you what to build. They help you build what you ask for. Whether what you are asking for is the right thing — whether it solves the actual problem, serves the actual users, creates the actual value — is entirely outside their scope.</p>
<hr />
<h3>The New Shape of the Work</h3>
<p>What changes is the distribution of where human attention goes.</p>
<img src="https://cdn.hashnode.com/uploads/covers/651bff05e4455a8ac9ec7688/b579c66c-b415-4e8c-ae5a-ea932926c767.png" alt="" style="display:block;margin:0 auto" />

<p><em>Red: where most human energy used to go. Green: where it goes in the new model.</em></p>
<p>In traditional software engineering, a significant portion of a programmer's time was spent on mechanical translation — turning a mental model of desired behaviour into correct, syntactically valid, working code. Debugging syntax errors. Looking up API signatures. Writing boilerplate.</p>
<p>AI tools absorb much of that. The programmer's attention shifts upstream and downstream. <strong>Upstream:</strong> more time thinking about <em>what</em> to build and <em>why</em>, designing the system's shape before any code is written. <strong>Downstream:</strong> more time evaluating the output, reading generated code critically, catching subtle errors that come not from syntax but from misunderstood requirements.</p>
<p>The job does not disappear. It shifts. And the skills that matter shift with it.</p>
<hr />
<h2>Part Four: Zia's Proposal — Intent-Oriented Programming</h2>
<p>All of which builds to the insight at the heart of this essay — the one that emerged from Zia's thinking and that I haven't been able to get out of my head since he articulated it.</p>
<p>We are at the beginning of a genuine paradigm shift. And Zia's name for it is exactly right: <strong>Intent-Oriented Programming</strong>.</p>
<hr />
<h3>The Proposal</h3>
<p>In every previous paradigm, the fundamental act of programming was <em>translation</em>. You took a human intention — a desired behaviour, a business rule, a computational goal — and expressed it in increasingly formal terms until it became something a machine could execute. The programmer was the translator.</p>
<p>Specification-driven development narrowed that gap dramatically. BDD got close enough that a non-programmer could write a test. A type system got close enough that a domain expert could read the constraints. But the notation was still formal. The last mile was still a cliff.</p>
<p>In Intent-Oriented Programming, the programmer does not translate. They express the intent directly — in something close to natural language — and the system handles the translation entirely.</p>
<img src="https://cdn.hashnode.com/uploads/covers/651bff05e4455a8ac9ec7688/f655c4e4-e917-4216-a284-b89d72d4d65e.png" alt="" style="display:block;margin:0 auto" />

<p>This is not merely a better interface to the old paradigms. It is a different relationship between the human and the computation. <strong>The code is no longer the product. It is the byproduct.</strong> The thing being designed is the behaviour. The thing being built is the outcome.</p>
<p>Specification-driven development was the crucial bridge. It proved, in practice, that the <em>specification</em> could be the primary artifact — that code was already becoming a downstream concern. BDD showed that English sentences could drive test suites. Type systems showed that formal descriptions of intent could catch errors before execution. Terraform showed that declaring desired state was superior to scripting transitions. Each of these was IOP with the last translation step still intact. What AI agents remove is that final step — the one where a human still had to express intent in formal notation. The notation dissolves. The intent remains.</p>
<hr />
<h3>What This Inherits from the Founding Figures</h3>
<p>The proposal does not come from nowhere. It is the natural conclusion of a lineage.</p>
<p><strong>Church</strong> built a system for expressing transformations without specifying the mechanism — declare the <em>what</em>, the system handles the <em>how</em>. Zia's paradigm takes that principle from mathematical functions and applies it to entire software systems.</p>
<p><strong>Dijkstra's</strong> deepest concern — beneath all the rigour and combativeness — was the gap between what a programmer intended and what the code did. Specification-driven development was the first serious practical attempt to close it. Intent-Oriented Programming closes it further still: by making the intent itself the specification, in natural language rather than formal notation. The goal is the same; the mechanism is radically different.</p>
<p><strong>Kay</strong> wanted computing to be a medium accessible to anyone with an idea, not just trained engineers. Specification-driven development got closer — BDD let business analysts write tests, Terraform let infrastructure teams declare systems. But they still required learning a notation. Intent-Oriented Programming removes that last barrier. The wall between having an idea and building it is lower than it has ever been.</p>
<img src="https://cdn.hashnode.com/uploads/covers/651bff05e4455a8ac9ec7688/f675c369-04db-4e09-a66a-dfcfc121f420.png" alt="" style="display:block;margin:0 auto" />

<hr />
<h3>The Core Skills of the New Paradigm</h3>
<p>The skills that define a good practitioner of Intent-Oriented Programming are not the same as those of a good traditional programmer — though the overlap is significant.</p>
<p><strong>Specification precision</strong> becomes central. Vague intentions produce vague results. The ability to describe what you want precisely enough for an AI to interpret correctly — including constraints, edge cases, and explicit what-not-to-dos — is the new fundamental skill. It is, in some sense, a return to Dijkstra's insistence on rigour and BDD's discipline of writing acceptance criteria before writing code, but now expressed in natural language rather than formal notation.</p>
<p><strong>Critical evaluation of outputs</strong> becomes essential. The AI generates; the human judges. Reading code you did not write, assessing whether it actually does what you intended, catching subtle misinterpretations that look like they work but quietly don't — this requires deep technical knowledge. The programmer who cannot <em>read</em> is not safe in a world where they are no longer <em>writing</em>.</p>
<p><strong>Systems thinking</strong> becomes more important, not less. When individual functions are cheap to generate, the value of the human is in understanding how they fit together — the architecture, the data flows, the failure modes, the evolution paths. This is the skill that specification-driven development already demanded of its best practitioners.</p>
<p><strong>Ethical and contextual judgment</strong> cannot be delegated at all. The AI does not know what should be built. It does not know who will be affected, what the risks are, what the downstream consequences might be. That knowledge is irreducibly human.</p>
<hr />
<h3>Concerns Worth Sitting With</h3>
<p>Zia's paradigm is not a clean win. There are real costs that deserve honest acknowledgment.</p>
<p><strong>Legibility risk.</strong> When code is generated, the chain of accountability is murkier. A programmer who did not write a piece of code may not understand it well enough to debug it when it breaks. Generated code tends to be correct but not beautiful — functional but opaque. The profession will need new practices for understanding and maintaining code that nobody authored. Specification-driven development had an early version of this problem — Gherkin scenarios could drift from the actual code they were meant to describe. With AI generation, the drift can be deeper and harder to detect.</p>
<p><strong>Specification errors as the new bug class.</strong> Syntax errors nearly disappear. In their place comes a subtler and more dangerous failure mode: the system that does precisely what you asked, but not what you <em>wanted</em>. These bugs are hard to detect because the code is correct; the problem lies in the gap between specification and true intention. This is Dijkstra's nightmare, wearing a new costume. BDD practitioners already knew this problem — a scenario can be green and still be wrong, if it specifies the wrong thing. IOP amplifies the surface area.</p>
<p><strong>The tacit knowledge problem.</strong> As fewer programmers engage in the mechanical work of writing code, fewer develop the intuitions that come from that work. The deep understanding of how systems behave, what makes them fail, what makes them scale — much of that is learned by writing a lot of code and watching it break. If the code is generated, that learning path is disrupted. We do not yet know what replaces it.</p>
<p><strong>Concentration of capability.</strong> If building sophisticated software becomes dependent on access to powerful AI systems controlled by a small number of organisations, the democratisation story has a dark underside. The barrier to entry falls — but falls onto a foundation controlled by others.</p>
<hr />
<h3>The Spectrum, Not the Switch</h3>
<p>It would be wrong to present this as a binary. Intent-Oriented Programming is a direction, not a destination. Specification-driven development does not disappear — it becomes a layer within the new paradigm, available when precision demands it.</p>
<img src="https://cdn.hashnode.com/uploads/covers/651bff05e4455a8ac9ec7688/a579ee3f-b811-4922-9439-cb27d4e0e94a.png" alt="" style="display:block;margin:0 auto" />

<p>High-stakes systems — medical software, aviation control, financial infrastructure — will remain closer to the implementation end of the spectrum for a long time, likely anchored in specification-driven approaches where formal verification is still possible. The cost of a misunderstood specification is too high, and formal methods will need to mature considerably before pure intent can be trusted without rigorous checking.</p>
<p>Exploratory work, prototyping, and creative projects are already living in fully intent-oriented territory. The vast middle of professional software engineering is in transition, drifting rightward through the specification-driven zone and into the agentic one, and will be for a decade or more.</p>
<hr />
<h2>Part Five: What This Means</h2>
<p>The question Zia started with — what do AI tools <em>actually</em> do in programming? — has an answer that is more modest and more profound than either the hype or the fear suggests.</p>
<p>They are very good at mechanical translation. They absorb the rote work, the pattern matching, the boilerplate generation. They make the gap between intent and implementation smaller, faster, and cheaper to cross — continuing the work that specification-driven development began, but removing the requirement for formal notation entirely.</p>
<p>They do not replace judgment. They do not provide context. They do not tell you what to build or why it matters. They do not hold the ethical weight of the choices embedded in every system.</p>
<p>What they do is change the shape of the work — and that, over time, changes the shape of the profession, the shape of who can participate in it, and the shape of what it means to build software at all.</p>
<p>Every paradigm shift in the history of programming has done exactly this. Machine code gave way to assembly, which gave way to structured programming, which gave way to object-orientation, which gave way to specification-driven development, which is now giving way to intent-oriented programming. Each shift reduced the mechanical friction between human intent and computational outcome. Each shift changed who could participate.</p>
<p>Church understood computation as transformation. Dijkstra understood it as argument. Kay understood it as medium. The specification-driven era understood it as declaration. The synthesis Zia names — computation as <em>dialogue</em>, between human intent and machine execution, conducted in natural language — is the territory we are entering.</p>
<p>It is early. The systems are imperfect. The risks are real. The professional norms, the legal frameworks, the educational curricula — none of them have caught up yet.</p>
<p>But the direction is clear. And naming it, as Zia did in a single, clear-eyed observation halfway through a long and wandering conversation, is the first step toward navigating it wisely.</p>
<hr />
<p><em>This essay is the direct result of a deep conversation with my friend Zia. He was the one who proposed Intent-Oriented Programming as a distinct paradigm — the idea that we have crossed not just a tooling threshold but a conceptual one, that intent and outcome are becoming the primary interface between humans and computation. I am grateful for his thinking, and I hope this essay does justice to it. The elaborations, the historical detours, and any errors are entirely my own.</em></p>
<hr />
<h3>Further Reading</h3>
<ul>
<li><p>Alonzo Church, <a href="https://www.jstor.org/stable/2371045">"An Unsolvable Problem of Elementary Number Theory"</a> (1936)</p>
</li>
<li><p>Edsger W. Dijkstra, <a href="https://homepages.cwi.nl/~storm/teaching/reader/Dijkstra68.pdf">"Go To Statement Considered Harmful"</a> (1968)</p>
</li>
<li><p>Alan Kay, <a href="https://www.youtube.com/watch?v=oKg1hTOKu14">"The Computer Revolution Hasn't Happened Yet"</a> — OOPSLA '97 keynote</p>
</li>
<li><p>Harold Abelson &amp; Gerald Sussman, <a href="https://mitpress.mit.edu/9780262510677/structure-and-interpretation-of-computer-programs/"><em>Structure and Interpretation of Computer Programs</em></a> (1996)</p>
</li>
<li><p>Fred Brooks, <a href="https://www.oreilly.com/library/view/the-mythical-man-month/0201633662/"><em>The Mythical Man-Month</em></a> — still the most honest book about software engineering</p>
</li>
<li><p>Dan North, <a href="https://dannorth.net/introducing-bdd/">"Introducing BDD"</a> (2006) — the essay that made specifications executable</p>
</li>
<li><p>Martin Fowler, <a href="https://martinfowler.com/books/dsl.html"><em>Domain-Specific Languages</em></a> (2010) — how narrow languages narrow the gap between domain expert and implementation</p>
</li>
<li><p>Edwin Brady, <a href="https://www.manning.com/books/type-driven-development-with-idris"><em>Type-Driven Development with Idris</em></a> (2017) — the rigorous end of specification: types as proofs</p>
</li>
</ul>
]]></content:encoded></item><item><title><![CDATA[The Rise of the Forward Deployed Engineer: History, Myths, and Why It's Back]]></title><description><![CDATA[Executive Summary: The Forward Deployed Engineer (FDE) is often portrayed as a new, Palantir-coined role – but it actually emerges from decades of field-engineering traditions. In early enterprise com]]></description><link>https://azureauthority.in/the-rise-of-the-forward-deployed-engineer-history-myths-and-why-it-s-back</link><guid isPermaLink="true">https://azureauthority.in/the-rise-of-the-forward-deployed-engineer-history-myths-and-why-it-s-back</guid><category><![CDATA[FDE]]></category><category><![CDATA[Forward-Deployed Engineer]]></category><category><![CDATA[palantir]]></category><category><![CDATA[openai]]></category><category><![CDATA[consultant]]></category><dc:creator><![CDATA[Siddhesh Prabhugaonkar]]></dc:creator><pubDate>Sun, 10 May 2026 12:05:51 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/651bff05e4455a8ac9ec7688/747e9c86-e1d6-47b3-8af6-09296cc79e89.jpg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>Executive Summary:</strong> The <em>Forward Deployed Engineer</em> (FDE) is often portrayed as a new, Palantir-coined role – but it actually emerges from decades of field-engineering traditions. In early enterprise computing, companies like IBM and Oracle sent armies of engineers onsite to customize installations. The SaaS boom (2000s–2010s) briefly promised <em>"configure-not-customize,"</em> reducing such roles. Palantir's breakthrough was to re-embrace embedded engineering (internally called "Delta" or FDSE) so its data platforms could meet messy customer realities. Today, AI-driven products (OpenAI, Anthropic, etc.) are again hiring FDEs to bridge the gap between cutting-edge tech and real business needs. FDEs <em>are not</em> mere consultants or sales engineers – they code production solutions <strong>and</strong> feed insights back into the product. But this model has trade-offs: it's expensive and hard to scale, albeit powerful for complex deployments. This article traces FDE's lineage (IBM fields, ERP implementers, consultants), clarifies what Palantir did and didn't invent, busts myths (FDE vs consultant/architect/SE), explains the military-origin term, and shows why the AI era has made FDEs mainstream again.</p>
<img src="https://cdn.hashnode.com/uploads/covers/651bff05e4455a8ac9ec7688/e90c1ca0-3ea8-4ed5-918b-20ba736ee2c7.png" alt="" style="display:block;margin:0 auto" />

<h2>Enterprise Software Origins</h2>
<p>In the 1960s–80s, <strong>IBM, DEC, HP</strong> and others built hardware and bundled software, but customer on-site support was crucial. Specialized "field engineers" would install mainframes, debug problems, and tailor solutions. By the 1990s, enterprise software (ERP, CRM, supply-chain systems) became must-haves. Vendors like <strong>Oracle, SAP, Siebel</strong> sold big software suites, but every customer needed custom integration. Consulting firms (Accenture, IBM Services, Deloitte, etc.) grew huge installing and customizing these packages. The old joke was: <em>"Nobody ever got fired for buying Big ERP,"</em> but customers often complained of blown budgets and poor fit.</p>
<p>Investors and SaaS startups in the 2000s pushed back: <em>"Let's avoid this service mess. Build configurable cloud software and don't hire armies of consultants."</em> Companies like <strong>Salesforce, Workday, ServiceNow</strong> promised high-margin, multi-tenant products where customers mostly self-configured features. The promise was that software should adapt around processes, not vice versa. But in practice, many large companies and governments still hit walls: legacy systems, unique data, and opaque processes meant <em>"out-of-the-box"</em> solutions often failed. This left a gap between the product as built and how the customer really works.</p>
<p>As Marty Cagan and others note, there have always been <em>two business models</em> in enterprise tech: (1) pure products (one codebase serving all) vs (2) custom solutions (build for each client). The custom side was once dominated by consultancies that simply <em>built whatever the client asked for</em>. A famous (albeit tongue-in-cheek) critique is that firms like Accenture would sign up to deliver a spec (not a result) – and then clients blamed them when the project failed <a href="#references">76</a>. In contrast, Palantir took a hybrid approach: they <em>promised outcomes</em> (like reducing defect rates on a factory line) and used their platform <em>as a toolkit</em> to achieve it.</p>
<h2>Palantir and the "Delta" Model</h2>
<p>Palantir, founded in 2003, was built for complicated, dynamic environments (intelligence, defense, disaster response). Early on they saw that <em>traditional software teams couldn't work there</em>. Government analysts <em>could not</em> articulate all their needs: workflows changed daily, data was siloed or classified, and simply taking notes was impossible <a href="#references">7</a>. The solution: embed their engineers on-site.</p>
<p>Palantir's term was <strong>"Delta"</strong> (the FDE). As one Palantir engineer explained, <strong>FDEs write production-grade code but work inside a customer</strong> instead of a corporate lab <a href="#references">7</a>. They often lived at client facilities for weeks, learning workflows firsthand. Their mission: <em>"deploy and customize Palantir platforms to tackle critical business problems"</em>, and measure success by the customer's outcomes <a href="#references">47</a>. Unlike external consultants, FDEs didn't just advise or deliver a one-off project; they stayed long-term as part of the customer team.</p>
<p>By 2016, Palantir had more FDEs than "normal" product engineers <a href="#references">47</a>. Each FDE would build a quick, tactical solution for their client (fixing broken data pipelines, patching schemas, etc.), and <em>then share the learnings upstream</em>. Palantir's core developers would see the common patterns and bake them into the platform. In effect, <em>field work generated new product features</em>, not just revenue <a href="#references">73</a>. One analysis calls this "Field-Driven Productization": FDEs experiment in the wild and feed failures back as improvements <a href="#references">7</a>.</p>
<p>A key insight Palantir leveraged was team structure. They didn't send lone engineers. They paired a <strong>Delta (FDE)</strong> with an <strong>Echo</strong> (deployment strategist). The Delta wrote code (Python ETLs, ontology models, etc.) while the Echo, often a domain or ex-military expert, managed relationships and workflows <a href="#references">7</a>. Together they ensured that solutions were both technically correct <em>and</em> actually adopted by the client. This two-person unit drove fast problem-solving while keeping user needs front-and-center.</p>
<p>Crucially, Palantir viewed this not as services but as <em>product development strategy</em>. Every client project was R&amp;D: failures in the field led to platform enhancements <a href="#references">7</a>. "We built something once for one client, watch it fail, and turn that failure into platform infrastructure," explains one engineer <a href="#references">7</a>. This made each new deployment cheaper and more powerful, compounding advantage. As another Palantir insider put it: <em>"The FDE model is a product development strategy that looks like services from the outside."</em> <a href="#references">74</a>.</p>
<h2>"Forward Deployed": A Military Metaphor</h2>
<p>The name itself comes from military lingo. In armed forces, a "forward-deployed" unit is placed close to the action or operational theater, ready to act. Palantir served defense and intelligence agencies, so borrowing this term was natural. "Forward deployment" implies being on-site, agile, and mission-focused – much like the FDE role.</p>
<p>Despite the martial name, the FDE isn't a soldier; it's an engineer. But the ethos is the same: <strong>be where the action is</strong>. Just as an army forward base adapts to terrain, an FDE molds software on the customer's turf. (As an anecdote: one Palantir FDE spent weeks on an aerospace assembly line, and others worked in air-gapped labs – unconventional places for programmers!)</p>
<p>This terminology highlights that the FDE sits <em>in front of</em> typical corporate silos. They bridge headquarters and the field, translating between code and coal-face realities. It's a small military-flavored nod for a big cultural shift: engineers on the front lines.</p>
<h2>What FDEs Do Day-to-Day</h2>
<p><strong>Role</strong>. An FDE is fundamentally a <strong>customer-embedded software engineer</strong>. Typical tasks include:</p>
<ul>
<li><p><strong>Requirement discovery.</strong> Interview users, observe processes, and find gaps.</p>
</li>
<li><p><strong>Architecture &amp; design.</strong> Decide how to configure or extend the product to fit the customer's context.</p>
</li>
<li><p><strong>Coding &amp; configuration.</strong> Write production code (data pipelines, integrations, UI tweaks) and heavy configurations. Use the company's platform (e.g., Palantir Foundry) as a foundation but adapt it.</p>
</li>
<li><p><strong>Prototyping.</strong> Rapidly iterate: build a prototype, test with users, refine.</p>
</li>
<li><p><strong>Product feedback.</strong> When a missing feature or improvement is needed, the FDE liaises with the core product team to prioritize and design that feature for everyone.</p>
</li>
<li><p><strong>Deployment &amp; troubleshooting.</strong> Handle on-prem or cloud deployment issues (network configs, compliance, scale-out) so that the solution actually runs reliably.</p>
</li>
<li><p><strong>Change management.</strong> Often, FDEs help train or evangelize within the customer organization, smoothing adoption.</p>
</li>
</ul>
<p>In short, they <strong>own end-to-end execution of high-stakes projects</strong> for that customer <a href="#references">4</a>. One Palantir FDE described the role as <em>"working similar to a startup CTO: you have autonomy, a broad mandate, and you build real tools for real users."</em> <a href="#references">4</a> They write the code, but also navigate org charts, politics, and product roadmaps.</p>
<p><strong>Skills &amp; Profile.</strong> This requires a rare T-shaped skill set. A strong software engineer background is mandatory: many job postings want 3–5+ years coding experience <a href="#references">4</a>. Must handle full stack dev (APIs, databases, UI) and modern tooling (cloud, containerization, ML/AI APIs). But equally important are <strong>soft skills</strong>: communication, negotiation, and curiosity. FDEs must ask "stupid" but critical questions (like a true newcomer). They often speak with execs about ROI and with analysts about workflows. Empathy and grit matter: one needs to <em>stay on-site until a broken process is fixed</em>, which many traditional careers wouldn't tolerate <a href="#references">7</a>.</p>
<p>Hiring descriptions compare FDEs to <strong>startup CTOs</strong> <a href="#references">4</a> or "engineers plus consultants". They pass the same rigorous technical interview as core engineers <a href="#references">7</a>, but also spend part of their day in boardrooms or plant floors. Many come from consulting or early-stage startups, or are "technical generalists" who thrived on diverse projects. Companies like OpenAI explicitly look for engineers willing to travel and embed with clients, not just write docs <a href="#references">4</a>.</p>
<p><strong>Deployment Loop.</strong> The FDE enables a feedback cycle (see diagram below). They collect requirements, build a customer-specific solution, and then iterate with the product team to generalize or harden it. This loop (customer ⇄ FDE ⇄ product/platform) ensures the company's core software steadily improves while delivering immediate value to that one client <a href="#references">13</a>.</p>
<img src="https://cdn.hashnode.com/uploads/covers/651bff05e4455a8ac9ec7688/9e05b1b4-c5cc-405c-b860-5334d2ffb71e.png" alt="" style="display:block;margin:0 auto" />

<h2>What FDE <em>Is Not</em>: Myth-Busting</h2>
<p><strong>Not a glorified consultant:</strong> Consultants (technical or strategy) analyze and recommend. FDEs <em>build and ship code</em>. Consultants typically design once and move on; FDEs iterate and stay. In Palantir's words, consultants deliver one-off recommendations, whereas FDEs partner <em>long-term</em> on implementation <a href="#references">4</a>. (A distinction: a consultant might hand off a blueprint, but an FDE hands off a working application.)</p>
<p><strong>Not just a Solutions or Sales Engineer:</strong> Solutions Architects/designers create system blueprints (often pre-sale) but seldom write production code. Sales Engineers demo products or configure pilots, but usually on fixed data slices. FDEs go beyond that: they take responsibility for deployment in real environments. One newsletter puts it succinctly: roles like "Solutions Architect" and "Sales Engineer" <em>come close</em>, but FDEs <em>also contribute back to the product</em> <a href="#references">4</a>.</p>
<p><strong>Not just an implementation/support engineer:</strong> Implementation engineers might configure standard installations. But FDEs handle the unexpected. They are not limited to setting parameters; they write new scripts or modules. Support engineers react to tickets; FDEs proactively deliver new features. In a sense, FDEs are <strong>platform hackers</strong> and designers, not just parameter-tuners.</p>
<p><strong>Not a regular developer:</strong> A product dev team writes one feature for all clients. An FDE writes <em>many features</em> for one client. At Palantir, they phrased it: <em>"one capability, many customers" (dev) vs "one customer, many capabilities" (FDE)</em> <a href="#references">4</a>.</p>
<p><strong>Not a project manager or sales rep:</strong> They do more than manage timelines, and less selling. FDEs don't make the initial sale (that's the sales team) but once onboard, they own technical execution end-to-end.</p>
<p>Here's a quick comparison:</p>
<table>
<thead>
<tr>
<th><strong>Role</strong></th>
<th><strong>Scope</strong></th>
<th><strong>Tech vs Customer</strong></th>
<th><strong>Typical Deliverable</strong></th>
</tr>
</thead>
<tbody><tr>
<td><strong>FDE (Forward Deployed Engineer)</strong></td>
<td>One (large/strategic) customer, outcome-focused</td>
<td>High technical depth <em>and</em> heavy customer engagement</td>
<td>A working software solution (often bespoke) plus enhancements fed back to core product</td>
</tr>
<tr>
<td>Consultant (e.g. Technical/Strategy)</td>
<td>Many clients, often short engagements</td>
<td>Emphasis on process, analysis, recommendation</td>
<td>Reports, slide decks, strategy plans, or high-level PoCs (not production code)</td>
</tr>
<tr>
<td>Solutions Architect</td>
<td>Many potential clients (pre-sale)</td>
<td>High-level tech design, some customer demo</td>
<td>Architecture diagrams, solution blueprints, tech evaluations</td>
</tr>
<tr>
<td>Sales Engineer</td>
<td>Many prospects (pre-sale or early deployment)</td>
<td>Moderate tech (product demos), communication</td>
<td>Product demos, pilot setups, workshops</td>
</tr>
<tr>
<td>Implementation Engineer</td>
<td>One client (post-sale), project-based</td>
<td>Configuration-focused</td>
<td>Installed and configured systems, scripts to deploy product</td>
</tr>
<tr>
<td>Support Engineer</td>
<td>Many existing customers (on-going)</td>
<td>Moderate tech, reactive</td>
<td>Bug fixes, minor enhancements, technical documentation</td>
</tr>
</tbody></table>
<p>Each row in the table above shows overlapping area with FDEs: for example, FDEs share technical skills with devs and solutions architects, and share customer focus with consultants and SEs. But FDEs uniquely combine <em>both</em> in one role.</p>
<h2>Why AI Has Brought FDEs Back</h2>
<p>In recent years, many AI startups (OpenAI, Anthropic, etc.) have revived the FDE concept at scale. The reason is simple: modern AI is powerful <em>but</em> brittle and context-dependent. Off-the-shelf AI (chatbots, vision models) often fails silently when integrated into complex workflows. Customers need <strong>specialists</strong> to tailor those models: clean the data, design the human-AI loop, enforce compliance, and embed them in existing tools.</p>
<p>Industry analysts have noted this surge. One LinkedIn post reported AI companies' FDE openings "up 800%" and mentioned <em>OpenAI hiring ~50 FDEs at ~$280K each</em> in 2023 <a href="#references">5</a>. The message was loud: when a cutting-edge tech still needs dozens of humans to deploy it, it's a reality check on the hype <a href="#references">5</a>. In practice, many AI firms now offer FDE services to large customers (often hand-in-glove with enterprise sales). The SVPG product guru Marty Cagan specifically points to <strong>AI agents</strong> as a prime use case: without embedding engineers in customers, it's nearly impossible to discover what AI solution will actually work <a href="#references">3</a>.</p>
<p>In short, AI has <em>raised the floor</em> on complexity. Whereas previously a customer might try a DIY trial of analytics software, they now demand on-site expertise for AI pilots. Thus, FDEs are no longer optional for deep enterprise deals; they are part of the bet.</p>
<h2>Economics and Trade-offs</h2>
<p>Running many FDEs is expensive and can turn your startup into a quasi-consultancy. Palantir famously charged millions per contract to support its large FDE corps, trading some product margin for growth. This model accelerates "time to value" for customers, but it also means lower gross margins than pure SaaS. It's a conscious trade-off: companies pay more up-front, but hope to win sticky, high-value clients.</p>
<p>There are scaling challenges. As SVPG notes, if every client needed a dedicated FDE, you'd end up with "thousands of large, bespoke solutions" to maintain <a href="#references">3</a>. That's unsustainable without a strong product platform. Palantir's approach was to aggressively <strong>productize</strong> each FDE experience. Every time an FDE solved a problem, the core team would generalize that solution for future clients <a href="#references">73</a>. This is why Palantir launched Foundry and Apollo: to codify those learnings so the next customer needed <em>less</em> custom work.</p>
<p>There are also opportunity costs. FDEs spend a lot of time in client meetings, which means fewer lines of code per person than in-house devs. Companies must decide if the strategic value (faster deployment, higher customer success, richer feedback) outweighs this. For mature product companies with thousands of SMB customers, the FDE model usually doesn't make sense. But for startups selling to Fortune 500 or government (where one client = one sale), it can be decisive.</p>
<p>Bottom line: <strong>powerful but expensive</strong>. FDEs can win you big accounts and ensure success, but they resemble a bespoke engineering service, not a self-service cloud product. As one analyst quipped, having FDEs on staff is a sign that <em>"AI isn't there yet"</em> to run itself <a href="#references">5</a>.</p>
<h2>Skills and Profile of a Successful FDE</h2>
<p>Given their hybrid nature, FDEs require a mix of skills:</p>
<ul>
<li><p><strong>Technical breadth:</strong> Python, Java, or similar; cloud platforms; data pipelines and modeling; API integration; basic ML/AI understanding. Many roles specifically mention machine learning or agent development experience <a href="#references">7</a>.</p>
</li>
<li><p><strong>Systems thinking:</strong> The ability to design architectures that span multiple systems (databases, ML services, workflows). They often create data ontologies or knowledge graphs, especially in complex domains like intelligence or genomics.</p>
</li>
<li><p><strong>Domain adaptability:</strong> Quickly learning new industries (manufacturing, defense, healthcare) and jargon. As Diogo Santos notes, an Echo (the FDE's partner) is often someone with domain expertise <a href="#references">7</a>. FDEs themselves must learn by listening and asking: no prior field is exactly the same.</p>
</li>
<li><p><strong>Communication &amp; empathy:</strong> FDEs split time between coding and communicating. They run workshops with executives, gather feedback from analysts, and negotiate priorities. They must patiently explain technical trade-offs to non-technical stakeholders.</p>
</li>
<li><p><strong>Ownership and independence:</strong> Very little is handed to them. They must take unstructured problems and lead them to working solutions. Many FDEs say that "ability to say no" (i.e. protect engineering time) is critical <a href="#references">4</a>.</p>
</li>
<li><p><strong>Resilience:</strong> Deployments often involve late nights, network outages, regulatory hurdles, and organizational roadblocks. A good FDE is willing to "eat pain" by staying through the chaos <a href="#references">7</a> until the product works in that environment.</p>
</li>
</ul>
<p>Typical educational or career backgrounds vary: some are ex-consultants who left for more technical work; others are former startup CTOs or senior engineers. Notably, Palantir occasionally hired PhDs and mathematicians – they wanted "free thinkers" more than corporate coders <a href="#references">7</a>. At OpenAI, for instance, they've sought candidates with a few years of software experience <em>and</em> a track record of handling ambiguity on projects <a href="#references">4</a>.</p>
<h2>Future Variants and Trends</h2>
<p>The FDE model is evolving. Some companies use different titles: <strong>"AI Deployment Engineer," "Customer Solutions Engineer,"</strong> or simply <strong>"Technical Consultant"</strong> with coding expectations. A growing trend is specialization: we might see <strong>"Forward Deployed AI Engineer (FDEA)"</strong> roles focusing on large language models or robotics. Some organizations form FDE teams that rotate between clients, spreading knowledge.</p>
<p>Interestingly, Marty Cagan argues that the original FDE concept (engineers visiting <em>multiple</em> customers to build one product) is also alive. In AI early stages, startups send engineers to a few lead customers to discover product-market fit. But once the model is clearer, FDEs still stay on to execute.</p>
<p>One risk is burnout. The role combines three full-time jobs (developer + architect + consultant). Some experts worry that expecting <em>one person</em> to own end-to-end AI projects is too much. A possible trend is splitting the role: an FDE might be paired with a dedicated product manager or solution architect to share load. But as of 2026, in many tech firms FDEs remain lone technical owners.</p>
<p>Another trend: tooling to <em>assist</em> FDEs. Emerging platforms aim to automate some integration tasks (data wrangling, pipeline scaffolding), potentially lightening the FDE load. Yet, the core value of FDEs – human insight in context – can't be automated away anytime soon.</p>
<h2>Explicit Thesis Restated</h2>
<p>The <strong>Forward Deployed Engineer</strong> is not a passing fad or mere new title. It is the formalization of a long-standing truth: <em>effective enterprise software often needs engineers embedded at the customer site</em>. Palantir didn't entirely invent this role, but it redefined it as a fundamental product-development strategy <a href="#references">7</a>. What was old (field engineers and consultants) has become new again under Silicon Valley terminology. In the age of AI and complex cloud systems, deploying a product without on-site technical experts is increasingly rare. FDEs are expensive and demanding to hire, but they are the pragmatic bridge between an idealized product and a customer's actual needs. For companies and leaders grappling with high-stakes deployments, understanding FDEs is crucial: they demonstrate how software truly <em>gets done</em> in the real world, not just on a whiteboard.</p>
<h2>References</h2>
<ol>
<li><p><em>Palantir Blog</em>: <a href="https://blog.palantir.com/a-day-in-the-life-of-a-forward-deployed-software-engineer-45e34e0b0c2e">"A Day in the Life of a Forward Deployed Software Engineer"</a> (Nov 2020).</p>
</li>
<li><p><em>Palantir Blog</em>: <a href="https://blog.palantir.com/dev-versus-delta-demystifying-engineering-roles-at-palantir-5a7a2f8e0c1a">"Dev versus Delta: Demystifying engineering roles"</a> (Apr 2019).</p>
</li>
<li><p>Marty Cagan, <em>SVPG</em>: <a href="https://www.svpg.com/forward-deployed-engineers/">"Forward Deployed Engineers"</a> (Sep 2025).</p>
</li>
<li><p>Gergely Orosz, <em>The Pragmatic Engineer</em>: <a href="https://newsletter.pragmaticengineer.com/p/forward-deployed-engineers">"What are FDEs, and why in demand?"</a> (Dec 2022).</p>
</li>
<li><p>Keith Richman, <em>LinkedIn</em>: <a href="https://www.linkedin.com/pulse/hottest-job-ai-forward-deployed-engineer-keith-richman/">"The hottest job in AI is the Forward Deployed Engineer"</a> (2023).</p>
</li>
<li><p>Sarah Nicastro, <em>LNS Research</em>: <a href="https://blog.lnsresearch.com/where-palantir-won-and-c3-didnt">"Where Palantir Won &amp; C3 Didn't"</a> (Jun 2024).</p>
</li>
<li><p>Diogo Silva Santos, <em>Medium</em>: <a href="https://medium.com/@diogosilvasantos/palantirs-forward-deployed-engineering-model-explained-8f5a1b2c3d4e">"Palantir's Forward Deployed Engineering Model"</a> (Apr 2026).</p>
</li>
</ol>
]]></content:encoded></item><item><title><![CDATA[GitHub Copilot is Moving to Usage-Based Billing from June 1, 2026]]></title><description><![CDATA[If you use GitHub Copilot, your bill is about to start working very differently. Starting June 1, 2026, Copilot stops counting "premium requests" and starts charging based on how much the AI model act]]></description><link>https://azureauthority.in/github-copilot-is-moving-to-usage-based-billing-from-june-1-2026</link><guid isPermaLink="true">https://azureauthority.in/github-copilot-is-moving-to-usage-based-billing-from-june-1-2026</guid><category><![CDATA[copilot]]></category><category><![CDATA[github copilot]]></category><category><![CDATA[premium request]]></category><category><![CDATA[pricing plan changes]]></category><category><![CDATA[AI Credits]]></category><category><![CDATA[generative ai]]></category><category><![CDATA[agentic AI]]></category><category><![CDATA[VS Code]]></category><dc:creator><![CDATA[Siddhesh Prabhugaonkar]]></dc:creator><pubDate>Wed, 29 Apr 2026 05:47:44 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/651bff05e4455a8ac9ec7688/3157756b-6310-427e-ae22-ed46753a392e.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>If you use GitHub Copilot, your bill is about to start working very differently. Starting <strong>June 1, 2026</strong>, Copilot stops counting "premium requests" and starts charging based on how much the AI model actually works for you.</p>
<p>This post walks through what changes, decodes the jargon, and shows the math with real examples so you can figure out whether your wallet will feel it.</p>
<hr />
<h2>First, let's decode the jargon</h2>
<p>Before we get into "before vs after," here are the words you'll keep seeing.</p>
<ul>
<li><p><strong>Token</strong> — a chunk of text the AI model reads or writes. Roughly 1 token ≈ 4 characters of English, or about ¾ of a word. "Hello, world!" is ~4 tokens.</p>
</li>
<li><p><strong>Input tokens</strong> — what <em>you</em> (and your code, files, chat history) send into the model.</p>
</li>
<li><p><strong>Output tokens</strong> — what the model sends back.</p>
</li>
<li><p><strong>Cached tokens</strong> — context the model has already seen and can reuse cheaply (e.g., the same big file in a long chat). Cached tokens are billed at a much lower rate.</p>
</li>
<li><p><strong>Premium Request (PRU)</strong> — the <em>old</em> unit. One "request" you make to a premium model. Different models had a <strong>multiplier</strong> (e.g., a heavy model = 5 requests, a frontier model = 50 requests).</p>
</li>
<li><p><strong>GitHub AI Credit</strong> — the <em>new</em> unit. <strong>1 AI Credit = \(0.01 USD</strong>. So 100 credits = \)1, and 1,900 credits = $19.</p>
</li>
<li><p><strong>Pooled credits</strong> — instead of each user getting their own bucket, the whole organization shares one big bucket of credits.</p>
</li>
<li><p><strong>Fallback model</strong> — when you ran out of premium requests, Copilot used to silently downgrade you to a cheaper model so you could keep working. This is going away.</p>
</li>
<li><p><strong>Code completions / Next Edit Suggestions</strong> — the gray "ghost text" that auto-completes as you type. <strong>These stay free and unlimited on all paid plans.</strong> Nothing in this post applies to them.</p>
</li>
</ul>
<hr />
<h2>The 30-second summary</h2>
<table>
<thead>
<tr>
<th></th>
<th><strong>Before June 1, 2026</strong></th>
<th><strong>After June 1, 2026</strong></th>
</tr>
</thead>
<tbody><tr>
<td>Billing unit</td>
<td>Premium Requests (PRUs)</td>
<td>GitHub AI Credits (1 credit = $0.01)</td>
</tr>
<tr>
<td>What's measured</td>
<td>A "request" × model multiplier</td>
<td>Actual input + output + cached <strong>tokens</strong></td>
</tr>
<tr>
<td>Run out of allowance</td>
<td>Falls back to cheaper model, keep working</td>
<td><strong>No fallback.</strong> Either pay overage or get blocked</td>
</tr>
<tr>
<td>Code completions</td>
<td>Free, unlimited</td>
<td>Free, unlimited (unchanged)</td>
</tr>
<tr>
<td>Plan prices</td>
<td>\(10 / \)39 / \(19 / \)39</td>
<td><strong>Same prices</strong> — but you now get $X of credits</td>
</tr>
<tr>
<td>Org-wide sharing</td>
<td>Each user has own quota</td>
<td>Credits <strong>pooled across the org</strong></td>
</tr>
<tr>
<td>Budget controls</td>
<td>Limited</td>
<td>Granular: enterprise / org / cost center / user</td>
</tr>
</tbody></table>
<p>Plan prices are <strong>not</strong> changing. What's changing is <em>what you get for that money</em> and <em>how it gets consumed</em>.</p>
<hr />
<h2>Before / After at a glance — all plans</h2>
<img src="https://cdn.hashnode.com/uploads/covers/651bff05e4455a8ac9ec7688/cd3e2a76-d53a-4e21-bf7f-5d6750b151a0.png" alt="" style="display:block;margin:0 auto" />

<p>The diagram above maps every plan from the old <em>PRU</em> world to the new <em>AI Credit</em> world. Below are the same details as plain tables, in case you want to skim or copy values.</p>
<h3>Per-plan changes</h3>
<table>
<thead>
<tr>
<th>Plan</th>
<th>Before June 1, 2026</th>
<th>After June 1, 2026</th>
<th>Promo (Jun–Aug 2026)</th>
</tr>
</thead>
<tbody><tr>
<td><strong>Copilot Pro</strong> — $10/mo</td>
<td>300 premium requests/mo</td>
<td>1,000 AI Credits ($10)</td>
<td>—</td>
</tr>
<tr>
<td><strong>Copilot Pro+</strong> — $39/mo</td>
<td>1,500 premium requests/mo</td>
<td>3,900 AI Credits ($39)</td>
<td>—</td>
</tr>
<tr>
<td><strong>Copilot Business</strong> — $19/user/mo</td>
<td>Per-user PRU quota</td>
<td>1,900 credits/user, <strong>pooled</strong></td>
<td><strong>3,000 credits/user</strong>, pooled</td>
</tr>
<tr>
<td><strong>Copilot Enterprise</strong> — $39/user/mo</td>
<td>Per-user PRU quota</td>
<td>3,900 credits/user, <strong>pooled</strong></td>
<td><strong>7,000 credits/user</strong>, pooled</td>
</tr>
</tbody></table>
<h3>Model multipliers (before) vs token rates (after)</h3>
<table>
<thead>
<tr>
<th>Model</th>
<th>Before (PRU multiplier)</th>
<th>After (illustrative per-1M-token rate)</th>
</tr>
</thead>
<tbody><tr>
<td>GPT-5 mini / GPT-4.1</td>
<td>0× (free)</td>
<td>~$0.40 / 1M input</td>
</tr>
<tr>
<td>Claude Sonnet 4</td>
<td>1×</td>
<td>~$3 / 1M input</td>
</tr>
<tr>
<td>GPT-5 / Gemini 2.5 Pro</td>
<td>6×</td>
<td>~$15 / 1M input</td>
</tr>
<tr>
<td>Claude Opus 4.7</td>
<td>7.5× promo (→27× on annual plans Jun 1)</td>
<td>~$15 / 1M input</td>
</tr>
<tr>
<td>o3 / o4</td>
<td>10×</td>
<td>(per published model rate)</td>
</tr>
<tr>
<td>Cached tokens</td>
<td>n/a</td>
<td>~5–10× cheaper than fresh input</td>
</tr>
<tr>
<td>Overage</td>
<td>$0.04 per extra PRU</td>
<td>Buy more credits, or stop — <strong>no fallback</strong></td>
</tr>
<tr>
<td>Credit / quota pooling</td>
<td>Per-user, siloed</td>
<td>Org-wide pool + budget controls</td>
</tr>
</tbody></table>
<blockquote>
<p><strong>Always check</strong> <a href="https://docs.github.com/en/copilot/reference/copilot-billing/models-and-pricing">GitHub's Models and pricing page</a> for the live per-token rate for the model you actually use. Numbers above are illustrative.</p>
</blockquote>
<h3>How a single request is billed</h3>
<table>
<thead>
<tr>
<th>Step</th>
<th>Before June 1</th>
<th>After June 1</th>
</tr>
</thead>
<tbody><tr>
<td>1. You send a chat / agent task</td>
<td>Counted as <strong>1 request</strong></td>
<td>Model reads input + writes output + reuses cached tokens</td>
</tr>
<tr>
<td>2. Cost rule</td>
<td><code>1 × model_multiplier</code> PRUs</td>
<td><code>tokens × per-model API rate</code>, then ÷ $0.01 to get credits</td>
</tr>
<tr>
<td>3. Deducted from</td>
<td>Your monthly PRU quota</td>
<td>The <strong>pooled</strong> AI Credit pool</td>
</tr>
<tr>
<td>4. Quota / pool empty?</td>
<td>Falls back to cheaper model, you keep working</td>
<td><strong>No fallback.</strong> Either pay overage at published rate, or get blocked until next cycle</td>
</tr>
<tr>
<td>5. Code completions / Next Edit Suggestions</td>
<td>Free, unlimited</td>
<td>Free, unlimited (unchanged)</td>
</tr>
<tr>
<td>6. Copilot code review</td>
<td>Premium request</td>
<td>AI Credits <strong>+ GitHub Actions minutes</strong></td>
</tr>
</tbody></table>
<hr />
<h2>Mapping the old world to the new world</h2>
<p>There is <strong>no exact 1-to-1 conversion</strong> from a Premium Request to AI Credits — and that is the whole point of the change. A "request" used to cost the same whether it was a one-line question or a 3-hour autonomous coding agent run. Now you pay for what the model actually crunches.</p>
<p>That said, here's a <em>rough</em> mental model so you can translate quickly:</p>
<table>
<thead>
<tr>
<th>Plan</th>
<th>Old monthly quota</th>
<th>New monthly credits</th>
<th>New $ value</th>
<th>Implied "average" credits per old request</th>
</tr>
</thead>
<tbody><tr>
<td>Pro</td>
<td>300 PRUs</td>
<td>1,000 credits</td>
<td>$10</td>
<td>~3.3 credits ≈ $0.033</td>
</tr>
<tr>
<td>Pro+</td>
<td>1,500 PRUs</td>
<td>3,900 credits</td>
<td>$39</td>
<td>~2.6 credits ≈ $0.026</td>
</tr>
<tr>
<td>Business</td>
<td>300 PRUs / user</td>
<td>1,900 / user (pooled)</td>
<td>$19</td>
<td>~6.3 credits ≈ $0.063</td>
</tr>
<tr>
<td>Enterprise</td>
<td>1,000 PRUs / user</td>
<td>3,900 / user (pooled)</td>
<td>$39</td>
<td>~3.9 credits ≈ $0.039</td>
</tr>
</tbody></table>
<p>Reality is messier than that table because <strong>a "request" isn't a flat thing anymore</strong>. A small chat may cost 0.2 credits. A long agent session on a frontier model may cost 30+ credits. Two people on the same plan can have wildly different bills.</p>
<hr />
<h2>How costs are <em>actually</em> calculated — with examples</h2>
<h3>Before June 1 (Premium Request math)</h3>
<pre><code class="language-plaintext">cost in PRUs = 1 request × model_multiplier
</code></pre>
<p>You don't pay per token; you pay one "request" no matter how big it is. Multipliers (illustrative — exact values are in GitHub's model table):</p>
<ul>
<li><p>GPT-4o, Claude Sonnet → <strong>1×</strong></p>
</li>
<li><p>o1-mini → ~<strong>0.33×</strong></p>
</li>
<li><p>GPT-4.5 → ~<strong>50×</strong></p>
</li>
<li><p>Claude Opus → ~<strong>10×</strong></p>
</li>
</ul>
<p><strong>Example A — Quick chat question on GPT-4o (Pro user)</strong></p>
<ul>
<li><p>1 request × 1× multiplier = <strong>1 PRU</strong></p>
</li>
<li><p>Out of monthly 300 → 299 left.</p>
</li>
<li><p>It does not matter whether you sent 50 tokens or 50,000 tokens.</p>
</li>
</ul>
<p><strong>Example B — Big agent run on GPT-4.5 (Pro user)</strong></p>
<ul>
<li><p>1 multi-step agent task that took 45 minutes and processed 200,000 tokens.</p>
</li>
<li><p>Still counted as 1 request × 50× multiplier = <strong>50 PRUs</strong>.</p>
</li>
<li><p>Out of 300 → 250 left, regardless of how heavy the actual compute was.</p>
</li>
</ul>
<p>This is why GitHub says the model "is no longer sustainable" — heavy agent runs were dramatically underpriced compared to chat.</p>
<h3>After June 1 (AI Credits math)</h3>
<pre><code class="language-plaintext">cost in $ = (input_tokens × input_rate)
          + (output_tokens × output_rate)
          + (cached_tokens × cached_rate)

cost in credits = cost in \( / \)0.01
</code></pre>
<p>The rates are the <strong>same as the public API rates</strong> for that model. Cached tokens are typically 5–10× cheaper than fresh input tokens.</p>
<blockquote>
<p>The numbers below use <strong>illustrative</strong> per-million-token rates to show the math. Always check GitHub's <a href="https://docs.github.com/en/copilot/reference/copilot-billing/models-and-pricing">Models and pricing</a> page for the live rates of the model you use.</p>
</blockquote>
<p><strong>Example A — Quick chat question (same as before)</strong> Assume GPT-4o-class model: input \(2.50 / 1M tokens, output \)10 / 1M tokens.</p>
<ul>
<li><p>Input: 500 tokens → 500 × \(2.50 / 1,000,000 = \)0.00125</p>
</li>
<li><p>Output: 200 tokens → 200 × \(10 / 1,000,000 = \)0.002</p>
</li>
<li><p>Total: <strong>$0.00325</strong> → about <strong>0.33 credits</strong></p>
</li>
</ul>
<p>You can do this <strong>~3,000 times</strong> on a Pro plan ($10 / 1,000 credits). Compare that to <strong>300</strong> under the old model — small interactions get <em>cheaper</em>.</p>
<p><strong>Example B — Heavy agent run (same as before)</strong> Assume a frontier model: input \(15 / 1M, output \)75 / 1M, cached $1.50 / 1M.</p>
<ul>
<li><p>Input (fresh): 30,000 tokens → $0.45</p>
</li>
<li><p>Cached input: 170,000 tokens → $0.255</p>
</li>
<li><p>Output: 20,000 tokens → $1.50</p>
</li>
<li><p>Total: <strong>$2.205</strong> → about <strong>220 credits</strong></p>
</li>
</ul>
<p>Under the old model that was 50 PRUs (1/6 of your monthly Pro quota). Under the new model it's <strong>22% of your monthly Pro credits</strong>. Agent-heavy work gets <em>more expensive</em> — which is exactly the rebalancing GitHub is going for.</p>
<p><strong>Example C — A team of 50 on Copilot Business</strong></p>
<ul>
<li><p>Pool = 50 × 1,900 = <strong>95,000 credits / month</strong> ($950 of usage).</p>
</li>
<li><p>Promo period (Jun–Aug): 50 × 3,000 = <strong>150,000 credits / month</strong>.</p>
</li>
<li><p>Heavy users can dip into lighter users' unused share — no more stranded capacity at the per-seat level.</p>
</li>
<li><p>Admin can set a per-user cap (say, 4,000 credits) so one engineer can't drain the pool.</p>
</li>
<li><p>Hit the pool ceiling? Either pay overage at published per-credit rates, or get blocked till next cycle. No silent fallback.</p>
</li>
</ul>
<p><strong>Example D — Code completions all day</strong></p>
<ul>
<li><p>Tokens flying back and forth as you type.</p>
</li>
<li><p>Credits consumed: <strong>0.</strong> Completions and Next Edit Suggestions remain free on all paid plans.</p>
</li>
</ul>
<hr />
<h2>What this means for <em>you</em></h2>
<ul>
<li><p><strong>Light chat user, Pro plan</strong> → Likely a <em>win</em>. 300 requests becomes effectively thousands of small chats.</p>
</li>
<li><p><strong>Heavy agent user, Pro plan</strong> → Likely <em>more expensive</em> per task. Watch your credit balance, especially with frontier models.</p>
</li>
<li><p><strong>Annual Pro / Pro+ subscribers</strong> → You <strong>stay on the old PRU model</strong> until your annual renewal. Heads up: model multipliers go up on June 1 for annual plans only.</p>
</li>
<li><p><strong>Business / Enterprise admin</strong> → You get pooled credits and four levels of budgets (enterprise, org, cost center, user). Set a user-level budget; a $0 user budget = no Copilot for that user.</p>
</li>
<li><p><strong>Anyone relying on the fallback to a cheaper model</strong> → That door is closed. Plan for it.</p>
</li>
<li><p><strong>A preview bill</strong> lands in early May 2026 in your Billing Overview, so you can see projected costs before the switch.</p>
</li>
</ul>
<hr />
<h2>The mental model to walk away with</h2>
<p><strong>Old world:</strong> A "request" was a flat token, and the model multiplier was the only knob. You got a fixed number of these per month, and Copilot quietly downgraded you when you ran out.</p>
<p><strong>New world:</strong> Every call costs <em>real money</em> based on real tokens, converted to AI Credits. Your plan price buys you a wallet of credits. Orgs share one big wallet. Admins set the rules. When the wallet is empty, you either top up or stop.</p>
<p>It's the cloud-billing model coming for AI tooling — pay for the compute you actually used. If your Copilot usage looks like "ask a quick question, accept a completion," your bill probably gets friendlier. If it looks like "spawn 10 autonomous agents on Friday night," it's about to get costlier.</p>
<hr />
<h2>Sources</h2>
<ul>
<li><p>GitHub Blog: <a href="https://github.blog/news-insights/company-news/github-copilot-is-moving-to-usage-based-billing/">GitHub Copilot is moving to usage-based billing</a></p>
</li>
<li><p>GitHub Docs: <a href="https://docs.github.com/en/copilot/concepts/billing/usage-based-billing-for-organizations-and-enterprises">Usage-based billing for organizations and enterprises</a></p>
</li>
<li><p>GitHub Docs: <a href="https://docs.github.com/en/copilot/reference/copilot-billing/models-and-pricing">Models and pricing for GitHub Copilot</a></p>
</li>
</ul>
]]></content:encoded></item><item><title><![CDATA[How I Built and Published a VS Code Extension to the Marketplace]]></title><description><![CDATA[Introduction
I recently built Q Log Session Viewer — a VS Code extension that reads Amazon Q chat history and debug logs from your local machine and displays them in a browsable, filterable UI right i]]></description><link>https://azureauthority.in/how-i-built-and-published-a-vs-code-extension-to-the-marketplace</link><guid isPermaLink="true">https://azureauthority.in/how-i-built-and-published-a-vs-code-extension-to-the-marketplace</guid><category><![CDATA[Amazon Q]]></category><category><![CDATA[vscode extensions]]></category><category><![CDATA[VS Code]]></category><category><![CDATA[Log Viewer]]></category><dc:creator><![CDATA[Siddhesh Prabhugaonkar]]></dc:creator><pubDate>Sun, 26 Apr 2026 06:05:04 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/651bff05e4455a8ac9ec7688/7dad85fb-268e-42d5-ba64-9f0b9b0df9f3.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2>Introduction</h2>
<p>I recently built <strong>Q Log Session Viewer</strong> — a VS Code extension that reads Amazon Q chat history and debug logs from your local machine and displays them in a browsable, filterable UI right inside VS Code. In this post I'll walk through every step: scaffolding the project, writing the extension code, packaging it, and publishing it to the VS Code Marketplace.</p>
<p>By the end you'll have a clear mental model of how VS Code extensions work and a repeatable process for publishing your own.</p>
<hr />
<h2>What We're Building</h2>
<p>The extension adds an <strong>Activity Bar icon</strong> (sidebar panel) and a <strong>full editor panel</strong> that reads:</p>
<ul>
<li><p><code>~/.aws/amazonq/history/chat-history-*.json</code> — Amazon Q chat history</p>
</li>
<li><p><code>%APPDATA%\Code\logs\...\Amazon Q Logs.log</code> — VS Code extension host logs</p>
</li>
</ul>
<p>It parses those files and renders sessions as cards, with drill-down into individual log entries.</p>
<img src="https://raw.githubusercontent.com/siddheshp/q-log-session-viewer-assets/main/screenshots/sessions-view.png" alt="Sessions View" style="display:block;margin:0 auto" />

<p><em>Sessions overview — chat history and log sessions shown as cards</em></p>
<img src="https://raw.githubusercontent.com/siddheshp/q-log-session-viewer-assets/main/screenshots/entries-view.png" alt="Entries View" style="display:block;margin:0 auto" />

<p><em>Entry detail view — filter by category, search, and inspect full JSON</em></p>
<hr />
<h2>Prerequisites</h2>
<p>Before starting, install:</p>
<ul>
<li><p><a href="https://nodejs.org/">Node.js</a> 18+</p>
</li>
<li><p><a href="https://code.visualstudio.com/">VS Code</a></p>
</li>
<li><p>The <strong>Yeoman</strong> scaffolder and VS Code extension generator (optional but helpful):</p>
</li>
</ul>
<pre><code class="language-shell">npm install -g yo generator-code
</code></pre>
<hr />
<h2>Step 1 — Scaffold the Project</h2>
<p>Run the Yeoman generator and answer the prompts:</p>
<pre><code class="language-bash">yo code
</code></pre>
<p>Choose:</p>
<ul>
<li><p><strong>New Extension (TypeScript)</strong></p>
</li>
<li><p>Name: <code>q-log-session-viewer</code></p>
</li>
<li><p>Identifier: <code>q-log-session-viewer</code></p>
</li>
<li><p>Description: <em>View and analyze local Q-related debug logs and chat history from VS Code</em></p>
</li>
<li><p>Initialize git: Yes</p>
</li>
<li><p>Bundle with webpack/esbuild: <strong>esbuild</strong> (faster builds)</p>
</li>
</ul>
<blockquote>
<p><strong>Tip:</strong> If you prefer to skip Yeoman, just create the folder structure manually. The generator only saves a few minutes.</p>
</blockquote>
<p>The generated structure looks like this:</p>
<pre><code class="language-plaintext">q-log-session-viewer/
├── src/
│   └── extension.ts        ← entry point
├── resources/              ← icons, screenshots
├── .vscodeignore
├── esbuild.js
├── package.json
└── tsconfig.json
</code></pre>
<hr />
<h2>Step 2 — Configure <code>package.json</code></h2>
<p><code>package.json</code> is the heart of a VS Code extension. It declares commands, views, menus, and metadata that VS Code reads at install time.</p>
<p>Here is the full <code>package.json</code> for this extension:</p>
<pre><code class="language-json">{
  "name": "q-log-session-viewer",
  "displayName": "Q Log Session Viewer (Unofficial)",
  "description": "View and analyze local Q-related debug logs and chat history from VS Code",
  "version": "0.1.1",
  "publisher": "SiddheshPrabhugaonkar",
  "author": {
    "name": "Siddhesh Prabhugankar",
    "url": "https://github.com/siddheshp"
  },
  "license": "MIT",
  "icon": "resources/icon.png",
  "galleryBanner": { "color": "#232F3E", "theme": "dark" },
  "engines": { "vscode": "^1.85.0" },
  "categories": ["Debuggers", "Other"],
  "keywords": ["logs", "debug", "chat", "viewer", "analysis"],
  "activationEvents": [],
  "main": "./out/extension.js",
  "contributes": {
    "commands": [
      {
        "command": "amazonq-logviewer.open",
        "title": "Q Log Session Viewer: Open",
        "icon": {
          "light": "resources/icon-sidebar-light.svg",
          "dark": "resources/icon-sidebar-dark.svg"
        }
      },
      {
        "command": "amazonq-logviewer.refresh",
        "title": "Q Log Session Viewer: Refresh",
        "icon": "$(refresh)"
      }
    ],
    "viewsContainers": {
      "activitybar": [
        {
          "id": "amazonq-logviewer",
          "title": "Q Logs",
          "icon": "resources/icon-sidebar-dark.svg"
        }
      ]
    },
    "views": {
      "amazonq-logviewer": [
        {
          "type": "webview",
          "id": "amazonq-logviewer.viewer",
          "name": "Log Viewer"
        }
      ]
    },
    "menus": {
      "editor/title": [
        { "command": "amazonq-logviewer.open", "group": "navigation" }
      ]
    }
  },
  "scripts": {
    "vscode:prepublish": "npm run compile",
    "compile": "node esbuild.js",
    "watch": "node esbuild.js --watch",
    "package": "vsce package"
  },
  "devDependencies": {
    "@types/node": "^20.11.0",
    "@types/vscode": "^1.85.0",
    "@vscode/vsce": "^3.9.1",
    "esbuild": "^0.20.0",
    "sharp": "^0.34.5",
    "typescript": "^5.3.0"
  }
}
</code></pre>
<p>Key things to understand:</p>
<table>
<thead>
<tr>
<th>Field</th>
<th>Purpose</th>
</tr>
</thead>
<tbody><tr>
<td><code>publisher</code></td>
<td>Must match your Marketplace publisher ID exactly</td>
</tr>
<tr>
<td><code>engines.vscode</code></td>
<td>Minimum VS Code version required</td>
</tr>
<tr>
<td><code>activationEvents: []</code></td>
<td>With modern VS Code, contributed commands/views can activate the extension when used</td>
</tr>
<tr>
<td><code>contributes.viewsContainers</code></td>
<td>Registers the Activity Bar icon</td>
</tr>
<tr>
<td><code>contributes.views</code></td>
<td>Registers the webview panel inside the sidebar</td>
</tr>
<tr>
<td><code>vscode:prepublish</code></td>
<td>Script that runs before <code>vsce package</code></td>
</tr>
</tbody></table>
<hr />
<h2>Step 3 — Set Up esbuild</h2>
<p>Instead of the default <code>tsc</code> compiler, this extension uses <strong>esbuild</strong> for fast bundling. Create <code>esbuild.js</code>:</p>
<pre><code class="language-js">const esbuild = require('esbuild');

const watch = process.argv.includes('--watch');

const buildOptions = {
  entryPoints: ['src/extension.ts'],
  bundle: true,
  outfile: 'out/extension.js',
  external: ['vscode'],          // vscode is provided by the host, never bundle it
  format: 'cjs',
  platform: 'node',
  target: 'node18',
  sourcemap: true,
  minify: !watch,
};

if (watch) {
  esbuild.context(buildOptions).then(ctx =&gt; {
    ctx.watch();
    console.log('Watching for changes...');
  });
} else {
  esbuild.build(buildOptions).then(() =&gt; console.log('Build complete'));
}
</code></pre>
<blockquote>
<p><strong>Important:</strong> Always add <code>vscode</code> to <code>external</code>. It is injected by VS Code at runtime and must never be bundled.</p>
</blockquote>
<hr />
<h2>Step 4 — Write the Extension Entry Point</h2>
<p><code>src/extension.ts</code> is the file VS Code calls when the extension activates. It registers commands and the sidebar webview provider:</p>
<pre><code class="language-typescript">import * as vscode from 'vscode';
import { LogViewerPanel, LogViewerSidebarProvider } from './logViewerPanel';

export function activate(context: vscode.ExtensionContext) {
  // Register the sidebar webview (Activity Bar panel)
  const sidebarProvider = new LogViewerSidebarProvider(context.extensionUri);
  context.subscriptions.push(
    vscode.window.registerWebviewViewProvider('amazonq-logviewer.viewer', sidebarProvider)
  );

  // Command: open full editor panel
  context.subscriptions.push(
    vscode.commands.registerCommand('amazonq-logviewer.open', () =&gt; {
      LogViewerPanel.createOrShow(context.extensionUri);
    })
  );

  // Command: refresh data
  context.subscriptions.push(
    vscode.commands.registerCommand('amazonq-logviewer.refresh', () =&gt; {
      LogViewerPanel.currentPanel?.refresh();
      sidebarProvider.refresh();
    })
  );
}

export function deactivate() {}
</code></pre>
<p>Two patterns to note:</p>
<ol>
<li><p><strong>Push to</strong> <code>context.subscriptions</code> — VS Code automatically disposes these when the extension deactivates, preventing memory leaks.</p>
</li>
<li><p><code>deactivate()</code> — called when VS Code shuts down or the extension is disabled. Leave it empty if you have nothing to clean up.</p>
</li>
</ol>
<hr />
<h2>Step 5 — Read Local Log Files (<code>logProvider.ts</code>)</h2>
<p>This class handles all filesystem access. It resolves the correct log paths per OS:</p>
<pre><code class="language-typescript">import * as fs from 'fs';
import * as path from 'path';
import * as os from 'os';

export class LogProvider {
  private logBase: string;
  private historyDir: string;

  constructor() {
    const home = os.homedir();
    const platform = os.platform();

    if (platform === 'win32') {
      const appdata = process.env.APPDATA || path.join(home, 'AppData', 'Roaming');
      this.logBase = path.join(appdata, 'Code', 'logs');
    } else if (platform === 'darwin') {
      this.logBase = path.join(home, 'Library', 'Application Support', 'Code', 'logs');
    } else {
      this.logBase = path.join(home, '.config', 'Code', 'logs');
    }

    this.historyDir = path.join(home, '.aws', 'amazonq', 'history');
  }

  // ... getSessionLogs() and getChatHistoryFiles() methods
}
</code></pre>
<p>Log paths by OS:</p>
<table>
<thead>
<tr>
<th>OS</th>
<th>Extension Logs</th>
<th>Chat History</th>
</tr>
</thead>
<tbody><tr>
<td>Windows</td>
<td><code>%APPDATA%\Code\logs\...\Amazon Q Logs.log</code></td>
<td><code>~\.aws\amazonq\history\</code></td>
</tr>
<tr>
<td>macOS</td>
<td><code>~/Library/Application Support/Code/logs/...</code></td>
<td><code>~/.aws/amazonq/history/</code></td>
</tr>
<tr>
<td>Linux</td>
<td><code>~/.config/Code/logs/...</code></td>
<td><code>~/.aws/amazonq/history/</code></td>
</tr>
</tbody></table>
<hr />
<h2>Step 6 — Build the Webview Panel (<code>logViewerPanel.ts</code>)</h2>
<p>VS Code extensions can render arbitrary HTML inside <strong>WebviewPanel</strong> (full editor tab) or <strong>WebviewView</strong> (sidebar). Both are used here.</p>
<h3>Security: Content Security Policy + Nonce</h3>
<p>Every webview must set a strict CSP. A <strong>nonce</strong> (random string per render) is used to allow only your inline scripts:</p>
<pre><code class="language-typescript">function getNonce(): string {
  let text = '';
  const possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
  for (let i = 0; i &lt; 32; i++) {
    text += possible.charAt(Math.floor(Math.random() * possible.length));
  }
  return text;
}
</code></pre>
<p>The CSP meta tag in the HTML:</p>
<pre><code class="language-html">&lt;meta http-equiv="Content-Security-Policy"
  content="default-src 'none';
           style-src 'nonce-${nonce}';
           script-src 'nonce-${nonce}';"&gt;
</code></pre>
<h3>Two-Way Messaging</h3>
<p>The webview and extension communicate via <code>postMessage</code>:</p>
<pre><code class="language-typescript">// Extension → Webview: send data
panel.webview.postMessage({ command: 'dataLoaded', historyFiles, logSessions });

// Webview → Extension: request data
panel.webview.onDidReceiveMessage(message =&gt; {
  if (message.command === 'loadData') {
    const data = logProvider.loadAllData();
    panel.webview.postMessage({ command: 'dataLoaded', ...data });
  }
});
</code></pre>
<p>Inside the webview HTML:</p>
<pre><code class="language-js">const vscode = acquireVsCodeApi();

// Send message to extension
vscode.postMessage({ command: 'loadData' });

// Receive message from extension
window.addEventListener('message', event =&gt; {
  if (event.data.command === 'dataLoaded') {
    renderSessions(event.data.historyFiles, event.data.logSessions);
  }
});
</code></pre>
<h3>Sidebar Provider</h3>
<pre><code class="language-typescript">export class LogViewerSidebarProvider implements vscode.WebviewViewProvider {
  resolveWebviewView(webviewView: vscode.WebviewView, ...) {
    webviewView.webview.options = {
      enableScripts: true,
      localResourceRoots: [vscode.Uri.joinPath(this._extensionUri, 'resources')]
    };
    webviewView.webview.html = getViewerHtml(getNonce());
    // ... message handler
  }
}
</code></pre>
<hr />
<h2>Step 7 — Add Icons</h2>
<p>VS Code requires icons in specific formats:</p>
<ul>
<li><p><strong>Marketplace icon</strong>: <code>resources/icon.png</code> — 128×128 PNG, referenced in <code>package.json</code> as <code>"icon"</code></p>
</li>
<li><p><strong>Activity Bar icon</strong>: SVG file — VS Code tints it automatically to match the theme; keep it a simple monochrome shape</p>
</li>
</ul>
<pre><code class="language-json">"viewsContainers": {
  "activitybar": [
    {
      "id": "amazonq-logviewer",
      "title": "Q Logs",
      "icon": "resources/icon-sidebar-dark.svg"
    }
  ]
}
</code></pre>
<blockquote>
<p><strong>Gotcha:</strong> Activity Bar icons are always rendered as monochrome by VS Code regardless of the SVG colors. Design them as single-color silhouettes.</p>
</blockquote>
<hr />
<h2>Step 8 — Configure <code>.vscodeignore</code></h2>
<p><code>.vscodeignore</code> works like <code>.gitignore</code> but for the packaged <code>.vsix</code> file. Exclude everything that isn't needed at runtime:</p>
<pre><code class="language-plaintext">.vscode/**
node_modules/**
src/**
esbuild.js
tsconfig.json
**/*.map
**/*-b64.txt
resources/screenshots/*.png
</code></pre>
<p>Keep in the package:</p>
<ul>
<li><p><code>out/extension.js</code> (compiled bundle)</p>
</li>
<li><p><code>resources/</code> (icons used by the extension)</p>
</li>
<li><p><code>package.json</code></p>
</li>
<li><p><code>README.md</code></p>
</li>
<li><p><code>LICENSE</code></p>
</li>
</ul>
<hr />
<h2>Step 9 — Test Locally</h2>
<p>Press <strong>F5</strong> in VS Code to launch the <strong>Extension Development Host</strong> — a second VS Code window with your extension loaded.</p>
<p>You'll see the Q Logs icon appear in the Activity Bar:</p>
<img src="https://raw.githubusercontent.com/siddheshp/q-log-session-viewer-assets/main/screenshots/sessions-view.png" alt="Activity Bar Icon" style="display:block;margin:0 auto" />

<p>Iterate quickly with:</p>
<pre><code class="language-bash">npm run watch
</code></pre>
<p>esbuild rebuilds in milliseconds on every save. Reload the Extension Development Host with <strong>Ctrl+R</strong> (or <strong>Cmd+R</strong> on Mac) to pick up changes.</p>
<hr />
<h2>Step 10 — Package the Extension</h2>
<p>Install <code>vsce</code> (the VS Code Extension CLI) if you haven't already:</p>
<pre><code class="language-bash">npm install -g @vscode/vsce
</code></pre>
<p>Then package:</p>
<pre><code class="language-bash">vsce package
</code></pre>
<p>This produces a <code>.vsix</code> file (e.g. <code>q-log-session-viewer-0.1.1.vsix</code>). You can install it locally to test the final artifact:</p>
<pre><code class="language-bash">code --install-extension q-log-session-viewer-0.1.1.vsix
</code></pre>
<hr />
<h2>Step 11 — Create a Publisher Account</h2>
<ol>
<li><p>Go to <a href="https://marketplace.visualstudio.com/manage">https://marketplace.visualstudio.com/manage</a></p>
</li>
<li><p>Sign in with a Microsoft account</p>
</li>
<li><p>Click <strong>Create publisher</strong></p>
</li>
<li><p>Choose a publisher ID (e.g. <code>SiddheshPrabhugaonkar</code>) — this must match the <code>"publisher"</code> field in <code>package.json</code> exactly</p>
</li>
</ol>
<p>You also need a <strong>Personal Access Token (PAT)</strong>:</p>
<ol>
<li><p>Go to <a href="https://dev.azure.com">https://dev.azure.com</a> → your organization → <strong>User Settings</strong> → <strong>Personal Access Tokens</strong></p>
</li>
<li><p>Click <strong>New Token</strong></p>
</li>
<li><p>Set scope to <strong>Marketplace → Manage</strong></p>
</li>
<li><p>Copy the token — you won't see it again</p>
</li>
</ol>
<p>Authenticate <code>vsce</code> with your token:</p>
<pre><code class="language-bash">vsce login SiddheshPrabhugaonkar
# Paste your PAT when prompted
</code></pre>
<hr />
<h2>Step 12 — Write a Good README</h2>
<p>The <code>README.md</code> in your extension folder becomes the <strong>Marketplace listing page</strong>. Make it count:</p>
<ul>
<li><p>Lead with what the extension does and who it's for</p>
</li>
<li><p>Include screenshots (host them on GitHub or a CDN — relative paths don't work on the Marketplace)</p>
</li>
<li><p>List features, commands, and requirements</p>
</li>
<li><p>Add a disclaimer if your extension reads data from another product</p>
</li>
</ul>
<p>Screenshot URLs must be absolute:</p>
<pre><code class="language-markdown">![Sessions View](https://raw.githubusercontent.com/youruser/your-assets-repo/main/screenshots/sessions-view.png)
</code></pre>
<blockquote>
<p><strong>Tip:</strong> Create a separate public GitHub repo just for assets (screenshots, GIFs). This keeps your extension repo clean and the URLs stable.</p>
</blockquote>
<hr />
<h2>Step 13 — Publish to the Marketplace</h2>
<pre><code class="language-bash">vsce publish
</code></pre>
<p>That's it. <code>vsce</code> will:</p>
<ol>
<li><p>Run <code>npm run vscode:prepublish</code> (which runs <code>npm run compile</code>)</p>
</li>
<li><p>Package the <code>.vsix</code></p>
</li>
<li><p>Upload it to the Marketplace</p>
</li>
</ol>
<p>To publish a specific version bump:</p>
<pre><code class="language-bash">vsce publish patch   # 0.1.0 → 0.1.1
vsce publish minor   # 0.1.0 → 0.2.0
vsce publish major   # 0.1.0 → 1.0.0
</code></pre>
<p>After a few minutes your extension appears at: <a href="https://marketplace.visualstudio.com/items?itemName=SiddheshPrabhugaonkar.q-log-session-viewer&amp;ssr=false#review-details">https://marketplace.visualstudio.com/items?itemName=SiddheshPrabhugaonkar.q-log-session-viewer</a></p>
<hr />
<h2>Step 14 — Update the Extension</h2>
<p>For subsequent releases:</p>
<ol>
<li><p>Make your code changes</p>
</li>
<li><p>Update <code>CHANGELOG</code> / release notes in <code>README.md</code></p>
</li>
<li><p>Run <code>vsce publish patch</code> (or <code>minor</code>/<code>major</code>)</p>
</li>
</ol>
<p>The Marketplace auto-notifies users who have the extension installed.</p>
<hr />
<h2>Project File Structure (Final)</h2>
<pre><code class="language-plaintext">VSCodeExtention/
├── resources/
│   ├── icon.png                  ← Marketplace icon (128×128 PNG)
│   ├── icon-sidebar-dark.svg     ← Activity Bar icon
│   └── icon-sidebar-light.svg
├── src/
│   ├── extension.ts              ← activate() / deactivate()
│   ├── logProvider.ts            ← filesystem reads
│   └── logViewerPanel.ts         ← WebviewPanel + WebviewView + HTML
├── .vscodeignore
├── esbuild.js
├── package.json
├── tsconfig.json
└── README.md
</code></pre>
<hr />
<h2>Key Concepts Recap</h2>
<table>
<thead>
<tr>
<th>Concept</th>
<th>What it does</th>
</tr>
</thead>
<tbody><tr>
<td><code>contributes.viewsContainers</code></td>
<td>Adds an icon to the Activity Bar</td>
</tr>
<tr>
<td><code>contributes.views</code></td>
<td>Registers a panel inside that container</td>
</tr>
<tr>
<td><code>WebviewPanel</code></td>
<td>Full editor tab with custom HTML</td>
</tr>
<tr>
<td><code>WebviewViewProvider</code></td>
<td>Sidebar panel with custom HTML</td>
</tr>
<tr>
<td><code>postMessage</code> / <code>onDidReceiveMessage</code></td>
<td>Two-way communication between extension and webview</td>
</tr>
<tr>
<td>Nonce + CSP</td>
<td>Security: prevents XSS in webviews</td>
</tr>
<tr>
<td><code>context.subscriptions</code></td>
<td>Automatic cleanup on deactivation</td>
</tr>
<tr>
<td><code>vsce package</code></td>
<td>Creates the installable <code>.vsix</code></td>
</tr>
<tr>
<td><code>vsce publish</code></td>
<td>Uploads to the VS Code Marketplace</td>
</tr>
</tbody></table>
<hr />
<h2>Common Gotchas</h2>
<ul>
<li><p><code>vscode</code> <strong>must be in</strong> <code>external</code> in your bundler config — never bundle it</p>
</li>
<li><p><strong>Marketplace icon must be PNG</strong>, not SVG</p>
</li>
<li><p><strong>Screenshot URLs in README must be absolute</strong> — relative paths break on the Marketplace page</p>
</li>
<li><p><strong>Publisher ID in</strong> <code>package.json</code> <strong>must exactly match</strong> your Marketplace publisher account</p>
</li>
<li><p><strong>Activity Bar SVG icons are always monochrome</strong> — VS Code tints them; don't rely on color</p>
</li>
<li><p><strong>CSP</strong> <code>default-src 'none'</code> — be explicit about what your webview is allowed to load; no external CDNs unless you add them to the CSP</p>
</li>
</ul>
<hr />
<h2>Resources</h2>
<ul>
<li><p><a href="https://code.visualstudio.com/api">VS Code Extension API</a></p>
</li>
<li><p><a href="https://code.visualstudio.com/api/extension-guides/webview">Webview API Guide</a></p>
</li>
<li><p><a href="https://code.visualstudio.com/api/working-with-extensions/publishing-extension">Publishing Extensions</a></p>
</li>
<li><p><a href="https://github.com/microsoft/vscode-vsce">vsce CLI Reference</a></p>
</li>
<li><p><a href="https://marketplace.visualstudio.com/items?itemName=SiddheshPrabhugaonkar.q-log-session-viewer&amp;ssr=false#review-details">Q Log Session Viewer on Marketplace</a></p>
</li>
</ul>
<hr />
<p><em>Built by Siddhesh Prabhugankar — Microsoft Certified Trainer &amp; AI Consultant</em><br /><em>GitHub:</em> <a href="https://github.com/siddheshp"><em>github.com/siddheshp</em></a> <em>· LinkedIn:</em> <a href="https://www.linkedin.com/in/siddheshprabhugaonkar"><em>linkedin.com/in/siddheshprabhugaonkar</em></a></p>
]]></content:encoded></item><item><title><![CDATA[Beyond the AI Buzzwords: A Practical Guide to Descriptive, Predictive, Generative, and Agentic AI]]></title><description><![CDATA[If you’ve been in tech conversations lately, you’ve likely heard a flood of terms—AI, ML, Generative AI, Agentic AI. They’re often used loosely, sometimes interchangeably, and occasionally incorrectly]]></description><link>https://azureauthority.in/beyond-the-ai-buzzwords-a-practical-guide-to-descriptive-predictive-generative-and-agentic-ai</link><guid isPermaLink="true">https://azureauthority.in/beyond-the-ai-buzzwords-a-practical-guide-to-descriptive-predictive-generative-and-agentic-ai</guid><category><![CDATA[AI]]></category><category><![CDATA[Artificial Intelligence]]></category><category><![CDATA[agentic AI]]></category><dc:creator><![CDATA[Siddhesh Prabhugaonkar]]></dc:creator><pubDate>Wed, 25 Mar 2026 11:50:16 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/651bff05e4455a8ac9ec7688/f1f8f72d-f6e3-49aa-8084-d4a9e910b3a7.jpg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>If you’ve been in tech conversations lately, you’ve likely heard a flood of terms—<em>AI, ML, Generative AI, Agentic AI</em>. They’re often used loosely, sometimes interchangeably, and occasionally incorrectly.</p>
<p>The reality? These are not competing ideas—they are <strong>layers of capability</strong>.</p>
<p>Understanding these layers is what separates <em>AI adoption</em> from <em>AI architecture</em>.</p>
<p>This guide is written to give both <strong>new learners clarity</strong> and <strong>experienced professionals a sharper mental model</strong> for designing AI-driven systems.</p>
<hr />
<h1>A Better Way to Think About AI</h1>
<p>Instead of treating AI as a monolith, think of it as answering progressively complex questions:</p>
<table>
<thead>
<tr>
<th>Stage</th>
<th>Core Question</th>
<th>System Capability</th>
</tr>
</thead>
<tbody><tr>
<td>Descriptive</td>
<td>What happened?</td>
<td>Awareness</td>
</tr>
<tr>
<td>Diagnostic</td>
<td>Why did it happen?</td>
<td>Understanding</td>
</tr>
<tr>
<td>Predictive</td>
<td>What will happen?</td>
<td>Anticipation</td>
</tr>
<tr>
<td>Prescriptive</td>
<td>What should we do?</td>
<td>Decision-making</td>
</tr>
<tr>
<td>Generative</td>
<td>What can we create?</td>
<td>Creation</td>
</tr>
<tr>
<td>Agentic</td>
<td>Can it act on its own?</td>
<td>Autonomy</td>
</tr>
</tbody></table>
<p>Each stage builds on the previous one—but not every system needs all layers.</p>
<hr />
<h1>1. Descriptive AI – The Foundation of Intelligence</h1>
<p>Before intelligence comes <strong>visibility</strong>.</p>
<p>Descriptive AI transforms raw data into meaningful summaries. While often underestimated, this is where most organizations still struggle.</p>
<h3>What it really does:</h3>
<ul>
<li><p>Aggregates and visualizes data</p>
</li>
<li><p>Detects basic patterns and trends</p>
</li>
<li><p>Answers <em>“What is going on?”</em></p>
</li>
</ul>
<h3>Real-world example:</h3>
<p>A cloud platform showing:</p>
<ul>
<li><p>CPU utilization trends</p>
</li>
<li><p>Monthly billing breakdown</p>
</li>
<li><p>API request volumes</p>
</li>
</ul>
<h3>Hidden insight:</h3>
<p>Poor descriptive systems lead to <strong>bad downstream AI</strong>. If your data layer is weak, everything above it is unreliable.</p>
<hr />
<h1>2. Diagnostic AI – From Data to Insight</h1>
<p>Once you know <em>what happened</em>, the next question is <em>why</em>.</p>
<p>Diagnostic AI focuses on <strong>causality and correlation</strong>.</p>
<h3>What it really does:</h3>
<ul>
<li><p>Identifies anomalies</p>
</li>
<li><p>Explains deviations</p>
</li>
<li><p>Performs root cause analysis</p>
</li>
</ul>
<h3>Example:</h3>
<p>Instead of just saying:</p>
<blockquote>
<p>“Latency increased by 40%”</p>
</blockquote>
<p>It explains:</p>
<blockquote>
<p>“Latency increased due to database connection saturation after a traffic spike from region X”</p>
</blockquote>
<h3>Why it matters:</h3>
<p>Without diagnostic capability, teams rely on <strong>manual debugging and tribal knowledge</strong>.</p>
<hr />
<h1>3. Predictive AI – Anticipating the Future</h1>
<p>This is where <em>Machine Learning</em> becomes central.</p>
<p>Predictive AI answers:</p>
<blockquote>
<p>“Given what we know, what is likely to happen next?”</p>
</blockquote>
<h3>What it really does:</h3>
<ul>
<li><p>Forecasts trends</p>
</li>
<li><p>Estimates probabilities</p>
</li>
<li><p>Identifies risks early</p>
</li>
</ul>
<h3>Examples:</h3>
<ul>
<li><p>Predicting customer churn</p>
</li>
<li><p>Forecasting infrastructure demand</p>
</li>
<li><p>Anticipating system failures</p>
</li>
</ul>
<h3>Practical insight:</h3>
<p>Predictions are <strong>never 100% accurate</strong>—the value lies in <em>probability-driven decision-making</em>, not certainty.</p>
<hr />
<h1>4. Prescriptive AI – Turning Insight into Action</h1>
<p>Prediction without action is just intelligence theater.</p>
<p>Prescriptive AI bridges that gap.</p>
<h3>What it really does:</h3>
<ul>
<li><p>Recommends optimal actions</p>
</li>
<li><p>Evaluates trade-offs</p>
</li>
<li><p>Suggests decisions under constraints</p>
</li>
</ul>
<h3>Example:</h3>
<p>Instead of:</p>
<blockquote>
<p>“Traffic will spike tomorrow”</p>
</blockquote>
<p>It says:</p>
<blockquote>
<p>“Scale Kubernetes cluster by 30% at 9 AM to maintain SLA while minimizing cost”</p>
</blockquote>
<h3>Techniques involved:</h3>
<ul>
<li><p>Optimization algorithms</p>
</li>
<li><p>Simulation models</p>
</li>
<li><p>Reinforcement learning (in advanced systems)</p>
</li>
</ul>
<h3>Key takeaway:</h3>
<p>This is where AI starts influencing <strong>business outcomes directly</strong>.</p>
<hr />
<h1>5. Generative AI – The Creativity Layer</h1>
<p>Generative AI changed the conversation around AI—and for good reason.</p>
<p>It doesn’t just analyze data—it <strong>creates new artifacts</strong>.</p>
<h3>What it really does:</h3>
<ul>
<li><p>Generates text, code, images, audio</p>
</li>
<li><p>Understands context and intent</p>
</li>
<li><p>Assists in knowledge work</p>
</li>
</ul>
<h3>Examples:</h3>
<ul>
<li><p>Writing code using AI assistants</p>
</li>
<li><p>Generating architecture documentation</p>
</li>
<li><p>Creating synthetic test data</p>
</li>
</ul>
<h3>Important nuance:</h3>
<p>Generative AI is powerful, but:</p>
<ul>
<li><p>It <strong>does not guarantee correctness</strong></p>
</li>
<li><p>It requires <strong>guardrails and validation</strong></p>
</li>
</ul>
<h3>For experienced engineers:</h3>
<p>Think of it as a <strong>probabilistic interface over knowledge</strong>, not a source of truth.</p>
<hr />
<h1>6. Agentic AI – From Assistants to Actors</h1>
<p>This is where things get truly transformative.</p>
<p>Agentic AI systems don’t just respond—they <strong>plan, decide, and execute</strong>.</p>
<h3>What defines an agent:</h3>
<ul>
<li><p>Has a goal</p>
</li>
<li><p>Breaks tasks into steps</p>
</li>
<li><p>Uses tools (APIs, databases, services)</p>
</li>
<li><p>Iterates based on feedback</p>
</li>
</ul>
<h3>Example:</h3>
<p>A cloud operations agent that:</p>
<ol>
<li><p>Detects anomaly</p>
</li>
<li><p>Diagnoses root cause</p>
</li>
<li><p>Applies fix</p>
</li>
<li><p>Monitors outcome</p>
</li>
</ol>
<p>All without human intervention.</p>
<h3>Architecture pattern:</h3>
<ul>
<li>Planner → Tool Executor → Memory → Feedback loop</li>
</ul>
<h3>Critical insight:</h3>
<p>Agentic AI introduces <strong>operational risk</strong>. Governance, observability, and control mechanisms become essential.</p>
<hr />
<h1>7. Cognitive &amp; Autonomous AI – Where Boundaries Blur</h1>
<p>These categories often overlap with others but are still useful distinctions.</p>
<h3>Cognitive AI:</h3>
<ul>
<li><p>Focuses on human-like understanding</p>
</li>
<li><p>Used in NLP, sentiment analysis, decision support</p>
</li>
</ul>
<h3>Autonomous AI:</h3>
<ul>
<li><p>Operates in real-world environments</p>
</li>
<li><p>Seen in robotics, self-driving systems</p>
</li>
</ul>
<h3>Why this matters:</h3>
<p>These are not separate silos—they are <strong>compositions of multiple AI types working together</strong>.</p>
<hr />
<h1>Putting It All Together: A Real-World Architecture View</h1>
<p>Let’s take a modern cloud platform:</p>
<ul>
<li><p><strong>Descriptive AI</strong> → Dashboards &amp; observability</p>
</li>
<li><p><strong>Diagnostic AI</strong> → Root cause analysis</p>
</li>
<li><p><strong>Predictive AI</strong> → Failure forecasting</p>
</li>
<li><p><strong>Prescriptive AI</strong> → Recommended actions</p>
</li>
<li><p><strong>Agentic AI</strong> → Auto-remediation workflows</p>
</li>
<li><p><strong>Generative AI</strong> → Incident summaries &amp; documentation</p>
</li>
</ul>
<p>This is what a <strong>true AI-powered system</strong> looks like—not a single model, but an ecosystem.</p>
<hr />
<h1>What Most Teams Get Wrong</h1>
<h3>1. Jumping straight to Generative AI</h3>
<p>Without strong data and prediction layers, GenAI becomes a <strong>fancy UI over weak systems</strong>.</p>
<h3>2. Ignoring data quality</h3>
<p>Garbage in → hallucinations out.</p>
<h3>3. Over-automating too early</h3>
<p>Agentic AI without governance can cause <strong>cascading failures</strong>.</p>
<hr />
<h1>A Practical Adoption Roadmap</h1>
<p>If you're building or modernizing systems:</p>
<h3>Step 1: Strengthen Descriptive + Diagnostic</h3>
<ul>
<li><p>Observability</p>
</li>
<li><p>Data pipelines</p>
</li>
<li><p>Reliable metrics</p>
</li>
</ul>
<h3>Step 2: Introduce Predictive Models</h3>
<ul>
<li><p>Start with high-impact use cases</p>
</li>
<li><p>Keep humans in the loop</p>
</li>
</ul>
<h3>Step 3: Add Prescriptive Intelligence</h3>
<ul>
<li><p>Decision support systems</p>
</li>
<li><p>Controlled automation</p>
</li>
</ul>
<h3>Step 4: Use Generative AI for Productivity</h3>
<ul>
<li><p>Documentation</p>
</li>
<li><p>Code generation</p>
</li>
<li><p>Knowledge retrieval</p>
</li>
</ul>
<h3>Step 5: Move to Agentic AI (Carefully)</h3>
<ul>
<li><p>Start with low-risk workflows</p>
</li>
<li><p>Add guardrails and monitoring</p>
</li>
</ul>
<hr />
<h1>Final Thoughts</h1>
<p>AI is not about choosing between ML, GenAI, or agents.</p>
<p>It’s about <strong>composing the right capabilities at the right layer</strong>.</p>
<p>The real competitive advantage comes from:</p>
<ul>
<li><p>Knowing <em>which type of AI to use</em></p>
</li>
<li><p>Knowing <em>when not to use it</em></p>
</li>
<li><p>Designing systems where these layers <strong>work together seamlessly</strong></p>
</li>
</ul>
<hr />
<p><strong>The future of AI is not just intelligent systems—it’s <em>well-architected intelligence</em>.</strong></p>
<hr />
<p><em><strong>Azure Authority</strong></em> <em>Practical insights for engineers building the future of AI and cloud</em></p>
]]></content:encoded></item><item><title><![CDATA[MLOps, AIOps, LLMOps, and GenAIOps]]></title><description><![CDATA[Introduction
Artificial Intelligence is no longer confined to research labs—it’s powering business processes, customer experiences, and IT operations at scale. With this growth comes a new challenge: how do we manage, deploy, and operate AI systems r...]]></description><link>https://azureauthority.in/mlops-aiops-llmops-and-genaiops</link><guid isPermaLink="true">https://azureauthority.in/mlops-aiops-llmops-and-genaiops</guid><category><![CDATA[Artificial Intelligence]]></category><category><![CDATA[AI]]></category><category><![CDATA[#llmops]]></category><category><![CDATA[mlops]]></category><category><![CDATA[#AIOps]]></category><category><![CDATA[genaiops]]></category><category><![CDATA[generative ai]]></category><dc:creator><![CDATA[Siddhesh Prabhugaonkar]]></dc:creator><pubDate>Sun, 14 Sep 2025 13:34:08 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1757856550625/63860462-d46b-4603-bb03-04335930112b.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2 id="heading-introduction">Introduction</h2>
<p>Artificial Intelligence is no longer confined to research labs—it’s powering business processes, customer experiences, and IT operations at scale. With this growth comes a new challenge: <strong>how do we manage, deploy, and operate AI systems reliably?</strong></p>
<p>That’s where the world of “Ops” comes in. Over the years, we’ve seen terms like <strong>MLOps, AIOps, LLMOps, and now GenAIOps</strong> emerge. They sound similar but address very different problems. In this post, we’ll demystify them, compare their scope, and explore where they fit in the modern AI landscape.</p>
<hr />
<h2 id="heading-1-mlops-machine-learning-operations">1. MLOps – Machine Learning Operations</h2>
<p>MLOps is the <strong>DevOps for machine learning</strong>. It focuses on automating the lifecycle of ML models:</p>
<ul>
<li><p><strong>Core Idea</strong>: Make model development, deployment, and monitoring as systematic as software engineering.</p>
</li>
<li><p><strong>Pipeline</strong>: Data ingestion → model training → validation → deployment → monitoring → retraining.</p>
</li>
<li><p><strong>Key Tools</strong>: MLflow, Kubeflow, Airflow, Vertex AI, Azure ML.</p>
</li>
<li><p><strong>Use Cases</strong>: Predictive analytics, fraud detection, recommendation engines.</p>
</li>
</ul>
<p>Think of MLOps as the backbone that keeps ML models in production reliable and scalable.</p>
<hr />
<h2 id="heading-2-aiops-artificial-intelligence-for-it-operations">2. AIOps – Artificial Intelligence for IT Operations</h2>
<p>AIOps is about <strong>using AI to manage IT operations</strong>. Unlike MLOps, which is about building AI systems, AIOps uses AI to <strong>improve system uptime, reliability, and efficiency</strong>.</p>
<ul>
<li><p><strong>Core Idea</strong>: Apply machine learning to logs, metrics, and events to detect anomalies, predict outages, and automate responses.</p>
</li>
<li><p><strong>Pipeline</strong>: Data collection → correlation → anomaly detection → root cause analysis → automated remediation.</p>
</li>
<li><p><strong>Key Tools</strong>: Dynatrace, Moogsoft, Splunk ITSI, Datadog.</p>
</li>
<li><p><strong>Use Cases</strong>: Monitoring cloud infrastructure, detecting security anomalies, reducing false alerts.</p>
</li>
</ul>
<p>Think of AIOps as an <strong>AI-powered IT assistant</strong> that keeps systems running smoothly.</p>
<hr />
<h2 id="heading-3-llmops-operations-for-large-language-models">3. LLMOps – Operations for Large Language Models</h2>
<p>With the rise of GPT, LLaMA, and other large language models, we needed a new operational layer: <strong>LLMOps</strong>.</p>
<ul>
<li><p><strong>Core Idea</strong>: Manage the lifecycle of large language models in production—beyond traditional ML.</p>
</li>
<li><p><strong>Pipeline</strong>: Prompt engineering → fine-tuning → deployment (APIs, agents) → monitoring (latency, hallucinations, bias) → feedback loops.</p>
</li>
<li><p><strong>Key Challenges</strong>:</p>
<ul>
<li><p>Handling huge model sizes &amp; costs.</p>
</li>
<li><p>Guarding against hallucinations.</p>
</li>
<li><p>Monitoring prompt performance.</p>
</li>
<li><p>Ensuring data privacy and compliance.</p>
</li>
</ul>
</li>
<li><p><strong>Key Tools</strong>: LangChain, Guardrails, Weights &amp; Biases, TruLens, Ragas.</p>
</li>
<li><p><strong>Use Cases</strong>: Chatbots, copilots, content generation, summarization.</p>
</li>
</ul>
<p>If MLOps was built for structured ML, <strong>LLMOps is designed for unstructured, generative, language-heavy models</strong>.</p>
<hr />
<h2 id="heading-4-genaiops-operations-for-generative-ai">4. GenAIOps – Operations for Generative AI</h2>
<p>GenAIOps takes things a step further—it’s not just about text-based LLMs, but the entire <strong>Generative AI ecosystem</strong> (text, image, audio, video, multimodal).</p>
<ul>
<li><p><strong>Core Idea</strong>: Provide governance, scalability, and responsible AI practices for <strong>all generative models</strong>.</p>
</li>
<li><p><strong>Pipeline</strong>: Multi-modal data ingestion → foundation model deployment → orchestration with agents → safety guardrails → human-in-the-loop feedback.</p>
</li>
<li><p><strong>Key Concerns</strong>:</p>
<ul>
<li><p>Cost optimization (GPU-heavy workloads).</p>
</li>
<li><p>Safety and compliance (toxicity, bias, IP issues).</p>
</li>
<li><p>Orchestrating multi-agent systems.</p>
</li>
<li><p>Scaling multimodal models.</p>
</li>
</ul>
</li>
<li><p><strong>Emerging Tools</strong>: LangGraph, CrewAI, Semantic Kernel, AutoGen.</p>
</li>
<li><p><strong>Use Cases</strong>: Enterprise copilots, creative content generation, multimodal assistants.</p>
</li>
</ul>
<p>GenAIOps is still evolving, but it’s where enterprises are headed as they look beyond just text-based AI.</p>
<hr />
<h2 id="heading-comparison-table">Comparison Table</h2>
<div class="hn-table">
<table>
<thead>
<tr>
<td>Aspect</td><td><strong>MLOps</strong></td><td><strong>AIOps</strong></td><td><strong>LLMOps</strong></td><td><strong>GenAIOps</strong></td></tr>
</thead>
<tbody>
<tr>
<td>Focus</td><td>ML model lifecycle</td><td>IT operations automation</td><td>LLM lifecycle (prompts, fine-tuning)</td><td>Full generative AI lifecycle</td></tr>
<tr>
<td>Data Type</td><td>Structured, tabular</td><td>Logs, metrics, events</td><td>Unstructured text</td><td>Text, image, video, multimodal</td></tr>
<tr>
<td>Goal</td><td>Reliable ML deployment</td><td>Smarter, automated IT operations</td><td>Safe &amp; effective LLM deployments</td><td>Scaling and governing GenAI</td></tr>
<tr>
<td>Maturity</td><td>Established</td><td>Growing adoption</td><td>Emerging</td><td>Early-stage, evolving</td></tr>
</tbody>
</table>
</div><hr />
<h2 id="heading-the-road-ahead">The Road Ahead</h2>
<ul>
<li><p><strong>MLOps</strong> will remain the foundation for traditional ML.</p>
</li>
<li><p><strong>AIOps</strong> will grow as cloud and hybrid IT infrastructures get more complex.</p>
</li>
<li><p><strong>LLMOps</strong> will become critical as more enterprises build on top of GPT-like models.</p>
</li>
<li><p><strong>GenAIOps</strong> is the future—covering governance, safety, and orchestration across multiple generative modalities.</p>
</li>
</ul>
<p>The bottom line: these aren’t just buzzwords—they represent the <strong>evolution of how we operationalize intelligence at scale</strong>.</p>
<hr />
<p>If you’re a developer, start with <strong>MLOps</strong> concepts.<br />If you’re in IT, explore <strong>AIOps</strong>.<br />If you’re experimenting with GPT-like models, look at <strong>LLMOps</strong>.<br />And if you’re thinking about the <strong>future of enterprise AI</strong>, keep an eye on <strong>GenAIOps</strong>.</p>
<p>See you in the next post.</p>
]]></content:encoded></item><item><title><![CDATA[Getting Started with OpenAI API in Python: A Step-by-Step Guide]]></title><description><![CDATA[Introduction
Artificial Intelligence (AI) is rapidly transforming how we work, learn, and create. Among the most powerful tools in this space are large language models (LLMs) like OpenAI’s GPT models, which can generate, summarize, and analyze text w...]]></description><link>https://azureauthority.in/getting-started-with-openai-api-in-python-a-step-by-step-guide</link><guid isPermaLink="true">https://azureauthority.in/getting-started-with-openai-api-in-python-a-step-by-step-guide</guid><category><![CDATA[openai]]></category><category><![CDATA[AI]]></category><category><![CDATA[llm]]></category><category><![CDATA[large language models]]></category><category><![CDATA[Python]]></category><dc:creator><![CDATA[Siddhesh Prabhugaonkar]]></dc:creator><pubDate>Sat, 06 Sep 2025 11:52:50 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1757159529487/f88f09c3-271e-47ad-b93d-da509571b810.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2 id="heading-introduction">Introduction</h2>
<p>Artificial Intelligence (AI) is rapidly transforming how we work, learn, and create. Among the most powerful tools in this space are <strong>large language models (LLMs)</strong> like OpenAI’s GPT models, which can generate, summarize, and analyze text with human-like fluency.</p>
<p>If you’re a developer, data scientist, or AI enthusiast, learning how to integrate the <strong>OpenAI API</strong> into your Python projects is a valuable skill. Whether you’re building a chatbot, automating document summarization, or experimenting with structured data extraction, Python makes it easy to get started.</p>
<p>In this guide, we’ll walk through:</p>
<ul>
<li><p>Setting up your Python environment</p>
</li>
<li><p>Installing necessary libraries</p>
</li>
<li><p>Using the OpenAI API for <strong>text summarization</strong></p>
</li>
<li><p>Understanding how <strong>chat roles</strong> work</p>
</li>
<li><p>Generating <strong>structured outputs</strong> (bullet points, JSON, custom formats)</p>
</li>
</ul>
<p>Let’s dive in</p>
<hr />
<h2 id="heading-part-1-setting-up-your-workspace">Part 1: Setting Up Your Workspace</h2>
<p>First things first, let's get your development environment ready. This involves getting Python installed, setting up a dedicated project folder, and securing your API key.</p>
<h3 id="heading-prerequisites">Prerequisites</h3>
<ul>
<li><p><strong>Python 3.7.1 or newer:</strong> If you don't have it, you can download it from the <a target="_blank" href="https://www.python.org/downloads/">official Python website</a>.</p>
</li>
<li><p>A <strong>terminal</strong> or <strong>command prompt</strong>.</p>
</li>
<li><p>An internet connection.</p>
</li>
</ul>
<h3 id="heading-step-1-get-your-openai-api-key">Step 1: Get Your OpenAI API Key 🔑</h3>
<p>Your API key is your secret password to access OpenAI's models.</p>
<ol>
<li><p>Go to the <a target="_blank" href="https://platform.openai.com/">OpenAI Platform</a> and create an account or log in.</p>
</li>
<li><p>Navigate to the <a target="_blank" href="https://platform.openai.com/api-keys">API Keys section</a> in the dashboard.</p>
</li>
<li><p>Click "<strong>Create new secret key</strong>." Give it a name you'll recognize (e.g., "PythonProjectKey").</p>
</li>
<li><p><strong>Important:</strong> Copy the key immediately and save it somewhere secure, like a password manager. You will <strong>not</strong> be able to see it again after you close the window.</p>
</li>
</ol>
<h3 id="heading-step-2-create-and-configure-your-python-project">Step 2: Create and Configure Your Python Project</h3>
<p>It's a best practice to create a dedicated folder and a virtual environment for each project. This keeps dependencies isolated and your projects tidy.</p>
<ol>
<li><p>Open your terminal and run these commands to create and enter a new project folder:</p>
<pre><code class="lang-bash"> mkdir llm-api-demo
 <span class="hljs-built_in">cd</span> llm-api-demo
</code></pre>
</li>
<li><p>Create a virtual environment named <code>venv</code>:</p>
<pre><code class="lang-bash"> python -m venv venv
</code></pre>
</li>
<li><p>Activate the virtual environment. The command differs based on your operating system:</p>
<ul>
<li><p><strong>On macOS/Linux:</strong> <code>source venv/bin/activate</code></p>
</li>
<li><p><strong>On Windows:</strong> <code>venv\Scripts\activate</code></p>
</li>
</ul>
</li>
</ol>
<p>    You'll know it's active when you see <code>(venv)</code> at the beginning of your terminal prompt.</p>
<ol start="4">
<li><p>With the virtual environment active, install the necessary Python libraries:</p>
<pre><code class="lang-bash"> pip install openai python-dotenv jupyter
</code></pre>
<ul>
<li><p><code>openai</code>: The official Python library for interacting with the OpenAI API.</p>
</li>
<li><p><code>python-dotenv</code>: A handy tool to manage environment variables, which is how we'll protect our API key.</p>
</li>
<li><p><code>jupyter</code>: An interactive coding environment perfect for experimenting.</p>
</li>
</ul>
</li>
<li><p>Create a file named <code>.env</code> in your <code>llm-api-demo</code> project folder. This file will securely store your API key. Add the key you saved earlier to this file:</p>
<pre><code class="lang-bash"> OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
</code></pre>
<p> 🔒 <strong>Security Note:</strong> Never share your <code>.env</code> file or commit it to a public repository like GitHub. If you use Git, add <code>.env</code> to your <code>.gitignore</code> file.</p>
</li>
</ol>
<hr />
<h2 id="heading-part-2-making-your-first-api-call">Part 2: Making Your First API Call</h2>
<p>Now for the exciting part! We'll use a Jupyter Notebook to write and run our Python code interactively.</p>
<ol>
<li><p>In your terminal (with the virtual environment still active), start Jupyter:</p>
<pre><code class="lang-bash"> jupyter notebook
</code></pre>
<p> This will open a new tab in your web browser.</p>
</li>
<li><p>Click "New" and select "Python 3 (ipykernel)" to create a new notebook.</p>
</li>
<li><p>In the first cell of the notebook, enter the following code to summarize a piece of text.</p>
</li>
</ol>
<pre><code class="lang-python"><span class="hljs-comment"># Step 1: Import libraries and load the API key</span>
<span class="hljs-keyword">from</span> openai <span class="hljs-keyword">import</span> OpenAI
<span class="hljs-keyword">import</span> os
<span class="hljs-keyword">from</span> dotenv <span class="hljs-keyword">import</span> load_dotenv

load_dotenv()

<span class="hljs-comment"># Step 2: Initialize the OpenAI client</span>
<span class="hljs-comment"># The library automatically looks for the OPENAI_API_KEY in your environment</span>
client = OpenAI()

<span class="hljs-comment"># Step 3: Define the text and make the API call</span>
input_text = <span class="hljs-string">"""
Large language models (LLMs) are a type of artificial intelligence that can
generate human-like text based on the input they receive. These models are
trained on massive datasets and can perform a wide range of language tasks,
such as translation, summarization, and question answering. However, they also
come with challenges like hallucination, bias, and the need for large amounts
of computational power.
"""</span>

response = client.chat.completions.create(
  model=<span class="hljs-string">"gpt-4o-mini"</span>,
  messages=[
    {<span class="hljs-string">"role"</span>: <span class="hljs-string">"system"</span>, <span class="hljs-string">"content"</span>: <span class="hljs-string">"You are a helpful assistant that summarizes text."</span>},
    {<span class="hljs-string">"role"</span>: <span class="hljs-string">"user"</span>, <span class="hljs-string">"content"</span>: <span class="hljs-string">f"Summarize this:\n\n<span class="hljs-subst">{input_text}</span>"</span>}
  ],
  temperature=<span class="hljs-number">0.5</span>
)

<span class="hljs-comment"># Step 4: Print the result</span>
print(response.choices[<span class="hljs-number">0</span>].message.content)
</code></pre>
<p>Run the cell by pressing <code>Shift + Enter</code>. In a few moments, you should see a concise summary of the <code>input_text</code> printed below!</p>
<hr />
<h2 id="heading-part-3-anatomy-of-an-api-call">Part 3: Anatomy of an API Call</h2>
<p>Let's break down the key parameters in that <code>client.chat.completions.create</code> call to understand what's happening.</p>
<h3 id="heading-model">Model</h3>
<p>The <code>model</code> parameter specifies which OpenAI model you want to use. We used <code>"gpt-4o-mini"</code>, a fantastic new model that balances high intelligence with great speed and affordability. You can explore other models on the <a target="_blank" href="https://platform.openai.com/docs/models">OpenAI Models page</a>.</p>
<h3 id="heading-messages-amp-roles">Messages &amp; Roles</h3>
<p>The <code>messages</code> parameter is a list that forms the conversation. Each message is a dictionary with a <code>role</code> and <code>content</code>.</p>
<ul>
<li><p><code>system</code>: This sets the stage. It gives the AI its instructions or persona for the entire conversation. Think of it as the director telling the actor how to behave. It's often the first message.</p>
</li>
<li><p><code>user</code>: This is your input—the question or command you are giving the model.</p>
</li>
<li><p><code>assistant</code>: This role holds the model's previous responses. You use it to build multi-turn conversations, providing the AI with the chat history so it has context.</p>
</li>
</ul>
<h3 id="heading-temperature">Temperature</h3>
<p>The <code>temperature</code> parameter controls the randomness of the output. It ranges from 0 to 2.</p>
<ul>
<li><p>A <strong>lower value</strong> (e.g., <code>0.2</code>) makes the output more deterministic and focused—good for factual tasks like summarization or code generation.</p>
</li>
<li><p>A <strong>higher value</strong> (e.g., <code>0.8</code>) makes the output more creative and random—great for brainstorming or writing stories.</p>
</li>
</ul>
<hr />
<h2 id="heading-part-4-advanced-magic-getting-structured-output">Part 4: Advanced Magic - Getting Structured Output</h2>
<p>Sometimes you don't just want plain text; you need data in a predictable format like JSON or a bulleted list. This is crucial for building applications where you need to parse the model's output.</p>
<h3 id="heading-the-easy-way-prompt-engineering">The Easy Way: Prompt Engineering</h3>
<p>You can often get a structured output just by asking for it in your prompt.</p>
<h4 id="heading-bullet-point-summary">Bullet Point Summary</h4>
<p>To get a bulleted list, simply adjust your <code>system</code> and <code>user</code> messages.</p>
<pre><code class="lang-python">response_bullets = client.chat.completions.create(
  model=<span class="hljs-string">"gpt-4o-mini"</span>,
  messages=[
    {<span class="hljs-string">"role"</span>: <span class="hljs-string">"system"</span>, <span class="hljs-string">"content"</span>: <span class="hljs-string">"You are a helpful assistant that summarizes text into bullet points."</span>},
    {<span class="hljs-string">"role"</span>: <span class="hljs-string">"user"</span>, <span class="hljs-string">"content"</span>: <span class="hljs-string">f"Summarize the following text into 3-5 concise bullet points:\n\n<span class="hljs-subst">{input_text}</span>"</span>}
  ],
  temperature=<span class="hljs-number">0.4</span>
)

print(response_bullets.choices[<span class="hljs-number">0</span>].message.content)
</code></pre>
<h3 id="heading-the-robust-way-json-mode">The Robust Way: JSON Mode</h3>
<p>For applications that need guaranteed, machine-readable output, asking in the prompt can sometimes fail. A much more reliable method is to use <strong>JSON Mode</strong>. By adding one parameter, you can force the model to return a valid JSON object.</p>
<p>Let's ask the model for a summary and a list of key points in a structured JSON format.</p>
<pre><code class="lang-python">response_json = client.chat.completions.create(
  model=<span class="hljs-string">"gpt-4o-mini"</span>,
  <span class="hljs-comment"># Add this parameter to enable JSON Mode</span>
  response_format={ <span class="hljs-string">"type"</span>: <span class="hljs-string">"json_object"</span> },
  messages=[
    {<span class="hljs-string">"role"</span>: <span class="hljs-string">"system"</span>, <span class="hljs-string">"content"</span>: <span class="hljs-string">"You are a helpful assistant that returns summaries in a valid JSON format."</span>},
    {<span class="hljs-string">"role"</span>: <span class="hljs-string">"user"</span>, <span class="hljs-string">"content"</span>: <span class="hljs-string">f"Summarize the text. Return a JSON object with a 'summary' field and a 'key_points' array of strings.\n\nText:\n<span class="hljs-subst">{input_text}</span>"</span>}
  ],
  temperature=<span class="hljs-number">0.4</span>
)

print(response_json.choices[<span class="hljs-number">0</span>].message.content)
</code></pre>
<p>Now the output will be a clean, parsable JSON string, perfect for integrating into a larger application.</p>
<h2 id="heading-next-steps">Next Steps</h2>
<p>With this foundation, you can now:</p>
<ul>
<li><p>Build <strong>chatbots</strong> with context retention</p>
</li>
<li><p>Create <strong>document summarizers</strong></p>
</li>
<li><p>Extract structured insights (entities, sentiment, action items)</p>
</li>
<li><p>Integrate LLMs into apps, dashboards, or workflows</p>
</li>
</ul>
<p>Explore more in the official <a target="_blank" href="https://platform.openai.com/docs/">OpenAI API documentation</a>.</p>
<hr />
<h2 id="heading-conclusion">Conclusion</h2>
<p>Learning how to use the <strong>OpenAI API with Python</strong> unlocks endless possibilities — from automating tedious tasks to building intelligent assistants.</p>
<p>By setting up a secure Python environment, managing your API key properly, and experimenting with structured outputs, you’ll be well on your way to building AI-powered applications.</p>
<p>The AI revolution is here, and Python + OpenAI makes it easier than ever to be a part of it.</p>
]]></content:encoded></item><item><title><![CDATA[Azure Functions: Interview Questions and Answers]]></title><description><![CDATA[Introduction
Azure Functions is a serverless compute service that lets you run event-triggered code without having to explicitly provision or manage infrastructure. With Azure Functions, you can use your development language of choice, such as C#, Ja...]]></description><link>https://azureauthority.in/azure-functions-interview-questions-and-answers</link><guid isPermaLink="true">https://azureauthority.in/azure-functions-interview-questions-and-answers</guid><category><![CDATA[Azure]]></category><category><![CDATA[Azure Functions]]></category><category><![CDATA[interview questions]]></category><dc:creator><![CDATA[Siddhesh Prabhugaonkar]]></dc:creator><pubDate>Mon, 29 Apr 2024 18:30:08 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1714215495666/81d3a284-0909-4e4f-b250-7e0c25252759.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2 id="heading-introduction">Introduction</h2>
<p><strong>Azure Functions</strong> is a serverless compute service that lets you run event-triggered code without having to explicitly provision or manage infrastructure. With Azure Functions, you can use your development language of choice, such as C#, Java, JavaScript, PowerShell, and Python, among others.</p>
<h2 id="heading-key-terms">Key Terms</h2>
<ul>
<li><p><strong>Function App</strong>: A function app is a way to organize and collectively manage your functions.</p>
</li>
<li><p><strong>Function</strong>: A piece of code that performs a specific task or operation, triggered by an event.</p>
</li>
<li><p><strong>Serverless Computing</strong>: A cloud computing model where cloud providers dynamically manage the allocation of machine resources, scaling automatically based on demand.</p>
</li>
<li><p><strong>Trigger</strong>: A trigger is what causes a function to run. A function must have exactly one trigger.</p>
</li>
<li><p><strong>Binding</strong>: A declarative way to connect inputs and outputs to Azure Functions, enabling seamless integration with external data sources and services.</p>
</li>
<li><p><strong>Durable Functions</strong>: An extension of Azure Functions that lets you write stateful functions in a serverless environment.</p>
</li>
</ul>
<h2 id="heading-triggers-and-bindings">Triggers and Bindings</h2>
<p>A <strong>trigger</strong> defines how a function is invoked. Each function has one trigger. Triggers have associated data, which is often provided as the payload of the function. Trigger initiates the function execution based on specific event or condition. Triggers can be HTTP requests, blob storage events, queue messages, timer schedules, and more.</p>
<p><strong>Bindings</strong> enable functions to interact with external data sources and services seamlessly. Bindings can be input bindings, providing data to the function, or output bindings, allowing the function to write data to external services. Bindings are optional.</p>
<h2 id="heading-interview-questions-and-answers">Interview Questions and Answers</h2>
<ol>
<li><p><strong>Q: What is Azure Functions?</strong><br /> A: Azure Functions is a serverless compute service that allows you to run code on-demand without having to explicitly provision or manage infrastructure.</p>
</li>
<li><p><strong>Q: What are the different types of triggers in Azure Functions?</strong><br /> A: Azure Functions supports triggers like HTTP, Timer, Blob Trigger, Queue Trigger, Cosmos DB Trigger, and Event Hub Trigger, among others.</p>
</li>
<li><p><strong>Q: What is the difference between Azure Functions and Logic Apps?</strong><br /> A: Azure Functions is code-based, supports multiple languages, and is ideal for code-first developers. Logic Apps is a GUI-based service that helps in designing workflows.</p>
</li>
<li><p><strong>Q: What is Durable Functions?</strong><br /> A: Durable Functions is an extension of Azure Functions that lets you write stateful functions in a serverless environment.</p>
</li>
<li><p><strong>Q: What is the consumption plan in Azure Functions?</strong><br /> A: In the consumption plan, instances of the Azure Functions host are dynamically added and removed based on the number of incoming events.</p>
</li>
<li><p><strong>Q: How can you secure Azure Functions?</strong><br /> A: Azure Functions can be secured using keys, Azure Active Directory, and by restricting the inbound IP address.</p>
</li>
<li><p><strong>Q: What is the role of an Azure Function App?</strong><br /> A: A function app is a way to organize and collectively manage your functions.</p>
</li>
<li><p><strong>Q: What is the difference between input and output bindings in Azure Functions?</strong><br /> A: Input bindings are used to read data from an external resource, while output bindings are used to write data to an external resource.</p>
</li>
<li><p><strong>Q: What is the maximum timeout for Azure Functions?</strong><br /> A: The maximum timeout for Azure Functions depends on the hosting plan. It’s unlimited for Premium plan and 5 minutes for Consumption plan.</p>
</li>
<li><p><strong>Q: Your company wants to process data as it arrives in a Blob Storage. How can Azure Functions help?</strong><br />A: Azure Functions can help by creating a Blob Trigger function. This function will be triggered whenever a new data arrives in the Blob Storage.</p>
</li>
<li><p><strong>Q: Your company wants to run a cleanup task every night at 2 AM. How can Azure Functions assist?</strong><br />A: Azure Functions can assist by creating a Timer Trigger function. This function will be scheduled to run every night at 2 AM.</p>
</li>
<li><p><strong>Q: Your company wants to create a microservice architecture. How can Azure Functions be used?</strong><br />A: Azure Functions can be used to create individual functions for each microservice. These functions can then be independently developed, deployed, and scaled.</p>
</li>
<li><p><strong>Q: Your company wants to process data from an Event Hub. How can Azure Functions help?</strong><br />A: Azure Functions can help by creating an Event Hub Trigger function. This function will be triggered whenever a new event is available in the Event Hub.</p>
</li>
<li><p><strong>Q: Your company wants to create a serverless workflow. How can Azure Functions assist?</strong><br />A: Azure Functions can assist by creating a Durable Function. This function can define a stateful workflow in a serverless environment.</p>
</li>
<li><p><strong>Q:</strong> What are Azure Functions, and how do they differ from traditional server-based applications?<br />A: Azure Functions are event-driven, serverless compute solutions where developers focus solely on writing code without managing infrastructure. Traditional server-based applications require provisioning and maintenance of servers.</p>
</li>
<li><p><strong>Q:</strong> Explain the concept of triggers in Azure Functions with examples.<br />A: Triggers in Azure Functions initiate function execution based on specific events. Examples include HTTP triggers for responding to web requests, blob storage triggers for processing file uploads, and queue triggers for processing messages in Azure Storage Queues.</p>
</li>
<li><p><strong>Q:</strong> How do bindings simplify data integration in Azure Functions?<br />A: Bindings in Azure Functions provide a declarative way to connect inputs and outputs to functions, enabling seamless interaction with external data sources and services. They eliminate the need for manual data retrieval and processing within function code.</p>
</li>
<li><p><strong>Q:</strong> What is the difference between input and output bindings in Azure Functions?<br />A: Input bindings provide data to the function, allowing it to consume external resources, while output bindings enable the function to write data to external services or repositories.</p>
</li>
<li><p><strong>Q:</strong> Explain the role of Azure Event Grid in event-driven architectures with Azure Functions.<br />A: Azure Event Grid is a fully managed event routing service that simplifies event-driven architectures by enabling reliable event delivery at scale. Azure Functions can subscribe to Event Grid events to trigger function execution based on specific events happening in Azure services or custom applications.</p>
</li>
<li><p><strong>Q:</strong> How does Azure Blob Storage integration work in Azure Functions?<br />A: Azure Functions can be triggered by blob storage events, such as the creation, modification, or deletion of blobs. This integration enables Qs like image processing, file conversion, and data archival.</p>
</li>
<li><p><strong>Q:</strong> Describe the concept of Cosmos DB bindings in Azure Functions.<br />A: Cosmos DB bindings allow Azure Functions to interact with Azure Cosmos DB, a globally distributed, multi-model database service. Functions can read data from Cosmos DB collections or write data to them using input and output bindings.</p>
</li>
<li><p><strong>Q:</strong> What is an HTTP trigger, and how is it used in Azure Functions?<br />A: An HTTP trigger enables Azure Functions to respond to HTTP requests. This allows functions to act as webhooks, API endpoints, or backend services for web applications.</p>
</li>
<li><p><strong>Q:</strong> Explain the difference between durable functions and regular Azure Functions.<br />A: Durable Functions extend the capabilities of Azure Functions by providing stateful orchestration and coordination of function execution. They enable complex workflows and long-running processes by managing state and retry logic automatically.</p>
</li>
<li><p><strong>Q:</strong> How do you secure Azure Functions to prevent unauthorized access?<br />A: Azure Functions can be secured using authentication and authorization mechanisms like Azure AD authentication, API keys, OAuth tokens, and Azure API Management. Additionally, access control can be enforced using role-based access control (RBAC) and Azure Active Directory (AAD) integration.</p>
</li>
<li><p>Q: You need to implement a serverless email notification system triggered by new records added to a database. How would you design this solution using Azure Functions?<br />A: Use Azure Functions with Cosmos DB input binding to trigger function execution when new records are added to the database. Within the function, retrieve the data from the input binding, format the email notification, and send it using an email service like SendGrid or SMTP.</p>
</li>
<li><p>Q: A company wants to implement an automated data processing pipeline triggered by new files uploaded to Azure Blob Storage. Outline the architecture and components you would use for this solution.<br />A: Utilize Azure Blob Storage triggers in Azure Functions to initiate function execution upon new file uploads. Within the function, retrieve the file content, process it as needed, and store the results in another storage service or repository.</p>
</li>
<li><p>Q: You're tasked with building a serverless API using Azure Functions to integrate with an existing backend system. How would you design this solution to ensure scalability and reliability?<br />A: Implement HTTP triggers in Azure Functions to expose endpoints for API operations. Utilize Azure Functions Premium Plan or Azure API Management for scalability and reliability. Implement retry logic, error handling, and monitoring to ensure robustness.</p>
</li>
<li><p>Q: A company requires periodic data aggregation and analysis for business intelligence purposes. How would you design a serverless solution using Azure Functions and Azure services?<br />A: Implement Azure Functions with timer triggers to execute data aggregation and analysis tasks on a predefined schedule. Utilize Azure Data Lake Storage or Azure SQL Database for storing aggregated data. Leverage Azure Application Insights for monitoring and Azure Logic Apps for workflow orchestration.</p>
</li>
<li><p>Q: You need to implement a fault-tolerant message processing system using Azure Functions and Azure Service Bus. Outline the architecture and error handling mechanisms you would employ for this solution.<br />A: Utilize Azure Service Bus triggers in Azure Functions to process messages from queues or topics. Implement retry policies, dead-letter queues, and backoff strategies.</p>
</li>
</ol>
<p>This guide should provide a solid foundation for your Azure Functions interview preparation. Good luck!</p>
]]></content:encoded></item><item><title><![CDATA[Azure Active Directory: Interview Questions and Answers]]></title><description><![CDATA[Introduction
Azure Active Directory (Azure AD) is Microsoft’s cloud-based identity and access management service, which helps your employees sign in and access resources. These resources could be Microsoft Office 365, the Azure portal, or many of the...]]></description><link>https://azureauthority.in/azure-active-directory-interview-questions-and-answers</link><guid isPermaLink="true">https://azureauthority.in/azure-active-directory-interview-questions-and-answers</guid><category><![CDATA[azure-active-directory]]></category><category><![CDATA[Azure AD]]></category><category><![CDATA[microsoft-entra-id]]></category><category><![CDATA[Azure]]></category><dc:creator><![CDATA[Siddhesh Prabhugaonkar]]></dc:creator><pubDate>Sat, 27 Apr 2024 18:30:17 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1714214204606/9fd4845b-1652-4ca1-8d8d-39ea117273bd.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2 id="heading-introduction">Introduction</h2>
<p><strong>Azure Active Directory (Azure AD)</strong> is Microsoft’s cloud-based identity and access management service, which helps your employees sign in and access resources. These resources could be Microsoft Office 365, the Azure portal, or many of the other SaaS applications.</p>
<p>Azure AD is not the same as Windows Active Directory. While they share a common name, they address different needs at different levels in on-premise and cloud environment respectively.</p>
<p>Please note that Azure AD is now renamed to <strong>Microsoft Entra ID</strong>.</p>
<h2 id="heading-key-terms">Key Terms</h2>
<p>Here are some of the key terms you should be aware of wrt to Azure AD:</p>
<ul>
<li><p><strong>Tenant</strong>: An organization’s instance of Azure AD. A tenant houses users in a directory.</p>
</li>
<li><p><strong>Domain</strong>: An identifier for your tenant. You can have multiple domains in a tenant.</p>
</li>
<li><p><strong>User</strong>: An individual who has a profile in Azure AD.</p>
</li>
<li><p><strong>Group</strong>: A set of users created for ease of management.</p>
</li>
<li><p><strong>Application</strong>: A software as a service (SaaS) application that you’ve integrated with Azure AD.</p>
</li>
<li><p><strong>Federation</strong>: An agreement that is established between two businesses to trust each other’s user identities and to provide authorization to secured resources.</p>
</li>
</ul>
<h2 id="heading-interview-questions-and-answers">Interview Questions and Answers</h2>
<ol>
<li><p><strong>Q: What is the difference between Azure AD and Windows Server AD?</strong><br /> A: Azure AD is a cloud-based identity solution, while Windows Server AD is an on-premises identity solution. Azure AD does not use LDAP, Kerberos, or NTLM authentication, which are used by Windows Server AD.</p>
</li>
<li><p><strong>Q: What is Azure AD B2C?</strong><br /> A: Azure AD B2C (Business to Customer) is a cloud identity service allowing you to connect to your customer-facing applications using their existing social accounts or by creating new credentials in your application.</p>
</li>
<li><p><strong>Q: What is Azure AD Connect?</strong><br /> A: Azure AD Connect is a tool that connects and syncs on-premises Active Directory with Azure AD.</p>
</li>
<li><p><strong>Q: What is the role of Azure AD in Office 365?</strong><br /> A: Azure AD provides identity services that applications use for authentication and authorization to access resources in Office 365.</p>
</li>
<li><p><strong>Q: What is conditional access in Azure AD?</strong><br /> A: Conditional Access is a capability of Azure AD that enables you to enforce controls on the access to apps in your environment based on specific conditions.</p>
</li>
<li><p><strong>Q: What is Azure AD Application Proxy?</strong><br /> A: Azure AD Application Proxy is a feature that allows users to access on-premises web applications from outside your corporate network.</p>
</li>
<li><p><strong>Q: What is the difference between Azure AD B2B and B2C?</strong><br /> A: Azure AD B2B (Business to Business) is for sharing your business applications or services with external business users, while Azure AD B2C is for customer-facing applications.</p>
</li>
<li><p><strong>Q: What is Azure AD Privileged Identity Management (PIM)?</strong><br /> A: Azure AD PIM is a service that enables you to manage, control, and monitor access within your organization.</p>
</li>
<li><p><strong>Q: What is the difference between assigned and eligible access in Azure AD PIM?</strong><br /> A: Assigned access means a user has been given a role and can exercise it anytime. Eligible access means a user can activate the role when needed, but it’s not always on.</p>
</li>
<li><p><strong>Q: What is Azure AD Identity Protection?</strong><br />A: Azure AD Identity Protection is a tool that allows organizations to discover, investigate, and remediate identity-based risks in their environment.</p>
</li>
<li><p><strong>Q: What is Azure AD Access Reviews?</strong><br />A: Azure AD Access Reviews is a feature that allows organizations to manage and control users’ access to groups, applications, and roles.</p>
</li>
<li><p><strong>Q: What is Azure AD Password Protection?</strong><br />A: Azure AD Password Protection is a feature that helps you prevent the use of weak or common passwords.</p>
</li>
<li><p><strong>Q: What is Azure AD Multi-Factor Authentication (MFA)?</strong><br />A: Azure AD MFA is a method of authentication that requires the use of more than one verification method and adds a critical second layer of security to user sign-ins and transactions.</p>
</li>
<li><p><strong>Q: What is the difference between Azure AD Join and Azure AD Registration?</strong><br />A: Azure AD Join is a process to join a device to the Azure AD, while Azure AD Registration is a process to register a device to the Azure AD for the purpose of being managed.</p>
</li>
<li><p><strong>Q: What is Azure AD Seamless Single Sign-On (SSO)?</strong><br />A: Azure AD Seamless SSO automatically signs users in when they are on their corporate devices connected to your corporate network.</p>
</li>
<li><p><strong>Q: Your company wants to use a SaaS application. How can Azure AD help in managing access to this application?</strong><br />A: Azure AD can help by integrating the SaaS application with it. This allows you to manage access to the application, enforce MFA, and apply Conditional Access policies.</p>
</li>
<li><p><strong>Q: Your company has a legacy on-premises application. How can you make it accessible to remote users?</strong><br />A: You can use Azure AD Application Proxy to publish the on-premises application and make it accessible to remote users.</p>
</li>
<li><p><strong>Q: Your company wants to share its applications with its partners. How can Azure AD help?</strong><br />A: You can use Azure AD B2B collaboration to invite partner users to access your company’s applications.</p>
</li>
<li><p><strong>Q: Your company is concerned about the risk of users with privileged access. How can Azure AD help mitigate this risk?</strong><br />A: You can use Azure AD PIM to manage and monitor access rights of users. You can make privileged roles “eligible” instead of “assigned”, meaning users activate the role when needed.</p>
</li>
<li><p><strong>Q: Your company wants to ensure users are not using weak passwords. How can Azure AD assist?</strong><br />A: Azure AD Password Protection can help prevent the use of weak or common passwords by blocking such passwords.</p>
</li>
<li><p><strong>Q: What role does Azure AD play in securing mobile devices?</strong><br />A: Azure AD integrates with mobile device management (MDM) solutions like Intune to enforce security policies and conditional access controls on mobile devices accessing corporate resources.</p>
</li>
<li><p><strong>Q: How does Azure AD support password management and self-service capabilities?</strong><br />A: Azure AD provides features like self-service password reset (SSPR) and password writeback to on-premises AD, empowering users to manage their passwords securely.</p>
</li>
<li><p><strong>Q: What are the best practices for securing Azure AD against identity-based attacks?</strong><br />A: Best practices include enabling Multi-Factor Authentication (MFA), implementing Conditional Access policies, regularly reviewing sign-in logs, and enabling Identity Protection features.</p>
</li>
<li><p><strong>Q: Explain how you would design a scalable and resilient Azure AD architecture for a global organization.</strong><br />A: This question assesses your ability to design Azure AD solutions considering factors like redundancy, geo-distribution, disaster recovery, and compliance requirements.</p>
</li>
<li><p><strong>Q: An organization wants to allow external contractors temporary access to specific resources in their Azure AD tenant. How would you design a solution to facilitate this securely?</strong><br />A: You could leverage Azure AD B2B to invite external users as guest users, assign them limited access through Conditional Access policies, and enforce Multi-Factor Authentication for additional security.</p>
</li>
<li><p><strong>Q: A company is experiencing a significant increase in remote work and wants to ensure secure access to corporate resources from employees' personal devices. How would you recommend implementing this?</strong><br />A: Implementing Azure AD Conditional Access policies based on device compliance and enforcing MFA can help secure access from personal devices while maintaining productivity and security.</p>
</li>
<li><p><strong>Q: A multinational corporation with offices in multiple countries wants to centralize identity management while ensuring compliance with regional data privacy regulations. How would you approach this challenge?</strong><br />A: Implementing Azure AD with regional instances (geo-replication) and configuring Conditional Access policies based on location can help centralize identity management while adhering to regional compliance requirements.</p>
</li>
<li><p><strong>Q: A company's IT department needs to grant temporary elevated access to specific Azure AD roles for a software deployment. How would you implement this securely?</strong><br />A: Azure AD Privileged Identity Management (PIM) allows temporary elevation of access. By configuring time-bound access and requiring approval workflows, you can ensure secure elevation of privileges for the deployment window.</p>
</li>
<li><p><strong>Q: A large enterprise wants to migrate its existing on-premises identity infrastructure to Azure AD. Outline the steps you would take to plan and execute this migration.</strong><br />A: The migration would involve assessing the current identity infrastructure, planning the synchronization process using Azure AD Connect, testing the migration in a non-production environment, executing the migration in phases, and monitoring for any issues post-migration.</p>
</li>
</ol>
<p>This guide should provide a good foundation for your Azure AD interview preparation. Good luck!</p>
]]></content:encoded></item><item><title><![CDATA[Azure DevOps Interview Questions and Answers]]></title><description><![CDATA[What is Azure DevOps?
Azure DevOps Services is a service by Microsoft which helps organizations to fast pace and plan, develop, manage, monitor and deploy projects effectively and efficiently. It brings developers, managers, contributors and other st...]]></description><link>https://azureauthority.in/azure-devops-interview-questions-and-answers</link><guid isPermaLink="true">https://azureauthority.in/azure-devops-interview-questions-and-answers</guid><category><![CDATA[azure-devops]]></category><category><![CDATA[interview questions]]></category><dc:creator><![CDATA[Siddhesh Prabhugaonkar]]></dc:creator><pubDate>Thu, 25 Apr 2024 15:44:40 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1714059813694/c6623793-d479-4e26-b567-c5b2e1d07e5f.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2 id="heading-what-is-azure-devops"><strong>What is Azure DevOps?</strong></h2>
<p><a target="_blank" href="https://azure.microsoft.com/en-in/products/devops"><mark>Azure DevOps Services</mark></a> is a service by Microsoft which helps organizations to fast pace and plan, develop, manage, monitor and deploy projects effectively and efficiently. It brings developers, managers, contributors and other stakeholders on a common platform to complete the project. It has two variations</p>
<ol>
<li><p><strong>Azure DevOps</strong> is available as a cloud (Azure) hosted SaaS service, and provides provides a scalable, reliable, and globally available hosted service.</p>
</li>
<li><p><strong>Azure DevOps Server</strong> is an on-premises offering. Use it when you want your data to stay within your network or when you want access to SQL Server reporting services that integrate with Azure DevOps Server data and tools.</p>
</li>
</ol>
<p>To make a choice, see the <a target="_blank" href="https://learn.microsoft.com/en-us/azure/devops/user-guide/about-azure-devops-services-tfs?view=azure-devops">Differences between Azure DevOps Services and Azure DevOps Server</a>.</p>
<p>Azure DevOps Services consist of following services and you can choose any one of them as per your need-</p>
<ul>
<li><p>Azure Repos</p>
</li>
<li><p>Azure Boards</p>
</li>
<li><p>Azure Pipelines</p>
</li>
<li><p>Azure Test Plans</p>
</li>
<li><p>Azure Artifacts</p>
</li>
</ul>
<p><img src="https://learn.microsoft.com/en-us/azure/devops/organizations/projects/media/about-projects/services-hubs-vert.png?view=azure-devops" alt="Screenshot of services on the left navigational menu." /></p>
<h2 id="heading-what-is-azure-repos"><strong>What is Azure Repos?</strong></h2>
<p>Azure Repos is a version control tool to help keep track of your code and documents over the period of time. Version control is must to have for any project irrespective of the project team size. In day to day work developer/team member makes changes to the code frequently, Azure Repos can help in managing those changes and keep the things organized. There are two types of the version control provided by the Azure Repos:</p>
<ol>
<li><p><strong>Git -</strong> Git is a decentralized version control system</p>
</li>
<li><p><strong>Team foundation version control (TFVC) -</strong> TFVC is a centralized version control system</p>
</li>
</ol>
<p><img src="https://learn.microsoft.com/en-us/azure/devops/user-guide/media/repos-git-hub.png?view=azure-devops" alt="Azure Repos, Git files page" /></p>
<h2 id="heading-what-is-azure-boards"><strong>What is Azure Boards?</strong></h2>
<p>Azure Boards provides an agile dashboard which helps you to plan, track and manage the project for day to day activities using the agile methodologies. It has native support for Scrum and Kanban. Azure boards consist of rich UI based dashboard, where you can track user stories, issues, bugs, and extract reports in quickest way possible.</p>
<p>Azure Boards provides agile tools to plan and track work.</p>
<p><img src="https://learn.microsoft.com/en-us/azure/devops/user-guide/media/boards-backlogs.png?view=azure-devops" alt="Azure Boards backlogs" /></p>
<h2 id="heading-what-is-azure-pipelines"><strong>What is Azure Pipelines?</strong></h2>
<p>Azure pipelines provides continuous integration and continuous delivery (CI/CD) of the codebase by building and deploying the build output to target environment. It can work for any project irrespective of the technology and type of the project.</p>
<p>Azure Pipelines helps in supporting build, test and release automation. Whenever a team member checks in code changes, automatically build can be run. A build pipeline can include instructions to run tests after the build runs. Release pipelines manage deployment of software builds to staging or production environments.</p>
<p><img src="https://learn.microsoft.com/en-us/azure/devops/user-guide/media/pipelines-landing-page.png?view=azure-devops" alt="Azure Pipelines landing page" /></p>
<h2 id="heading-what-is-azure-test-plans"><strong>What is Azure Test Plans?</strong></h2>
<p>Azure Test Plans is a service for quality assurance. An Azure Test Plan provides a rich and powerful tool for the test management solution system. It helps in creating test plan, creating test cases, run manual test cases and generate reports for test execution result.</p>
<p><img src="https://learn.microsoft.com/en-us/azure/devops/user-guide/media/test-plans-vert.png?view=azure-devops" alt="Test Plans" /></p>
<h2 id="heading-what-is-azure-artifacts"><strong>What is Azure Artifacts?</strong></h2>
<p>Azure Artifacts provides the capabilities to publish and consume different types of packages to feeds and public registries such as NuGet.org and npmjs.com. Azure Artifacts is used along with Azure Pipelines to deploy packages and publish build artifacts. Azure artifacts is also used to integrate files between azure pipeline stages to build, test or deploy application(s).</p>
<h1 id="heading-azure-devops-interview-questions">Azure DevOps Interview Questions</h1>
<p>Here are some of the Azure DevOps questions and answers to help to prepare for your upcoming interviews.</p>
<p><strong>1. Assume that you are an Azure DevOps engineer and working for "Cloud Authority" organization. Organization is starting a new project which belongs to financial domain and tagged as confidential project. You have to choose DevOps solution from the Azure platform. Which one you will choose and why?</strong></p>
<p>I will choose Azure DevOps server in this particular scenario instead of the Azure DevOps services. The reason being Azure DevOps server is on-premises offering by the <a target="_blank" href="https://azurelib.com/what-is-azure-compute-service/">Microsoft Azure</a>. Hence the data of the project will remain inside the organization network itself, as this is the confidential project hence better to keep everything within the <a target="_blank" href="https://azurelib.com/what-is-azure-application-gateway/">on-premises network</a>.</p>
<p><strong>2. Assume that you are a Azure DevOps engineer and working for "Cloud Authority" organization. Your team is working on project since a year now and is using Azure DevOps server. Now as organization’s strategic decision, project has to moved from azure DevOps server to azure DevOps service. First of all is it possible to move the existing items from azure DevOps server to azure DevOps service. If yes then how?</strong></p>
<p>Yes it is absolutely possible to move the existing project from Azure DevOps server to azure DevOps service. There are three approaches for the migration:</p>
<p><strong>Approach 1:</strong>  Manual approach, where we can copy the source code and work items manually from the on-prem DevOps server to the cloud based Azure DevOps service.</p>
<p><strong>Approach 2:</strong> Microsoft Azure has provided the dedicated migration tool for Azure DevOps migration. This is one of the best approaches. We can use data migration tool to do the migration.</p>
<p><strong>Approach 3:</strong> Use the public API-based tools for higher fidelity migration.</p>
<p><strong>3. What are the different ways to connect to a project in Azure DevOps?</strong></p>
<p>We can connect to Azure DevOps project by using the following ways:</p>
<ol>
<li><p>Access Azure DevOps through web portal</p>
</li>
<li><p>Integrating with Visual Studio or Team Explorer</p>
</li>
<li><p>Eclipse/Team Explorer Everywhere Integration</p>
</li>
<li><p>Android Studio with the Azure DevOps Services Plug-in for Android Studio</p>
</li>
<li><p>IntelliJ with the Azure DevOps Services Plug-in for IntelliJ</p>
</li>
<li><p>Visual Studio Code</p>
</li>
</ol>
<p><strong>4. Assume that you are Technical Architect and working for "Cloud Authority" organization. You have on-boarded a new developer in the team. How would you ensure that whatever changes he will do, must get reviewed and approved before merging the code in the master repo?</strong></p>
<p>Block the direct commit to the master/main branch. For merging the changes, developer will be asked to create their own feature branch on which he/she is working. Once they are done with their changes, they can then raise the pull request for merging the changes into the master/main branch. Any senior team member can review the code and approve it before merging in master branch.</p>
<p><strong>5. What are the prerequisites for Azure pipeline to setup continuous integration and continous delivery?</strong></p>
<ul>
<li><p>You need a GitHub account, where you can create a repository.</p>
</li>
<li><p>You need at least one Azure DevOps organization. It is free and if you don’t have one, you can create it anytime.</p>
</li>
<li><p>You need administrator role for the Azure DevOps project that you want to use.</p>
</li>
<li><p>You should have privileges to run pipelines on Microsoft-hosted agents. It could be either paid parallel jobs or you can request a free tier.</p>
</li>
</ul>
<p><strong>6. How would you create Azure pipeline using Azure CLI ?</strong></p>
<ol>
<li><p>Fork the following repository into your GitHub account: <a target="_blank" href="https://github.com/MicrosoftDocs/pipelines-java">https://github.com/MicrosoftDocs/pipelines-java</a></p>
</li>
<li><p>Clone the repo</p>
</li>
<li><p>Go to cloned directory</p>
</li>
<li><p>Create pipeline using command az pipelines create –name “JavaPipeline.CI”</p>
</li>
<li><p>It may ask for authentication enter your username and password</p>
</li>
<li><p>It will ask to provide the service connection name, enter it. (service connection needed for the azure pipeline and git hub repo communication.</p>
</li>
<li><p>It will ask you to enter the pipeline template name among the list. (for example node.js, ASP.NET, maven etc)</p>
</li>
<li><p>It will create the YAML and commit in repo.</p>
</li>
<li><p>Azure DevOps will automatically start a pipeline run. Wait for the run to finish.</p>
</li>
</ol>
<p><strong>7. Can you describe Azure CLI command to run the pipeline?</strong></p>
<blockquote>
<p><em>az pipelines run [–branch]<br />[–commit-id]<br />[–folder-path]<br />[–id]<br />[–name]<br />[–open]<br />[–org]<br />[–project]<br />[–variables]</em></p>
</blockquote>
<p><strong>8. What is the Azure CLI command to  update  the pipeline ?</strong></p>
<blockquote>
<p><em>az pipelines update [–branch]<br />[–description]<br />[–id]<br />[–name]<br />[–new-folder-path]<br />[–new-name]<br />[–org]<br />[–project]<br />[–queue-id]<br />[–yaml-path]</em></p>
</blockquote>
<p><strong>9. What is the Azure CLI command to view the pipeline details?</strong></p>
<blockquote>
<p><em>az pipelines show [–folder-path]<br />[–id]<br />[–name]<br />[–open]<br />[–org]<br />[–project]</em></p>
</blockquote>
<p><strong>10. What is an organization in the Azure DevOps?</strong></p>
<p>An organization in Azure DevOps is a by which you can organize and connect groups of related projects. Examples of this could be various departments within the company like sales, finance. We can also choose one organization for your entire company, or multiple organizations based on business units.</p>
<p><strong>11. How can you setup the notification in for work items, code, review , Pull request and build in Azure DevOps, so that team member can take corresponding action accordingly?</strong></p>
<p>Email notification can be set for work items, PR and other azure DevOps related activities. For setting up the email notification we need to follow below mentioned steps:</p>
<blockquote>
<p><em>Sign in to your organization (https://dev.azure.com/{yourorganization}).<br />Go to Project settings &gt; Notifications.<br />Select New subscription.<br />Select the type of activity you want your team to be notified of.<br />Provide a description to help you identify the subscription later.<br />Choose which team members should receive a notification:<br />Choose whether you want to receive notifications about activity in all projects or only a specific project.<br />Optionally, configure additional filter criteria.<br />Select Finish to save the new subscription.</em></p>
</blockquote>
<p><strong>12. What is the use of Azure Pipeline agent?</strong></p>
<p><strong>In azure pipeline to build the code and to do deployment you need</strong><a target="_blank" href="https://azurelib.com/what-is-azure-compute-service/"><strong>compute infrastructure</strong></a><strong>, this computation power is provided by the agent.</strong> Hence to run the pipeline you need to have minimum one agent available.  You many need to increase the number of agents based as the load increases. Agent is computing infrastructure with agent software installed on it.</p>
<p><strong>13. What are different Azure Pipelines agents?</strong></p>
<ol>
<li><p>Microsoft-hosted agents: Agents hosted in the cloud by Microsoft</p>
</li>
<li><p>Self-hosted agents: Agents hosted by you in your on-premise environment</p>
</li>
</ol>
<p><strong>14. What are Microsoft-hosted agents in Azure pipeline?</strong></p>
<p>When you run your azure pipeline the job gets executed. Every job will run on the agent (i.e. the compute infrastructure). Microsoft itself provide the agents which is the virtual machine installed with agent software. If you opt for choosing the agent as Microsoft-hosted agents then everything will be taken care by the Microsoft from assigning the resource and installing the software and maintaining updates.</p>
<p><strong>15. What is self-hosted agent in Azure pipeline?</strong></p>
<p>Self-hosted agent is the agent which you set up and manage on your own to run jobs. You choose to opt for self-hosted agents in Azure Pipelines when you want more control to install dependent software needed for your builds and deployments. Also, machine-level caches and configuration persist from run to run, which can boost speed.</p>
<p><strong>16. What do you mean by Parallel Jobs?</strong></p>
<p>Number of jobs which you can run at the same time in your azure organization is termed as parallel jobs. If your azure organization is defined as single parallel job, it means you can run a single job at a time. When you have two or more jobs to run then only one will get executed and other has to wait for their turn which comes when first job completes. To run multiple jobs at the same time, you need multiple parallel jobs.</p>
<p><strong>17. What do you mean by system Capabilities and user Capabilities in azure pipeline?</strong></p>
<p>In the self-hosted agent, it has a set of capabilities which defines what can be done by capabilities. Capabilities are name-value pairs which can be either automatically discovered by the agent software, in which case they are called <strong>system capabilities</strong>, or those that you define, called <strong>user capabilities</strong>.  Agent software detect system capabilities like name of the machine, operating system type, and other software installed on the machine including environment variables registered.</p>
<p><strong>18. How you can view the list of agents using the Azure CLI command?</strong></p>
<blockquote>
<p><em>az pipelines agent list –pool-id<br />[–agent-name]<br />[–demands]<br />[–detect {false, true}]<br />[–include-assigned-request {false, true}]<br />[–include-capabilities {false, true}]<br />[–include-last-completed-request {false, true}]<br />[–org]<br />[–subscription]</em></p>
</blockquote>
<p><strong>19.  How you can view the details of agents using the Azure CLI command?</strong></p>
<blockquote>
<p><em>az pipelines agent show –agent-id<br />–pool-id<br />[–detect {false, true}]<br />[–include-assigned-request {false, true}]<br />[–include-capabilities {false, true}]<br />[–include-last-completed-request {false, true}]<br />[–org]<br />[–subscription]</em></p>
</blockquote>
<p><strong>20. What are the different ways in which self hosted agent can be configured?</strong></p>
<p>Self hosted agent can be configured in two ways either <strong>Agent as Service</strong> or <strong>Agent as interactive process</strong> with auto logon enabled.</p>
<p><strong>21. What are the security risks associated with the agent as interactive process with auto logon enabled?</strong></p>
<p>When we enable automatic logon or disable the screen saver, it will all make other users enable to walk up to the computer and use the account that automatically logs on. When we configure this way, we need to ensure that computer is physically protected.</p>
<p><strong>22. Assume that you are a Azure DevOps engineer and working for "Cloud Authority" organization. Your project manager is forcing you to use Microsoft hosted agent for azure pipelines. However you think team should choose self hosted agent. What could be reason of your choice?</strong></p>
<p>Microsoft hosted agent is the easy to set up but it has some limitation as well which are as follows:</p>
<p><strong>Build duration:</strong> Assigning the build agent for the job can take up some time which can increase the build duration.</p>
<p><strong>Disk space:</strong> In the hosted agents the amount of <a target="_blank" href="https://azurelib.com/create-azure-blob-storage/">storage</a> provided is fixed and sometime it won’t be good enough for large builds.</p>
<p><strong>Interactivity:</strong> We can’t sign in to a hosted agent.</p>
<p><strong>File shares:</strong> We can’t drop build artifacts to Universal Naming Convention (UNC) file shares.</p>
<h1 id="heading-conclusion"><strong>Conclusion</strong></h1>
<p>Azure DevOps is a complete DevOps and CI/CD tool from Microsoft. This article gives you brief information about this tool, alongwith its components. We are sure that the questions and answers given here will help you prepare for the interview and also grab your next job.</p>
<p>In this blog we have tried to provide many real world scenario based interview questions and answers for experienced azure DevOps developer, engineer and architect. You can also refer to our other interview question posts.</p>
]]></content:encoded></item><item><title><![CDATA[How Azure Cloud is preparing for an AI-first Future]]></title><description><![CDATA[In the early years of AI, Google and Microsoft led the way in research and product development. They were far ahead of their competitors with early AI products like classification APIs and vision APIs.
However, the emergence of Large Language Models ...]]></description><link>https://azureauthority.in/how-azure-cloud-is-preparing-for-an-ai-first-future</link><guid isPermaLink="true">https://azureauthority.in/how-azure-cloud-is-preparing-for-an-ai-first-future</guid><category><![CDATA[Azure]]></category><category><![CDATA[#microsoft-azure]]></category><category><![CDATA[azure AI]]></category><dc:creator><![CDATA[Siddhesh Prabhugaonkar]]></dc:creator><pubDate>Mon, 01 Apr 2024 02:04:00 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1711936985606/9736bbfb-bf90-4442-b3c6-fd028911e3dc.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In the early years of AI, Google and Microsoft led the way in research and product development. They were far ahead of their competitors with early AI products like classification APIs and vision APIs.</p>
<p>However, the emergence of Large Language Models (LLMs) caught both Google and Microsoft by surprise. Google developed its own solution, Gemini, while Microsoft chose to partner with external LLM companies like OpenAI and Perplexity.</p>
<p>Among the three major cloud service providers—Amazon, Microsoft, and Google—Microsoft demonstrated a more strategic approach by quickly developing AI services that others could easily use and deploy.</p>
<p>While Amazon AWS is the overall leader in cloud services, Microsoft has deep integrations with the world's largest companies and governments. This gives Microsoft a unique advantage in rapidly deploying AI in these sectors.</p>
<p>Let us see what all unique AI focused benefits Microsoft Azure Cloud provides today.</p>
<div data-node-type="callout">
<div data-node-type="callout-emoji">💡</div>
<div data-node-type="callout-text">If you are a cloud specialist it is important you get familiar with Azure's cloud AI offerings. We can help you get the right certifications and online training necessary. <a target="_blank" href="https://www.wiselandinc.com">Wiseland Inc'</a>s <a target="_blank" href="https://fastlearn.dev">Fastlearn</a> platform and <a target="_blank" href="https://cloud-authority.com">Cloud Authority have collaborated to build high quality online course material using AI</a>.</div>
</div>

<h2 id="heading-azure-hardware">Azure hardware</h2>
<ul>
<li><p><strong>Specialized Hardware:</strong> Azure provides a variety of powerful computing choices designed for AI tasks, such as GPUs (Graphical Processing Units) and FPGAs (Field Programmable Gate Arrays). These options help speed up the training and operation of complex AI models.</p>
</li>
<li><p><strong>Scale and Performance:</strong> Azure's vast global infrastructure supports horizontal scaling (adding more compute nodes) and vertical scaling (boosting the power of individual nodes). This flexibility is essential for managing the most challenging AI projects.</p>
</li>
<li><p><strong>High-Speed Interconnects:</strong> Azure's networking infrastructure is built for low latency and high bandwidth, ensuring efficient communication between multiple compute nodes. This is crucial for distributed AI training and inference.</p>
</li>
</ul>
<p>While the hardware helps AI companies build new models, vast majority of companies are not trying to train new models but just deploy existing fine tuned models. For them Azure has a different set of services.</p>
<h2 id="heading-ai-optimized-services"><strong>AI-Optimized Services</strong></h2>
<ul>
<li><p><strong>Cognitive Services:</strong> Azure provides pre-built AI building blocks for common tasks like:</p>
<ul>
<li><p><strong>Computer vision</strong> (image analysis, object recognition)</p>
</li>
<li><p><strong>Speech recognition and synthesis</strong></p>
</li>
<li><p><strong>Natural language processing</strong></p>
</li>
<li><p><strong>Search and knowledge mining</strong></p>
</li>
</ul>
</li>
<li><p><strong>Machine Learning Tools:</strong> Azure offers a comprehensive suite of tools and environments for developing, deploying, and managing custom machine learning models:</p>
<ul>
<li><p><strong>Azure Machine Learning</strong> (a fully managed environment for ML development)</p>
</li>
<li><p><strong>Azure Databricks</strong> ( for data analytics and collaborative ML)</p>
</li>
<li><p><strong>Popular frameworks</strong> (TensorFlow, PyTorch, Scikit-learn)</p>
</li>
</ul>
</li>
<li><p><strong>MLOps Integration:</strong> Azure simplifies the transition of AI models from development to production by offering integrated MLOps (Machine Learning Operations) features. These features cover model monitoring, retraining, and continuous deployment.</p>
</li>
<li><p><strong>Tailored AI:</strong> Azure offers pre-built AI solutions and accelerators for industries like healthcare, manufacturing, retail, and finance. This simplifies the use of AI for organizations within these sectors. This allows organizations to <a target="_blank" href="https://aiauthority.dev/how-to-guide-llm-strategy-for-your-business">build an AI strategy for their business</a> without having deep domain knowledge themselves.</p>
</li>
</ul>
<h2 id="heading-conclusion"><strong>Conclusion</strong></h2>
<p>Azure's ongoing investment in AI research, expanding infrastructure, and the creation of easy-to-use tools show that it is ready to lead the way into the AI-first era. This commitment makes Azure an attractive option for businesses and developers looking to embrace AI and foster innovation across different industries.</p>
<p>References:</p>
<ol>
<li><p><a target="_blank" href="https://www.microsoft.com/en-us/ai/ai-customer-stories">https://www.microsoft.com/en-us/ai/ai-customer-stories</a></p>
</li>
<li><p><a target="_blank" href="https://azure.microsoft.com/en-us/solutions/ai">https://azure.microsoft.com/en-us/solutions/ai</a></p>
</li>
</ol>
]]></content:encoded></item><item><title><![CDATA[New tools in Azure AI for generative AI applications]]></title><description><![CDATA[Introduction
In the rapidly evolving landscape of generative AI, business leaders face the challenge of balancing innovation with risk management. Prompt injection attacks have emerged as significant threats, where malicious actors manipulate AI syst...]]></description><link>https://azureauthority.in/new-tools-in-azure-ai-for-generative-ai-applications</link><guid isPermaLink="true">https://azureauthority.in/new-tools-in-azure-ai-for-generative-ai-applications</guid><category><![CDATA[Azure]]></category><category><![CDATA[azure AI]]></category><category><![CDATA[#microsoft-azure]]></category><category><![CDATA[genai]]></category><category><![CDATA[generative ai]]></category><category><![CDATA[llm]]></category><dc:creator><![CDATA[Siddhesh Prabhugaonkar]]></dc:creator><pubDate>Sat, 30 Mar 2024 15:36:37 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1711812808396/7ed3a8a3-5963-41bc-bc50-f338cba3c271.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h1 id="heading-introduction">Introduction</h1>
<p>In the rapidly evolving landscape of generative AI, business leaders face the challenge of balancing innovation with risk management. Prompt injection attacks have emerged as significant threats, where malicious actors manipulate AI systems to produce harmful content or compromise confidential data. Alongwith security concerns, maintaining quality and reliability is importnant to ensure end user trust and confidence in AI systems.</p>
<h1 id="heading-new-tools-in-azure-ai-studio">New tools in Azure AI Studio</h1>
<p>To address these challenges, <a target="_blank" href="https://azure.microsoft.com/en-us/products/ai-studio">Azure AI Studio</a> introduces new tools and features within Azure AI Studio for generative AI developers:</p>
<h3 id="heading-1-prompt-shields-defending-against-prompt-injection-attacks"><strong>1. Prompt Shields: Defending Against Prompt Injection Attacks</strong></h3>
<p>Prompt injection attacks, including direct jailbreaks and indirect manipulations, pose serious risks to AI systems. Microsoft introduces Prompt Shields to detect and block suspicious inputs in real-time, safeguarding against malicious instructions and covert attacks. Whether it's identifying direct prompts aimed at distorting outputs or detecting subtle manipulations in input data, Prompt Shields fortify the integrity of large language models (LLMs) and user interactions.</p>
<h3 id="heading-2-groundedness-detection-enhancing-llm-model-quality"><strong>2. Groundedness Detection: Enhancing LLM Model Quality</strong></h3>
<p>Hallucinations, where AI models generate outputs lacking grounding in data or common sense, undermine the reliability of generative AI systems. Groundedness detection, a new feature in Azure AI, identifies text-based hallucinations, ensuring outputs align with trusted data sources. This helps improve the overall quality of LLM outputs.</p>
<h3 id="heading-3-safety-system-messages-guiding-responsible-behavior"><strong>3. Safety System Messages: Guiding Responsible Behavior</strong></h3>
<p>Azure AI empowers developers to steer AI applications towards safe and responsible outputs through effective safety system messages. By providing templates and guidance within Azure AI Studio and <a target="_blank" href="https://azure.microsoft.com/en-us/products/ai-services/openai-service">Azure OpenAI Service</a> playgrounds, developers can craft messages that promote ethical usage and mitigate potential risks associated with harmful content generation.</p>
<h3 id="heading-4-safety-evaluations-and-monitoring-assessing-risks-and-safety"><strong>4. Safety Evaluations and Monitoring: Assessing Risks and Safety</strong></h3>
<p>Automated evaluations within Azure AI Studio enable organizations to systematically assess their generative AI applications for vulnerabilities and content risks. From susceptibility to jailbreak attempts to the production of harmful content categories, these evaluations provide actionable insights to identify mitigation strategies. Additionally, risk and safety monitoring in Azure OpenAI Service allows developers to visualize and analyze user inputs and model outputs. This helps in empowering proactive measures to address emerging threats in real-time.</p>
<h1 id="heading-empowering-responsible-ai-innovation"><strong>Empowering Responsible AI Innovation</strong></h1>
<p>Azure AI stands at the forefront of fostering responsible innovation in generative AI. By addressing security and quality challenges through advanced tools and features, Azure AI empowers organizations to confidently scale their AI applications while upholding ethical standards and user trust. With a commitment to continuous learning and collaboration, Azure AI ensures that every organization can harness the transformative potential of AI with confidence and integrity.</p>
<h1 id="heading-references">References</h1>
<p><a target="_blank" href="https://cloud-authority.com/new-tools-in-azure-ai-for-generative-ai-applications?showSharer=true">Cloud Authority</a></p>
<p><a target="_blank" href="https://www.microsoft.com/en-us/ai/principles-and-approach">Microsoft AI principles</a></p>
<p><a target="_blank" href="https://azure.microsoft.com/en-us/blog/announcing-new-tools-in-azure-ai-to-help-you-build-more-secure-and-trustworthy-generative-ai-applications/">Announcing new tools in Azure AI to help you build more secure and trustworthy generative AI applications | Microsoft Azure Blog</a></p>
]]></content:encoded></item><item><title><![CDATA[Welcome to Azure Authority!]]></title><description><![CDATA[Here we will share information, learning and details of cloud, Microsoft Azure, certifications and technology in general.
Learn from Microsoft Certified Trainers and professionals from Pluralsight, O'Reilly learning.]]></description><link>https://azureauthority.in/welcome-to-azure-authority</link><guid isPermaLink="true">https://azureauthority.in/welcome-to-azure-authority</guid><category><![CDATA[Azure]]></category><category><![CDATA[Cloud Computing]]></category><category><![CDATA[Certification]]></category><dc:creator><![CDATA[Siddhesh Prabhugaonkar]]></dc:creator><pubDate>Thu, 28 Mar 2024 17:41:04 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/5fNmWej4tAA/upload/9e3aa9e674c403f97ae0d65a706b6e72.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Here we will share information, learning and details of cloud, Microsoft Azure, certifications and technology in general.</p>
<p>Learn from Microsoft Certified Trainers and professionals from <a target="_blank" href="https://www.pluralsight.com">Pluralsight</a>, <a target="_blank" href="https://www.oreilly.com/online-learning/">O'Reilly learning</a>.</p>
]]></content:encoded></item></channel></rss>