<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Michael G. Inso</title>
    <description>The latest articles on Forem by Michael G. Inso (@michaelinzo).</description>
    <link>https://forem.com/michaelinzo</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3395179%2F8a8d506d-5deb-4622-bc86-1d9ae89f8ef4.jpeg</url>
      <title>Forem: Michael G. Inso</title>
      <link>https://forem.com/michaelinzo</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/michaelinzo"/>
    <language>en</language>
    <item>
      <title>Securing the Autonomous Future with Auth0 Token Vault for AI Agents</title>
      <dc:creator>Michael G. Inso</dc:creator>
      <pubDate>Mon, 23 Mar 2026 18:23:21 +0000</pubDate>
      <link>https://forem.com/michaelinzo/securing-the-autonomous-future-with-auth0-token-vault-for-ai-agents-4cb6</link>
      <guid>https://forem.com/michaelinzo/securing-the-autonomous-future-with-auth0-token-vault-for-ai-agents-4cb6</guid>
      <description>&lt;p&gt;As developers, we are living through a massive paradigm shift. We are no longer just building applications for human users; we are building ecosystems for autonomous AI agents. But this shift introduces a terrifying security gap. How do we give an AI agent the keys to execute a payment on Stripe or commit code to GitHub without hardcoding API keys or granting god-level access? &lt;/p&gt;

&lt;p&gt;During this hackathon, I set out to solve this exact problem by building the &lt;strong&gt;Auth0 Token Vault Marketplace&lt;/strong&gt;—a platform powered directly by the brand new &lt;strong&gt;Auth0 Token Vault for AI Agents&lt;/strong&gt;.&lt;/p&gt;

&lt;h4&gt;
  
  
  The Problem with Traditional API Keys
&lt;/h4&gt;

&lt;p&gt;Before Auth0’s AI Agent Vault, if an AI needed to interact with a third-party service, developers usually resorted to passing static, long-lived API keys into the agent's context. This is fundamentally insecure. If the agent's prompt is hijacked or logs are leaked, that static key is compromised indefinitely. Traditional OAuth flows weren't designed for machines; they were designed for humans clicking "Authorize" in a browser window.&lt;/p&gt;

&lt;h4&gt;
  
  
  How We Leveraged Auth0 Token Vault
&lt;/h4&gt;

&lt;p&gt;Instead of handling raw keys, our application uses the Auth0 Token Vault to act as a secure, intermediary broker. When an AI agent needs to perform a task within our marketplace, it doesn't use a static &lt;code&gt;.env&lt;/code&gt; credential. &lt;/p&gt;

&lt;p&gt;Instead, the agent authenticates with Auth0 to request a &lt;strong&gt;delegated, short-lived access token&lt;/strong&gt; specifically scoped for that exact transaction. &lt;br&gt;
Here is how we utilized it to achieve maximum security:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Scope Limitation:&lt;/strong&gt; If an AI agent only needs to read a user's marketplace balance, Auth0 ensures the token generated &lt;em&gt;only&lt;/em&gt; has &lt;code&gt;read:balance&lt;/code&gt; permissions. It cannot execute trades or revoke existing credentials.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ephemeral Lifespans:&lt;/strong&gt; The tokens issued by the Vault to the AI expire quickly. Even if intercepted, the attack window is negligible. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Auditability:&lt;/strong&gt; Because every AI transaction goes through Auth0, we have a complete, centralized audit trail of exactly &lt;em&gt;which&lt;/em&gt; AI agent requested access, &lt;em&gt;when&lt;/em&gt;, and for &lt;em&gt;what&lt;/em&gt; purpose.&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;
  
  
  Why This Matters for the Auth0 Community
&lt;/h4&gt;

&lt;p&gt;The Auth0 community has long been the gold standard for human identity management. By integrating the Token Vault for AI Agents into a functional marketplace, we've demonstrated how Auth0 is positioning itself to be the gold standard for &lt;strong&gt;machine identity management&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;We built the frontend with React 19, TypeScript, and GitHub Spark to visualize this secure backend infrastructure. By wrapping the Auth0 Token Vault inside a beautifully designed, cyber-punk-themed React application, we proved that enterprise-grade security for AI doesn't have to be clunky or invisible. It can be a dynamic, measurable, and highly controllable asset class of its own.&lt;/p&gt;

&lt;p&gt;The future of software is agentic. Thanks to the Auth0 Token Vault, that future is also secure.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;The "Secret Zero" Problem in the Age of Autonomous AI&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The rapid rise of AI agents has introduced a critical security vulnerability into modern software architecture: machine credential management. Traditionally, to grant an LLM or AI agent access to external services—like making a payment via Stripe or committing code to GitHub—developers have resorted to passing raw, long-lived API keys directly into the agent's runtime environment or context window. This fundamental flaw violates the principle of least privilege, bypasses standard Identity and Access Management (IAM) protocols, and exposes enterprise infrastructure to devastating risks like prompt injection and agent hijacking. &lt;/p&gt;

&lt;p&gt;We needed a paradigm shift. We needed to stop treating AI agents as scripts holding master keys, and start treating them as first-class, verifiable identities. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Enter Auth0 Token Vault for AI Agents&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Integrating the Auth0 Token Vault for AI Agents into the &lt;strong&gt;Auth0 Token Vault Marketplace&lt;/strong&gt; was my core technical achievement for this hackathon, as it fundamentally solves the agentic "Secret Zero" problem. Auth0's Token Vault acts as a highly secure, ephemeral credential broker. Instead of a developer hardcoding a credential, the Auth0 infrastructure holds the root connection securely. When the AI agent needs to act, it dynamically requests a just-in-time, scoped token from the Vault. &lt;/p&gt;

&lt;p&gt;My technical implementation focused on bridging Auth0's rigorous, enterprise-grade backend security with a highly responsive, client-side architecture built on React 19, TypeScript, and GitHub Spark. &lt;/p&gt;

&lt;p&gt;While GitHub Spark’s persistent key-value store (&lt;code&gt;spark.kv&lt;/code&gt;) was used to manage the complex application state—such as user wallet balances, UI micro-interactions, and the linear-decay marketplace pricing models ($V(t)$)—the actual cryptographic lifecycle of the tokens was strictly deferred to Auth0. By decoupling the marketplace ledger (Spark) from the identity provider (Auth0), I achieved a hybrid architecture: the frontend handles the dynamic API economy, while Auth0 guarantees that the underlying credentials are mathematically bound, time-limited, and scope-restricted.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Relevance to the Auth0 Community&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For the Auth0 developer community, this project serves as a practical blueprint for the "Zero-Trust Agentic Web." As the community builds increasingly complex, multi-agent systems, standard human-centric OAuth/OIDC flows are no longer sufficient. Machine-to-Machine (M2M) delegation requires dynamic credential brokering. &lt;/p&gt;

&lt;p&gt;By integrating the Token Vault into a visual, interactive marketplace, I demonstrated that Auth0’s infrastructure can be used for more than just compliance and security—it can serve as the foundational trust layer for a new AI API economy. Developers can actively allocate, trade, and monitor agent access quotas with complete confidence. Ultimately, the Auth0 Token Vault for AI Agents doesn't just secure our current applications; it fundamentally enables the next generation of autonomous software to operate safely at an enterprise scale.&lt;/p&gt;

