<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Batuhan</title>
    <description>The latest articles on DEV Community by Batuhan (@batuta).</description>
    <link>https://dev.to/batuta</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4064355%2F1635ac68-2337-4d2a-98a3-05d3ee6ad33d.jpg</url>
      <title>DEV Community: Batuhan</title>
      <link>https://dev.to/batuta</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/batuta"/>
    <language>en</language>
    <item>
      <title>Unity Sentry-Gemini Debugger - Smash Unity Crashes with One-Click AI Fixes 🛠️🤖</title>
      <dc:creator>Batuhan</dc:creator>
      <pubDate>Wed, 05 Aug 2026 16:08:02 +0000</pubDate>
      <link>https://dev.to/batuta/unity-sentry-gemini-debugger-smash-unity-crashes-with-one-click-ai-fixes-3geb</link>
      <guid>https://dev.to/batuta/unity-sentry-gemini-debugger-smash-unity-crashes-with-one-click-ai-fixes-3geb</guid>
      <description>&lt;h1&gt;
  
  
  Unity Sentry-Gemini Debugger: How We Automated Game Bug Smashes with Sentry and AI
&lt;/h1&gt;

&lt;p&gt;This post is submitted for the &lt;strong&gt;DEV's Summer Bug Smash Challenge&lt;/strong&gt; (Smash Stories / Best Use of Sentry / Best Use of Google AI categories).&lt;/p&gt;




&lt;h2&gt;
  
  
  🐛 The Bug
&lt;/h2&gt;

&lt;p&gt;While playtesting our latest Unity game, we hit a frustrating, intermittent crash. The game would freeze, and our console log was cluttered with a cryptic &lt;code&gt;NullReferenceException&lt;/code&gt;. Because the crash occurred randomly during game state changes, finding the exact script reference and state corruption manually was like looking for a needle in a haystack. &lt;/p&gt;




&lt;h2&gt;
  
  
  🔍 The Discovery
&lt;/h2&gt;

&lt;p&gt;Fortunately, we had &lt;strong&gt;Sentry&lt;/strong&gt; integrated into our build. An alert fired on our Sentry dashboard, pinpointing the issue:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Error:&lt;/strong&gt; &lt;code&gt;NullReferenceException: Object reference not set to an instance of an object&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Location:&lt;/strong&gt; &lt;code&gt;PlayerController.cs&lt;/code&gt; in &lt;code&gt;Update()&lt;/code&gt; at line 42.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Sentry gave us the trace, but we still faced a developer's daily friction: opening the codebase, finding the script, scrolling to line 42, analyzing the context, and writing the fix. This manual cycle felt too slow.&lt;/p&gt;




&lt;h2&gt;
  
  
  🕵️‍♂️ The Investigation &amp;amp; The Tool We Built
&lt;/h2&gt;

&lt;p&gt;We wanted to automate this friction away. So, we built a custom tool directly inside the game engine: &lt;strong&gt;Unity Sentry-Gemini Debugger&lt;/strong&gt;—a lightweight Unity Editor extension.&lt;/p&gt;

&lt;p&gt;We designed it with &lt;strong&gt;zero external DLL dependencies&lt;/strong&gt; to prevent assembly conflicts in Unity. Using C# and regex:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;It queries the &lt;strong&gt;Sentry API&lt;/strong&gt; to retrieve the latest project crashes and stack traces inside the Editor.&lt;/li&gt;
&lt;li&gt;It automatically matches the stacktrace to our local script (&lt;code&gt;PlayerController.cs&lt;/code&gt;) and renders a live code preview of the crash site.&lt;/li&gt;
&lt;li&gt;It compiles the context (Sentry error + local code) and queries &lt;strong&gt;Google Gemini API&lt;/strong&gt; for an immediate fix.&lt;/li&gt;
&lt;/ol&gt;




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

&lt;p&gt;We launched our new editor tool (&lt;code&gt;Window &amp;gt; Sentry-Gemini Debugger&lt;/code&gt;), fetched the active Sentry issue, and clicked &lt;strong&gt;Analyze with Gemini&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;Gemini instantly detected that we were attempting to access a UI component ref that hadn't been initialized during &lt;code&gt;Awake()&lt;/code&gt; when the game state reloaded. It provided the corrected code block. &lt;/p&gt;

&lt;p&gt;We clicked &lt;strong&gt;Apply C# Fix&lt;/strong&gt;. The tool:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Created a &lt;code&gt;.bak&lt;/code&gt; backup of &lt;code&gt;PlayerController.cs&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Overwrote the code with the fix.&lt;/li&gt;
&lt;li&gt;Triggered a native Unity compilation reimport.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The bug was smashed, the script recompiled, and playtests resumed—all in under 15 seconds without leaving the Unity Editor!&lt;/p&gt;




&lt;h2&gt;
  
  
  🛠️ Tech Stack &amp;amp; Open Source Code
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Language:&lt;/strong&gt; C# (Unity Editor scripting)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;API integrations:&lt;/strong&gt; Sentry Web API &amp;amp; Google Gemini API&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Repository:&lt;/strong&gt; &lt;a href="https://github.com/batu-ta/unity-sentry-gemini-debugger" rel="noopener noreferrer"&gt;https://github.com/batu-ta/unity-sentry-gemini-debugger&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  💡 What We Learned (Sentry &amp;amp; AI Impact)
&lt;/h2&gt;