</description>
      <category>auth0challenge</category>
      <category>programming</category>
      <category>typescript</category>
      <category>ai</category>
    </item>
    <item>
      <title>Moneyball Coach AI: Building a Real-Time Esports Analytics Platform with Next.js and GRID API 🎮📊</title>
      <dc:creator>Michael G. Inso</dc:creator>
      <pubDate>Mon, 02 Feb 2026 13:15:02 +0000</pubDate>
      <link>https://forem.com/michaelinzo/moneyball-coach-ai-building-a-real-time-esports-analytics-platform-with-nextjs-and-grid-api-3100</link>
      <guid>https://forem.com/michaelinzo/moneyball-coach-ai-building-a-real-time-esports-analytics-platform-with-nextjs-and-grid-api-3100</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwnol6bpa4grti2byuun6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwnol6bpa4grti2byuun6.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  The "Moneyball" Moment for Cloud9
&lt;/h3&gt;

&lt;p&gt;In the movie &lt;em&gt;Moneyball&lt;/em&gt;, Billy Beane changed baseball forever by ignoring gut feelings and trusting the data. He looked for the hidden stats that actually led to wins.&lt;/p&gt;

&lt;p&gt;For this hackathon, we asked ourselves: &lt;strong&gt;Can we build a "Billy Beane" for Cloud9?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Esports is digital-native, yet so much coaching is still done via spreadsheets and VOD review. We wanted to change that. Enter &lt;strong&gt;Moneyball Coach AI&lt;/strong&gt;, a comprehensive analytics platform that processes live match data to deliver real-time insights, player performance tracking, and strategic win-probability models.&lt;/p&gt;

&lt;p&gt;Here is the story of how we built a 96% TypeScript application to turn raw data into victory.&lt;/p&gt;




&lt;h3&gt;
  
  
  🏗️ The Tech Stack
&lt;/h3&gt;

&lt;p&gt;We needed a stack that could handle high-frequency data updates without stuttering. Speed was our top priority.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Framework:&lt;/strong&gt; Next.js (App Router)&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Language:&lt;/strong&gt; TypeScript (96.8% of the repo!)&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Data Source:&lt;/strong&gt; GRID Esports API&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;State Management:&lt;/strong&gt; Zustand + TanStack Query&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Visualization:&lt;/strong&gt; Recharts&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Styling:&lt;/strong&gt; Tailwind CSS (Cloud9 Theme)&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  🔌 Integrating the GRID API
&lt;/h3&gt;

&lt;p&gt;The heartbeat of our application is the &lt;strong&gt;GRID API&lt;/strong&gt;. It provides an incredible depth of data, but that depth comes with complexity. A single match can generate thousands of events—gold changes, positional updates, item purchases, and ability usage.&lt;/p&gt;

&lt;p&gt;Our biggest challenge was &lt;strong&gt;Type Safety&lt;/strong&gt;. The JSON objects from GRID are deeply nested. We didn't want to use &lt;code&gt;any&lt;/code&gt;; we wanted strict typing to prevent runtime crashes.&lt;/p&gt;

&lt;p&gt;We created a robust schema to normalize this data:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Example Interface for Normalized Player Data&lt;/span&gt;
&lt;span class="kr"&gt;interface&lt;/span&gt; &lt;span class="nx"&gt;PlayerMetric&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;summonerName&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;championId&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;number&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;currentGold&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;number&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;visionScore&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;number&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;laneProximity&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;number&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// Calculated metric&lt;/span&gt;
  &lt;span class="nl"&gt;winProbabilityContribution&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;number&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// AI Model output&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;By strictly defining these interfaces, our IDE (VS Code/WebStorm) could autocomplete properties and warn us if we tried to access a &lt;code&gt;null&lt;/code&gt; value—a lifesaver during the final hours of the hackathon!&lt;/p&gt;




&lt;h3&gt;
  
  
  🚀 Handling the "Firehose" of Data
&lt;/h3&gt;

&lt;p&gt;One of the coolest technical hurdles we cleared was the &lt;strong&gt;"Firehose Effect."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When a team fight breaks out in-game, the API sends a burst of events. If we tried to update the React DOM for &lt;em&gt;every single event&lt;/em&gt;, the dashboard would freeze.&lt;/p&gt;

&lt;p&gt;We solved this using a &lt;strong&gt;Buffering Strategy&lt;/strong&gt; and &lt;strong&gt;Optimistic UI&lt;/strong&gt;.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Ingestion:&lt;/strong&gt; We catch the websocket stream.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Batching:&lt;/strong&gt; We group events into 500ms "ticks."&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;React Query:&lt;/strong&gt; We use &lt;code&gt;useQuery&lt;/code&gt; to fetch the stable state, while a custom hook applies the "tick" updates instantly for a smooth visual experience.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This created a "Glass-to-Glass" latency that feels instantaneous to the user.&lt;/p&gt;




&lt;h3&gt;
  
  
  🧠 The "Moneyball" Insight
&lt;/h3&gt;

&lt;p&gt;The core feature we are most proud of is the &lt;strong&gt;Efficiency Engine&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Instead of just showing "Kills" (which can be a vanity metric), our algorithm calculates &lt;strong&gt;Gold Efficiency&lt;/strong&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;If a player has 10,000 gold but hasn't spent it, they are statistically weaker than an opponent with 8,000 gold all spent on items.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;We visualized this on our dashboard. If a Cloud9 player is holding too much gold before a crucial dragon fight, the dashboard flashes a warning. This is the kind of actionable data that helps coaches make real-time calls.&lt;/p&gt;




&lt;h3&gt;
  
  
  🎨 Designing for the Pros (The Cloud9 Aesthetic)
&lt;/h3&gt;

&lt;p&gt;We didn't just want it to work; we wanted it to look like it belonged in the Cloud9 HQ.&lt;/p&gt;

&lt;p&gt;We used &lt;strong&gt;Tailwind CSS&lt;/strong&gt; to strictly enforce the team's identity.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Primary:&lt;/strong&gt; &lt;code&gt;bg-slate-900&lt;/code&gt; (Dark Mode default)&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Accent:&lt;/strong&gt; &lt;code&gt;text-cyan-400&lt;/code&gt; (Electric Blue)&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Visuals:&lt;/strong&gt; We used &lt;code&gt;backdrop-blur&lt;/code&gt; effects on our data cards to give them a futuristic, "heads-up display" feel.&lt;/li&gt;
&lt;/ul&gt;




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

&lt;h2&gt;
  
  
  🛠️ Tooling Spotlight &amp;amp; Bonus Challenges
&lt;/h2&gt;

&lt;h3&gt;
  
  
  ⚡ Scaling a 96% TypeScript Esports Platform with WebStorm
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;📖 The Story&lt;/strong&gt;&lt;br&gt;
"Building &lt;strong&gt;Moneyball Coach AI&lt;/strong&gt; required handling massive, deeply nested JSON objects from the GRID API in real-time. We chose &lt;strong&gt;JetBrains WebStorm&lt;/strong&gt; as our primary IDE, and it was instrumental in maintaining our 96.8% TypeScript codebase."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;✅ Completeness &amp;amp; Viability&lt;/strong&gt;&lt;br&gt;
The most impactful feature was WebStorm's deep static analysis and refactoring capabilities. When defining the complex interfaces for the GRID API live streams, we frequently had to refactor types across our Next.js backend and React frontend. WebStorm’s &lt;strong&gt;'Rename Symbol'&lt;/strong&gt; and &lt;strong&gt;'Find Usages'&lt;/strong&gt; worked flawlessly across the full stack, catching type mismatches that VS Code plugins often missed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🚀 Potential Impact&lt;/strong&gt;&lt;br&gt;
Furthermore, the integrated &lt;strong&gt;AI Assistant&lt;/strong&gt; helped us generate boilerplate code for our Recharts visualizations, saving us hours of manual coding. The debugger's ability to handle high-frequency state changes in our &lt;code&gt;useLiveStream&lt;/code&gt; hooks allowed us to isolate race conditions in the data pipeline much faster than standard browser tools. WebStorm didn't just write code; it acted as a stability guardrail for our high-velocity development.&lt;/p&gt;




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

&lt;h3&gt;
  
  
  🛡️ Optimizing Real-Time Data Streams with Junie
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;📖 The Story&lt;/strong&gt;&lt;br&gt;
"For &lt;strong&gt;Moneyball Coach AI&lt;/strong&gt;, we built a high-performance dashboard that ingests thousands of events per second via the GRID API. We utilized &lt;strong&gt;Junie&lt;/strong&gt; to audit our code quality and ensure our complex logic remained performant."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🔍 Completeness &amp;amp; Viability&lt;/strong&gt;&lt;br&gt;
Junie provided critical insights into our React rendering patterns. Since our dashboard updates in real-time, preventing unnecessary re-renders is crucial. Junie analyzed our custom hooks and flagged dependencies in &lt;code&gt;useEffect&lt;/code&gt; and &lt;code&gt;useMemo&lt;/code&gt; that were causing performance leaks—issues we hadn't caught during manual review. It also helped identify potential null-reference errors in our deep-nested API response handling.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;⚡ Potential Impact&lt;/strong&gt;&lt;br&gt;
The feedback provided by Junie was directly actionable. By implementing its suggestions, we noticed a smoother frame rate on our live graphs. For a hackathon project where speed is everything, having an automated code reviewer that understands modern TypeScript patterns allowed us to ship a production-grade 'Moneyball' experience without getting bogged down in technical debt.&lt;/p&gt;




&lt;h3&gt;
  
  
  🏁 What We Learned
&lt;/h3&gt;

&lt;p&gt;Building &lt;strong&gt;Moneyball Coach AI&lt;/strong&gt; taught us that &lt;strong&gt;Context is King&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Raw data is useless without context. Telling a coach "Blaber has 5 kills" is okay. Telling a coach "Blaber's pathing is 15% more efficient than the enemy jungler, leading to a 60% higher win probability" is &lt;strong&gt;game-changing&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;We pushed the limits of what Next.js can do with real-time data, and we can't wait to keep refining our models.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GG WP!&lt;/strong&gt; (Good Game, Well Played)&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Check out the code on GitHub: &lt;a href="https://github.com/MiChaelinzo/moneyball-coach-ai-p" rel="noopener noreferrer"&gt;MiChaelinzo/moneyball-coach-ai-p&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Test the Web-app on GitHub: &lt;a href="https://moneyball-coach-ai-p--michaelinzo.github.app/" rel="noopener noreferrer"&gt;View Live Demo&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>typescript</category>
      <category>esports</category>
      <category>webdev</category>
      <category>hackathon</category>
    </item>
    <item>
      <title>⚡ How We Built a Pro-Level Esports Aim Trainer with React 19 &amp; GPT-4o</title>
      <dc:creator>Michael G. Inso</dc:creator>
      <pubDate>Sun, 01 Feb 2026 20:24:05 +0000</pubDate>
      <link>https://forem.com/michaelinzo/how-we-built-a-pro-level-esports-aim-trainer-with-react-19-gpt-4o-2a3f</link>
      <guid>https://forem.com/michaelinzo/how-we-built-a-pro-level-esports-aim-trainer-with-react-19-gpt-4o-2a3f</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnbvc3mwoxhdh88efgp85.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnbvc3mwoxhdh88efgp85.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here is a polished, high-quality blog post draft formatted for platforms like &lt;strong&gt;Medium&lt;/strong&gt;, &lt;strong&gt;Dev.to&lt;/strong&gt;, or &lt;strong&gt;Hashnode&lt;/strong&gt;. It balances technical depth with storytelling to maximize your chances of winning the bonus prize.&lt;/p&gt;




&lt;h1&gt;
  
  
  ⚡ How We Built a Pro-Level Esports Aim Trainer with React 19 &amp;amp; GPT-4o
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Behind the code of "C9 Reflex Arena"—our Cloud9 x JetBrains Hackathon entry.
&lt;/h3&gt;

&lt;p&gt;![Cover Image Placeholder: A split screen showing code on the left and the glowing neon game interface on the right]&lt;/p&gt;

&lt;p&gt;In the world of esports, the difference between a highlight reel and a "gray screen" is measured in milliseconds. When Cloud9 and JetBrains announced a hackathon to build the ultimate fan engagement experience, we knew we couldn't just build a simple clicker game. We needed something that felt &lt;em&gt;competitive&lt;/em&gt;, looked &lt;em&gt;cyberpunk&lt;/em&gt;, and ran at a buttery smooth 60 FPS.&lt;/p&gt;

&lt;p&gt;Enter &lt;strong&gt;C9 Reflex Arena&lt;/strong&gt;: An adaptive reaction training ground designed for the chaotic energy of an LCS event booth.&lt;/p&gt;

&lt;p&gt;Here’s a deep dive into how we built it using the absolute bleeding edge of web tech: &lt;strong&gt;React 19&lt;/strong&gt;, &lt;strong&gt;Tailwind CSS v4&lt;/strong&gt;, and &lt;strong&gt;AI-driven game design&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  🏗️ The Stack: Living on the Edge
&lt;/h2&gt;

&lt;p&gt;We decided to take a risk. Instead of using the "safe" stack, we wanted to see what the future of frontend development looked like.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Framework:&lt;/strong&gt; React 19 (RC)&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Styling:&lt;/strong&gt; Tailwind CSS v4 (Alpha)&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;State:&lt;/strong&gt; Spark KV + Functional Updates&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;AI:&lt;/strong&gt; OpenAI GPT-4o-mini (via Vercel AI SDK)&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;IDE:&lt;/strong&gt; WebStorm 2024.3 with &lt;strong&gt;Junie&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Why React 19?
&lt;/h3&gt;