&lt;p&gt;By bridging real-time error tracking (Sentry) and generative AI (Gemini) directly inside the Unity Engine, we turned debugging from a detective chore into a one-click automation.&lt;/p&gt;

</description>
      <category>bugsmash</category>
      <category>unity3d</category>
      <category>gemini</category>
      <category>devchallenge</category>
    </item>
    <item>
      <title>Cozy Comfort Bistro - Comfort Food for the Soul</title>
      <dc:creator>Batuhan</dc:creator>
      <pubDate>Wed, 05 Aug 2026 15:41:21 +0000</pubDate>
      <link>https://dev.to/batuta/cozy-comfort-bistro-comfort-food-for-the-soul-3p7c</link>
      <guid>https://dev.to/batuta/cozy-comfort-bistro-comfort-food-for-the-soul-3p7c</guid>
      <description>&lt;h2&gt;
  
  
  Cozy Comfort Bistro
&lt;/h2&gt;

&lt;p&gt;Cozy Comfort Bistro is a virtual culinary sanctuary built for the &lt;strong&gt;DEV.to Frontend Challenge: Comfort Food Edition&lt;/strong&gt; (Perfect Landing prompt). &lt;/p&gt;

&lt;p&gt;It combines an immersive aesthetic, simulated ambient soundscapes, a personalized soul-food matcher quiz, and a custom plate builder—all designed to feel like a warm, rainy Sunday afternoon by the window.&lt;/p&gt;

&lt;h3&gt;
  
  
  🔗 Live Demo &amp;amp; Code
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Live Demo:&lt;/strong&gt; [&lt;a href="https://cozycomfort-bistro.netlify.app" rel="noopener noreferrer"&gt;https://cozycomfort-bistro.netlify.app&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Repository:&lt;/strong&gt; [&lt;a href="https://github.com/batu-ta/cozy-comfort-bistro" rel="noopener noreferrer"&gt;https://github.com/batu-ta/cozy-comfort-bistro&lt;/a&gt;]&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  🛠️ How It Works &amp;amp; Key Features
&lt;/h3&gt;

&lt;p&gt;We combined both contest categories: a &lt;strong&gt;Perfect Landing Page&lt;/strong&gt; that showcases premium frontend design principles, and a &lt;strong&gt;pure CSS Art piece&lt;/strong&gt; serving as the hero element.&lt;/p&gt;

&lt;h4&gt;
  
  
  1. Interactive CSS Art (The Steaming Cup)
&lt;/h4&gt;

&lt;p&gt;In the hero section, you will find a steaming cup of hot chocolate on a wooden saucer, &lt;strong&gt;built entirely in CSS&lt;/strong&gt;. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Interactivity:&lt;/strong&gt; Hovering over the cup makes the steam rise faster. Clicking anywhere inside the cup drops a fresh marshmallow with a realistic bounce animation.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  2. Procedural Ambient Sounds (Web Audio API Synth)
&lt;/h4&gt;

&lt;p&gt;To establish the ultimate cozy atmosphere, the site features synthesized ambient sounds. Instead of loading heavy audio files, &lt;strong&gt;the soundscapes are synthesized procedurally in real-time&lt;/strong&gt; using the Web Audio API:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Rainy Cafe:&lt;/strong&gt; Generates rain patter using filtered low-pass white noise combined with brief high-pass clicks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Crackling Fireplace:&lt;/strong&gt; Employs low-frequency rumble accompanied by randomly scheduled crisp impulse snaps to replicate burning logs.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  3. The "Soul Food Matcher"
&lt;/h4&gt;

&lt;p&gt;An interactive step-by-step quiz that recommends a comfort food classic based on your current mood, weather, and taste cravings. &lt;/p&gt;

&lt;h4&gt;
  
  
  4. Custom Plate Builder
&lt;/h4&gt;

&lt;p&gt;Allows users to visually compile their perfect comfort meal (choosing a base, a main comfort dish, and toppings) directly on a virtual plate using dynamic CSS layered rendering.&lt;/p&gt;




&lt;h3&gt;
  
  
  💻 Tech Stack
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Languages:&lt;/strong&gt; Semantic HTML5, Vanilla JavaScript&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Styling:&lt;/strong&gt; Advanced Vanilla CSS (utilizing custom variables for instant transition between Midnight Cocoa, Teal Cabin, and Golden Sunset themes)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Audio Logic:&lt;/strong&gt; Web Audio API&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  🎨 Design &amp;amp; Aesthetics
&lt;/h3&gt;

&lt;p&gt;The application features curated warm HSL color palettes, custom typography (Playfair Display and Inter), modern glassmorphism panels, and smooth micro-animations that make the interface feel responsive and alive.&lt;/p&gt;

</description>
      <category>frontendchallenge</category>
      <category>devchallenge</category>
      <category>css</category>
      <category>html</category>
    </item>
  </channel>
</rss>