&lt;p&gt;We wanted to leverage the new &lt;strong&gt;Compiler&lt;/strong&gt; and &lt;strong&gt;Action&lt;/strong&gt; paradigms. In a high-frequency game loop, re-renders are the enemy. React 19 allowed us to manage complex state transitions (score, combo, timer, particle count) without the "useEffect hell" that usually plagues React games.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧠 The Secret Sauce: AI Adaptive Difficulty
&lt;/h2&gt;

&lt;p&gt;Most reaction games have static difficulty settings: Easy, Medium, Hard. We wanted &lt;strong&gt;C9 Reflex Arena&lt;/strong&gt; to feel like a living opponent.&lt;/p&gt;

&lt;p&gt;We integrated &lt;strong&gt;GPT-4o-mini&lt;/strong&gt; to analyze player telemetry in real-time. The game doesn't just spawn targets; it &lt;em&gt;watches&lt;/em&gt; you.&lt;/p&gt;

&lt;h3&gt;
  
  
  How it works:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Data Collection:&lt;/strong&gt; The game tracks your average reaction time (ms) and accuracy (%) over a 10-target window.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;The Prompt:&lt;/strong&gt; We send this batch data to the AI with a system prompt: &lt;em&gt;"You are an esports coach. The player is hitting 95% accuracy with 150ms reaction time. Adjust the game parameters to challenge them without frustrating them."&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;JSON Response:&lt;/strong&gt; The AI returns structured JSON:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"spawnInterval"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;450&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"targetSize"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0.85&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"message"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Too easy? Let's speed it up."&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Hot-Patching:&lt;/strong&gt; The game state updates instantly. If you’re playing like a pro, the targets get smaller and faster. If you miss three in a row, the game slows down to help you recover your rhythm.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  🎨 Styling with Tailwind v4
&lt;/h2&gt;

&lt;p&gt;Tailwind v4 is a paradigm shift. Gone is the massive configuration file; everything is now native CSS variables. This was crucial for our &lt;strong&gt;Theme Engine&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;We defined our "Cloud9 Cyberpunk" palette using OKLCH colors for maximum vibrancy on gaming monitors:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nd"&gt;:root&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="py"&gt;--color-c9-blue&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;oklch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0.65&lt;/span&gt; &lt;span class="m"&gt;0.24&lt;/span&gt; &lt;span class="m"&gt;240&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="py"&gt;--color-c9-pink&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;oklch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0.70&lt;/span&gt; &lt;span class="m"&gt;0.25&lt;/span&gt; &lt;span class="m"&gt;350&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Because v4 compiles on the fly, we could animate these variables using Framer Motion to create pulsating neon glows that react to the beat of the game without causing layout thrashing.&lt;/p&gt;




&lt;h2&gt;
  
  
  🤖 Coding with Junie (JetBrains AI)
&lt;/h2&gt;

&lt;p&gt;Since this was a JetBrains hackathon, we leaned heavily on &lt;strong&gt;Junie&lt;/strong&gt;, their new AI agent in WebStorm.&lt;/p&gt;

&lt;p&gt;Honest review? It saved us about &lt;strong&gt;30% development time&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The "killer feature" wasn't code generation—it was &lt;strong&gt;Contextual Refactoring&lt;/strong&gt;. At one point, our &lt;code&gt;GameCanvas.tsx&lt;/code&gt; file hit 600 lines. We asked Junie: &lt;em&gt;"Extract the particle rendering logic into a custom hook."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Junie didn't just give us the code snippet; it analyzed the dependencies, created &lt;code&gt;useParticleSystem.ts&lt;/code&gt;, moved the relevant &lt;code&gt;useRef&lt;/code&gt; hooks, and updated the imports in the parent file. For a hackathon timeline, that kind of automated refactoring is invaluable.&lt;/p&gt;




&lt;h2&gt;
  
  
  🚀 The Result
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;C9 Reflex Arena&lt;/strong&gt; is now a fully functional PWA (Progressive Web App). It features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Global Leaderboards&lt;/strong&gt; (GitHub Auth)&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Friend Challenges&lt;/strong&gt; (Async competition)&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;60 FPS Performance&lt;/strong&gt; on mobile and desktop&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Event Ready Mode&lt;/strong&gt; for fast booth turnover&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Building this project taught us that the web is ready for high-performance gaming. React 19 handles the logic, Canvas handles the rendering, and AI handles the balance.&lt;/p&gt;

&lt;p&gt;The code is open source. If you want to see how we wired up the AI or how Tailwind v4 works in production, check out the repo below!&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;🔗 &lt;a href="https://github.com/MiChaelinzo/untitled" rel="noopener noreferrer"&gt;https://github.com/MiChaelinzo/untitled&lt;/a&gt; *&lt;/em&gt;&lt;br&gt;
*&lt;em&gt;🎮 &lt;a href="https://untitled--MiChaelinzo.github.app" rel="noopener noreferrer"&gt;https://untitled--MiChaelinzo.github.app&lt;/a&gt; *&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Built with 💙 for the Cloud9 x JetBrains Hackathon.&lt;/em&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  React19 #Cloud9 #JetBrains #Hackathon #WebDev #AI
&lt;/h1&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>ai</category>
      <category>typescript</category>
    </item>
    <item>
      <title>I Built a Deckbuilder Game Engine with Kiro: From Specs to "Slay the Spire"</title>
      <dc:creator>Michael G. Inso</dc:creator>
      <pubDate>Mon, 01 Dec 2025 16:08:42 +0000</pubDate>
      <link>https://forem.com/michaelinzo/i-built-a-deckbuilder-game-engine-with-kiro-from-specs-to-slay-the-spire-3e4l</link>
      <guid>https://forem.com/michaelinzo/i-built-a-deckbuilder-game-engine-with-kiro-from-specs-to-slay-the-spire-3e4l</guid>
      <description>&lt;h2&gt;
  
  
  🃏 The Dream: Building "Chambers"
&lt;/h2&gt;

&lt;p&gt;Like many developers, I’ve always been fascinated by the mechanics behind games like &lt;em&gt;Slay the Spire&lt;/em&gt;. The synergy between cards, the economy of a shop, and the tension of a reshuffle—it’s a beautiful system. But from a coding perspective, it’s a nightmare of state management.&lt;/p&gt;

&lt;p&gt;How do you handle a Discard Pile shuffling into a Draw Pile mid-turn without losing data? How do you ensure "Damage" is calculated correctly through 5 layers of status effects?&lt;/p&gt;

&lt;p&gt;I decided to build &lt;strong&gt;Chambers&lt;/strong&gt;, a survival deckbuilder. But instead of slogging through spaghetti code, I used &lt;strong&gt;Kiro&lt;/strong&gt;, an agentic IDE, to architect the system for me. Here is how Kiro changed my development process from "guessing" to "architecting."&lt;/p&gt;

&lt;h2&gt;
  
  
  🏗️ Phase 1: The "Spec-First" Approach
&lt;/h2&gt;

&lt;p&gt;Usually, when working with AI, we just start chatting: &lt;em&gt;"Write me a card script."&lt;/em&gt; This often leads to disjointed code. With Kiro, I used &lt;strong&gt;Spec-Driven Development (SDD)&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I didn't write code first. I wrote rules.&lt;/p&gt;

&lt;p&gt;Inside the &lt;code&gt;.kiro/&lt;/code&gt; directory, I created a "Source of Truth" for my game logic. I described the Deck lifecycle in natural language:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Spec Excerpt:&lt;/strong&gt;&lt;br&gt;
"When the Draw action is requested, checking if the Draw Pile is empty. If so, shuffle the Discard Pile, move it to the Draw Pile, and then complete the draw. Ensure no card objects are duplicated or lost during the transfer."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Kiro read this spec and generated a robust &lt;strong&gt;TypeScript framework&lt;/strong&gt;. It didn't just write a script; it built a system that adhered strictly to my rules. This meant my core game logic was decoupled from the game engine—pure, testable code.&lt;/p&gt;

&lt;h2&gt;
  
  
  🤖 Phase 2: Kiro as a QA Engineer (MCP &amp;amp; TDD)
&lt;/h2&gt;

&lt;p&gt;This is where Kiro shined. I didn't want to debug shuffle logic inside the Unity Editor (which is slow). I wanted to verify the math instantly.&lt;/p&gt;

&lt;p&gt;Using &lt;strong&gt;Agent Hooks&lt;/strong&gt; and &lt;strong&gt;MCP (Model Context Protocol)&lt;/strong&gt;, I set up a "Self-Healing" workflow:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Kiro implements a feature (e.g., &lt;code&gt;Shop.buyCard()&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt; Kiro automatically triggers &lt;code&gt;npm test&lt;/code&gt; via the terminal.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;If the test fails&lt;/strong&gt;, Kiro reads the error log, analyzes the stack trace, and refactors the code immediately.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;If the test passes&lt;/strong&gt;, it moves to the next task.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;It felt like pair-programming with a Senior Engineer who loves writing unit tests. By the time I opened Unity, I knew my logic was 100% bug-free.&lt;/p&gt;

&lt;h2&gt;
  
  
  🧠 Phase 3: The Hybrid Architecture (Node.js + Unity)
&lt;/h2&gt;

&lt;p&gt;One of the hardest parts of this project was preventing "Language Contamination." I needed Kiro to write &lt;strong&gt;TypeScript&lt;/strong&gt; for the logic and &lt;strong&gt;C#&lt;/strong&gt; for the Unity frontend.&lt;/p&gt;

&lt;p&gt;I leveraged &lt;strong&gt;Steering&lt;/strong&gt; to give Kiro a split personality:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;The Brain (Framework):&lt;/strong&gt; "You are a Node.js architect. You do not know Unity exists. Focus on pure data structures."&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;The Body (Unity):&lt;/strong&gt; "You are a Unity developer. You do not calculate damage. You only visualize the state provided by the framework."&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This separation of concerns prevented the dreaded "Spaghetti Code" where UI logic mixes with game rules.&lt;/p&gt;

&lt;h2&gt;
  
  
  🌊 Phase 4: Vibe Coding the Polish
&lt;/h2&gt;

&lt;p&gt;Once the hard math was done via Specs, I switched to &lt;strong&gt;Vibe Coding&lt;/strong&gt; for the visuals. This was the fun part.&lt;/p&gt;

&lt;p&gt;I chatted with Kiro to tweak the "feel" of the game:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;em&gt;"Make the cards hover when the mouse is over them."&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;em&gt;"Add a particle effect when an enemy takes damage."&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Because the logic was already solid, we could iterate on the visuals rapidly without breaking the game loop.&lt;/p&gt;

&lt;h2&gt;
  
  
  🚀 The Result
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Chambers&lt;/strong&gt; is now live and playable. It features a fully functional battle loop, a shop economy, and a robust deck-building system.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I learned:&lt;/strong&gt;&lt;br&gt;
AI isn't just for writing boilerplate. If you use tools like Kiro to define &lt;strong&gt;Specs&lt;/strong&gt; and enforce &lt;strong&gt;Tests&lt;/strong&gt;, you can build complex, architectural software that is actually maintainable.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Play the Game:&lt;/strong&gt; &lt;a href="https://play.unity.com/en/games/3972ee16-54f7-4d1c-9477-f5793e4b2ed0/chambers" rel="noopener noreferrer"&gt;Unity Play Link&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Check the Code:&lt;/strong&gt; &lt;a href="https://github.com/MiChaelinzo/Chambers" rel="noopener noreferrer"&gt;GitHub Repository&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Give Kiro a try if you want to stop fixing bugs and start building systems.&lt;/p&gt;




</description>
      <category>kiro</category>
      <category>gamedev</category>
      <category>typescript</category>
      <category>ai</category>
    </item>
    <item>
      <title>From Text to Live Video: How We Built a Serverless Multimodal Logistics AI on Google Cloud Run</title>
      <dc:creator>Michael G. Inso</dc:creator>
      <pubDate>Sat, 08 Nov 2025 13:38:31 +0000</pubDate>
      <link>https://forem.com/michaelinzo/from-text-to-live-video-how-we-built-a-serverless-multimodal-logistics-ai-on-google-cloud-run-590d</link>
      <guid>https://forem.com/michaelinzo/from-text-to-live-video-how-we-built-a-serverless-multimodal-logistics-ai-on-google-cloud-run-590d</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpe96020dkbm7fjslefd0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpe96020dkbm7fjslefd0.png" alt=" " width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The logistics industry runs on information. From tracking numbers on a crumpled label to complex terms in a PDF contract, the speed and accuracy of communication can make or break a shipment. So, for a recent hackathon, my team decided to tackle this challenge head-on. Our goal? To build an intelligent assistant that could understand and assist with logistics queries, no matter how they were presented.&lt;/p&gt;

&lt;p&gt;The result was the &lt;strong&gt;World Movers AI Agent&lt;/strong&gt;, a multimodal assistant that can chat, read documents, analyze images, understand voice commands, and even interpret live video from a webcam or screen share.&lt;/p&gt;

&lt;p&gt;Here’s a look at how we built this powerful, scalable AI application using the magic of Google Cloud Run and Google's Gemini models.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Vision: An AI That Sees and Hears
&lt;/h3&gt;

&lt;p&gt;We didn't want to build just another chatbot. We envisioned a true "agent" that could interact with the world in the same ways a human does. Our core feature list looked like this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Smart Conversations:&lt;/strong&gt; Handle text-based questions about services, quotes, and support.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Document Analysis:&lt;/strong&gt; Upload a PDF, DOCX, or TXT file and ask questions about its contents.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Image Recognition:&lt;/strong&gt; Analyze images of shipping labels, cargo, or warehouse scenes.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Voice Commands:&lt;/strong&gt; Speak directly to the agent for hands-free interaction.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Live Analysis:&lt;/strong&gt; Use a webcam or screen share to get real-time feedback and support.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Actionable AI:&lt;/strong&gt; Go beyond answering questions by taking action, like compiling and emailing a quote request to the sales team.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Why Google Cloud Run was a No-Brainer
&lt;/h3&gt;

&lt;p&gt;To build this, we needed a platform that was fast, scalable, and let us focus on the AI logic, not infrastructure. Google Cloud Run was the perfect fit.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Serverless Simplicity:&lt;/strong&gt; As a small hackathon team, we didn't have time for server provisioning or management. With Cloud Run, we just packaged our code in a Docker container and deployed it. Google handles the rest.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Scale to Zero (and to Infinity):&lt;/strong&gt; This is a killer feature. When our app wasn't being used, it automatically scaled down to zero instances, meaning we weren't paying for idle time. But if we suddenly got a surge of users, Cloud Run would instantly scale up to handle the load.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Container-Powered:&lt;/strong&gt; Using Docker meant our development environment was identical to our production environment. This eliminated the classic "it works on my machine" problem and made deployment a breeze.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Our Architecture: A Tale of Two Services
&lt;/h3&gt;

&lt;p&gt;We kept our architecture clean and simple, leveraging two distinct Cloud Run services:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;&lt;code&gt;frontend-service&lt;/code&gt;:&lt;/strong&gt; A very lightweight service whose only job was to serve our static web interface (built with HTML, CSS, and JavaScript). This is what the user sees and interacts with.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;&lt;code&gt;backend-api-service&lt;/code&gt;:&lt;/strong&gt; This was the brains of the operation. A Python application (using the FastAPI framework) running as a separate Cloud Run service. It handled all the heavy lifting:

&lt;ul&gt;
&lt;li&gt;  Exposing an API that the frontend could call.&lt;/li&gt;
&lt;li&gt;  Processing all incoming data, whether it was text, an uploaded file, or a video frame.&lt;/li&gt;
&lt;li&gt;  Orchestrating the calls to our AI models on Google's Vertex AI platform.&lt;/li&gt;
&lt;li&gt;  Sending the final, AI-generated response back to the user.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;This separation of concerns made our application clean, scalable, and easy to manage.&lt;/p&gt;

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

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

&lt;h3&gt;
  
  
  The Magic Ingredient: Google's Gemini Models
&lt;/h3&gt;

&lt;p&gt;Our agent's intelligence comes from Google's powerful Gemini models, which we accessed via the Vertex AI API:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Gemini Pro:&lt;/strong&gt; This was our workhorse for all language-based tasks. It powered the chat conversations, summarized uploaded documents with incredible accuracy, and helped parse user intent.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Gemini Pro Vision:&lt;/strong&gt; This is where the real magic happened. Gemini Pro Vision is a true multimodal model, meaning it can reason across text, images, and video. It's what allowed our agent to:

&lt;ul&gt;
&lt;li&gt;  Read the tracking number from a photo of a shipping label.&lt;/li&gt;
&lt;li&gt;  Describe the contents of a user's shared screen.&lt;/li&gt;
&lt;li&gt;  Identify a "shipping container" when held up to the webcam.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Crafting the prompts to combine these different data types was a fun challenge, but the results were astounding.&lt;/p&gt;

&lt;h3&gt;
  
  
  From Chatbot to "Agent": Taking Action
&lt;/h3&gt;

&lt;p&gt;The defining moment was implementing the quote request workflow. A user can simply type, &lt;code&gt;"I need a quote to ship a package."&lt;/code&gt; The AI, powered by Gemini Pro, understands this intent and asks follow-up questions like "What are the dimensions?" and "Where is it going?".&lt;/p&gt;

&lt;p&gt;Once it has the necessary info, it doesn't just stop. It formats the data and triggers an API call to an SMTP service, sending a professional email directly to the sales team's inbox. This transforms the AI from a passive information source into an active participant in the business workflow.&lt;/p&gt;

&lt;h3&gt;
  
  
  Final Thoughts
&lt;/h3&gt;

&lt;p&gt;Building a powerful, multimodal AI application is more accessible than ever. By combining the serverless power of &lt;strong&gt;Google Cloud Run&lt;/strong&gt; with the incredible reasoning capabilities of &lt;strong&gt;Google's Gemini models&lt;/strong&gt;, our small team was able to create a sophisticated logistics agent in a matter of days.&lt;/p&gt;

&lt;p&gt;This project proved to us that the future of AI is multimodal, and the future of deploying it is serverless.&lt;/p&gt;




</description>
      <category>architecture</category>
      <category>google</category>
      <category>serverless</category>
      <category>ai</category>
    </item>
    <item>
      <title>All-in-one Cryptocurrency CyberMatrix Analytics Cloud Run 💹🪙</title>
      <dc:creator>Michael G. Inso</dc:creator>
      <pubDate>Fri, 07 Nov 2025 13:27:37 +0000</pubDate>
      <link>https://forem.com/michaelinzo/all-in-one-cryptocurrency-cybermatrix-analytics-cloud-run-26ia</link>
      <guid>https://forem.com/michaelinzo/all-in-one-cryptocurrency-cybermatrix-analytics-cloud-run-26ia</guid>
      <description>&lt;p&gt;&lt;strong&gt;Unifying crypto metrics, real-time analytics, and secure cloud power—CyberMatrix delivers seamless, all-in-one insights for the future of cryptocurrency management.&lt;/strong&gt; 📊📈&lt;/p&gt;




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

&lt;p&gt;The explosive growth of stablecoins and the cryptocurrency market shows the world needs real-time, &lt;strong&gt;intelligent analytics&lt;/strong&gt;. Inspired by PayPal’s PYUSD and new digital asset innovation, we envisioned a universal dashboard for everyone—small businesses and pro traders alike. We fused Google Gemini AI, fast news sentiment, and persistent storage via &lt;strong&gt;MongoDB&lt;/strong&gt; to deliver actionable, contextual analytics. The “AI in Action” hackathon spotlighting Google Cloud, MongoDB, and GitLab was the catalyst for our &lt;strong&gt;CyberMatrix&lt;/strong&gt; platform.&lt;/p&gt;




&lt;h2&gt;
  
  
  🛰️ What it does
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;CyberMatrix Analytics Dashboard v2.1&lt;/strong&gt; is an all-in-one cloud solution for multi-chain crypto analytics, powered by Streamlit on Google Cloud Run:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Efficient Event Feeds:&lt;/strong&gt; Track transactions (PYUSD, USDT, USDC, more), mint/burns, and smart contract events with fast MongoDB caching + GCP Blockchain RPC.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;In-depth Analysis:&lt;/strong&gt; Volume, tagged address leaderboards, and asset flow networks via MongoDB and GCP.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Historical Exploration:&lt;/strong&gt; Explore events across block ranges—on-demand from cache or live blockchain.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Blockchain Tools:&lt;/strong&gt; Address balances, persistent MongoDB watchlists, contract states, transaction lookups.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI-Powered Insights (Gemini):&lt;/strong&gt; Built-in AI assistant answers questions, surfaces news sentiment, and generates actionable summaries.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Contextual News:&lt;/strong&gt; Real-time news feeds from NewsAPI, stored/searchable.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Innovative Simulation:&lt;/strong&gt; Simulate bio-implant crypto payments to test future fintech concepts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;User Perks:&lt;/strong&gt; One-click CSV export, custom UI, emoji-rich theming.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🌌 How We Built It
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Tech Stack:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frontend/UI:&lt;/strong&gt; Streamlit dashboard&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data:&lt;/strong&gt; MongoDB Atlas + PyMongo for storage&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cloud:&lt;/strong&gt; Google Cloud Run (serverless, scalable)

&lt;ul&gt;
&lt;li&gt;Cloud Build &amp;amp; Artifact Registry for CI/CD&lt;/li&gt;
&lt;li&gt;Secret Manager for keys/secrets&lt;/li&gt;
&lt;li&gt;Blockchain Node Engine for Ethereum RPC&lt;/li&gt;
&lt;li&gt;Gemini API for AI&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Blockchain:&lt;/strong&gt; Web3.py for live data&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;External Data:&lt;/strong&gt; NewsAPI for crypto news&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Visualization:&lt;/strong&gt; Pandas, Plotly, Pyvis&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Version Control:&lt;/strong&gt; GitLab auto-builds&lt;/li&gt;

&lt;/ul&gt;




&lt;h2&gt;
  
  
  📡 Challenges we ran into
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;IAM Permissions:&lt;/strong&gt; Cloud IAM tuning—deployment-blocking without precise roles.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resource Management:&lt;/strong&gt; RAM/CPU balancing for analytics, avoiding timeouts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Schema Design:&lt;/strong&gt; MongoDB schemas for events/news/watchlists optimizing speed/reliability.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;RPC Fallbacks:&lt;/strong&gt; Cache-first/fallback logic keeps data instant.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Performance:&lt;/strong&gt; Query and indexing optimization for feeds.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Previous Issues:&lt;/strong&gt; ABI quirks, Streamlit state, Gemini prompt engineering.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🪐 Accomplishments we’re proud of
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;End-to-End Deployment:&lt;/strong&gt; Dockerized, CI/CD pipeline, encrypted secrets runtime.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MongoDB Power:&lt;/strong&gt; Fast caching/search for analytics and persistent user settings.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;News Indexing:&lt;/strong&gt; Near-instant news storage/search.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Persistent Watchlists:&lt;/strong&gt; Watchlists persist across logins/sessions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hybrid Fetch Model:&lt;/strong&gt; Smart cache + RPC fallback data fetching.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Actionable AI:&lt;/strong&gt; Gemini powers fast sentiment/analysis.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🤖 What we learned
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Cloud Build Skills:&lt;/strong&gt; Code-to-deploy Docker builds.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Secret Hygiene:&lt;/strong&gt; Safe secret management with Google Secret Manager.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;IAM Deep Dive:&lt;/strong&gt; Role/service account security.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dockerization:&lt;/strong&gt; Reproducible dev environments.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Schema Skills:&lt;/strong&gt; MongoDB indexing/schema design for analytics.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🚀👨🏻‍🚀 What's next for CyberMatrix Analytics
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Stablecoin Expansion:&lt;/strong&gt; Add USDT, USDC, DAI (cross-chain support).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vector Search:&lt;/strong&gt; Transaction/news embeddings in MongoDB for semantic search.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Advanced Aggregation:&lt;/strong&gt; MongoDB upstream analytics for richer stats.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Live Sync:&lt;/strong&gt; MongoDB Change Streams for real-time updates.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;BigQuery Integration:&lt;/strong&gt; Offload big data to BigQuery, keep MongoDB for live ops.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Personalized Accounts:&lt;/strong&gt; Secure sign-in, custom dashboards, encrypted storage.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Zero Ops CI/CD:&lt;/strong&gt; GitLab push-to-deploy—fully automated.&lt;/li&gt;
&lt;/ul&gt;




</description>
      <category>webdev</category>
      <category>ai</category>
      <category>cloudrun</category>
      <category>blockchain</category>
    </item>
    <item>
      <title>🧠 From Specs to Sentience: How Kiro IDE Helped Me Build a Reactive AI Dungeon in Days</title>
      <dc:creator>Michael G. Inso</dc:creator>
      <pubDate>Thu, 14 Aug 2025 10:18:47 +0000</pubDate>
      <link>https://forem.com/michaelinzo/from-specs-to-sentience-how-kiro-ide-helped-me-build-a-reactive-ai-dungeon-in-days-1pd0</link>
      <guid>https://forem.com/michaelinzo/from-specs-to-sentience-how-kiro-ide-helped-me-build-a-reactive-ai-dungeon-in-days-1pd0</guid>
      <description>&lt;h2&gt;
  
  
  🛠️ The Spec-Driven Revolution
&lt;/h2&gt;

&lt;p&gt;Everything began with a folder: &lt;code&gt;/.kiro&lt;/code&gt;. Inside it, I wrote YAML specs for quests, NPCs, and global events. No hardcoded logic. No brittle managers. Just clean, declarative design:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;neon_escape"&lt;/span&gt;
  &lt;span class="na"&gt;startCondition&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;roomEntered&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
  &lt;span class="na"&gt;endCondition&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;player.healthBelow&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0.2&lt;/span&gt;
  &lt;span class="na"&gt;actions&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;spawn&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;gangAmbush"&lt;/span&gt;
    &lt;span class="na"&gt;reward&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;neonShard"&lt;/span&gt;
      &lt;span class="na"&gt;amount&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;5&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Kiro parsed these specs and instantly generated:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;C# classes (&lt;code&gt;QuestDefinition&lt;/code&gt;, &lt;code&gt;EventTrigger&lt;/code&gt;)
&lt;/li&gt;
&lt;li&gt;YAML ↔ runtime serializers
&lt;/li&gt;
&lt;li&gt;Unity bindings that made everything playable on save&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🤖 Agent Hooks That Think Ahead
&lt;/h2&gt;

&lt;p&gt;I wired custom Kiro hooks to automate everything:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Saving a spec regenerated the quest pipeline
&lt;/li&gt;
&lt;li&gt;Creating an NPC archetype scaffolded AI behaviors and animation states
&lt;/li&gt;
&lt;li&gt;Dropping a prefab rebuilt the spawn registry and loot tables
&lt;/li&gt;
&lt;li&gt;Running a profiling hook injected performance throttles directly into the spec&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It felt like having a full-time systems engineer working behind the scenes — except it was all AI.&lt;/p&gt;




&lt;h2&gt;
  
  
  ✨ AI Pair Programming That Actually Works
&lt;/h2&gt;

&lt;p&gt;I sketched my ideas in plain English:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Build a map generator that carves rooms, places doors, and sets neon lighting.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Kiro returned a complete C# class with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Breadth-first room expansion
&lt;/li&gt;
&lt;li&gt;Adjacency checks
&lt;/li&gt;
&lt;li&gt;Weighted loot tables
&lt;/li&gt;
&lt;li&gt;Coroutine-driven lighting transitions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It compiled and ran on the first try. I didn’t touch a single boilerplate line.&lt;/p&gt;




&lt;h2&gt;
  
  
  🚀 What’s Next
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Multiplayer sync via agent hooks
&lt;/li&gt;
&lt;li&gt;A player-authored spec editor
&lt;/li&gt;
&lt;li&gt;An open modding toolkit for infinite cyberpunk adventures&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Kiro didn’t just accelerate development — it changed how I &lt;em&gt;think&lt;/em&gt; about building games.&lt;br&gt;&lt;br&gt;
Specs are now my source of truth. AI is my co-creator. And iteration is instant.&lt;/p&gt;

&lt;p&gt;Let’s build smarter worlds — one YAML file at a time.&lt;/p&gt;




</description>
      <category>webdev</category>
      <category>ai</category>
      <category>kiro</category>
      <category>programming</category>
    </item>
    <item>
      <title>🚇 How Kiro IDE Supercharged NeonQuest: From YAML Specs to Dynamic Cyberpunk Dungeons</title>
      <dc:creator>Michael G. Inso</dc:creator>
      <pubDate>Mon, 28 Jul 2025 19:44:40 +0000</pubDate>
      <link>https://forem.com/michaelinzo/how-kiro-ide-supercharged-neonquest-from-yaml-specs-to-dynamic-cyberpunk-dungeons-1013</link>
      <guid>https://forem.com/michaelinzo/how-kiro-ide-supercharged-neonquest-from-yaml-specs-to-dynamic-cyberpunk-dungeons-1013</guid>
      <description>&lt;h2&gt;
  
  
  🎇 The Spark — Why NeonQuest Exists
&lt;/h2&gt;

&lt;p&gt;I was instantly drawn to Daelonik’s &lt;strong&gt;Neon Underground&lt;/strong&gt; asset pack — the luminous pipes, rain‑slick alleys, and that feeling of infinite space lurking just past the shadows.&lt;br&gt;&lt;br&gt;
But visual beauty wasn’t enough. I wanted &lt;strong&gt;true replayability&lt;/strong&gt;: quests, NPCs, lighting, and ambiance that would &lt;strong&gt;shift dynamically&lt;/strong&gt; based on a player’s actions and stats.&lt;br&gt;&lt;br&gt;
Hard‑coding that reactive logic would’ve been a long, brittle grind… until I discovered what Kiro could do.&lt;/p&gt;


&lt;h2&gt;
  
  
  🛠 Spec‑Driven Development, Supercharged
&lt;/h2&gt;

&lt;p&gt;Instead of building managers and data classes by hand, I kept &lt;em&gt;everything&lt;/em&gt; in &lt;strong&gt;human‑readable YAML&lt;/strong&gt; under &lt;code&gt;/.kiro&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="c1"&gt;# quests.yaml&lt;/span&gt;
&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;escape_maze"&lt;/span&gt;
  &lt;span class="na"&gt;startCondition&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;roomEntered&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
  &lt;span class="na"&gt;actions&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;spawn&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;gangAmbush"&lt;/span&gt;
    &lt;span class="na"&gt;reward&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;neonShard"&lt;/span&gt;
      &lt;span class="na"&gt;amount&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;5&lt;/span&gt;
  &lt;span class="na"&gt;metadata&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;difficulty&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;medium&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Kiro parsed these specs and instantly generated:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;C# &lt;code&gt;QuestDefinition&lt;/code&gt; classes
&lt;/li&gt;
&lt;li&gt;YAML ↔ runtime &lt;strong&gt;serializers/deserializers&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Event‑binding logic that plugged quests straight into Unity’s update loop
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Changing drop rates, difficulty, or spawn triggers became as simple as saving a file — no plumbing, no forgotten registrations. Just &lt;em&gt;instant iteration&lt;/em&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  🤖 Agent Hooks — Automation That Feels Like Magic
&lt;/h2&gt;

&lt;p&gt;I wired &lt;strong&gt;custom agent hooks&lt;/strong&gt; so common dev actions became &lt;em&gt;runtime‑ready updates&lt;/em&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Spec Save →&lt;/strong&gt; Full quest pipeline + event bindings regenerated instantly
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;New NPC Archetype →&lt;/strong&gt; Auto‑scaffolded &lt;code&gt;MonoBehaviour&lt;/code&gt; stubs, animations, and metadata
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Asset Import →&lt;/strong&gt; Spawn registry + loot tables rebuilt so the new prefab appeared in‑game on the spot
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every spec edit, every asset drop, every NPC definition — instantly live, perfectly synced, zero manual wiring.&lt;/p&gt;




&lt;h2&gt;
  
  
  ✏️ Inline AI Coding &amp;amp; Multimodal Chat
&lt;/h2&gt;

&lt;p&gt;To prototype complex systems, I talked to Kiro like a teammate:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Build a &lt;code&gt;ProceduralMapGenerator&lt;/code&gt; that carves rooms, places doors, and runs neon lighting coroutines.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Within seconds, Kiro returned a &lt;strong&gt;full C# class&lt;/strong&gt; featuring:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Breadth‑first room expansion
&lt;/li&gt;
&lt;li&gt;Overlap‑safe adjacency checks
&lt;/li&gt;
&lt;li&gt;Weighted loot distribution
&lt;/li&gt;
&lt;li&gt;Integrated event dispatcher for reactive encounters
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It compiled &lt;em&gt;and worked&lt;/em&gt; on the first try — what would’ve been hours of manual scripting just… appeared.&lt;/p&gt;




&lt;h2&gt;
  
  
  💡 Lessons That Stuck
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Clarity powers creativity&lt;/strong&gt; — well‑defined specs produce richer procedural outcomes.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Performance belongs in the loop&lt;/strong&gt; — profiling hooks that auto‑inject throttles kept the experience silky‑smooth.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fearless iteration wins&lt;/strong&gt; — with boilerplate gone, I could spend all my cycles on world‑building and atmosphere.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  🚀 What’s Next
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;🌐 &lt;strong&gt;Multiplayer sync layer&lt;/strong&gt; — networked hooks that keep events consistent across clients.
&lt;/li&gt;
&lt;li&gt;✍ &lt;strong&gt;Player‑authored spec editor&lt;/strong&gt; — so anyone can define quests and ambiance in plain text.
&lt;/li&gt;
&lt;li&gt;🛠 &lt;strong&gt;Open mod toolkit&lt;/strong&gt; — to let the community fold in new assets, specs, and encounters.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Kiro didn’t just save me time — it &lt;strong&gt;changed how I think about making games&lt;/strong&gt;. Boilerplate is gone. Specs &lt;em&gt;are&lt;/em&gt; the source of truth. And AI pair‑programming feels less like automation, more like &lt;em&gt;co‑creation&lt;/em&gt;.  &lt;/p&gt;

&lt;p&gt;Let’s keep bending the rules of development — one spec at a time. &lt;strong&gt;#kiro&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;If you’d like, I can now &lt;strong&gt;weave in direct links to your YAML, hooks, and ProceduralMapGenerator code snippets&lt;/strong&gt; so Devpost judges can &lt;em&gt;see&lt;/em&gt; the magic, not just read about it — that extra transparency often earns bonus points in hackathons. Would you like me to prepare that version?&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>ai</category>
      <category>kiro</category>
    </item>
  </channel>
</rss>
