<?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>DogSpeak Pro - Interactive Behavioral Sandbox &amp; Procedural Acoustic Synthesizer</title>
      <dc:creator>Batuhan</dc:creator>
      <pubDate>Fri, 14 Aug 2026 19:59:41 +0000</pubDate>
      <link>https://dev.to/batuta/dogspeak-pro-interactive-behavioral-sandbox-procedural-acoustic-synthesizer-gio</link>
      <guid>https://dev.to/batuta/dogspeak-pro-interactive-behavioral-sandbox-procedural-acoustic-synthesizer-gio</guid>
      <description>&lt;h3&gt;
  
  
  What I Built
&lt;/h3&gt;

&lt;p&gt;I built &lt;strong&gt;DogSpeak Pro&lt;/strong&gt;, an interactive acoustic and behavioral sandbox that translates canine expressions and sounds. The application aims to educate dog owners and enthusiasts on dog body language (ears, paws, snout, tail wags) through dynamic visual feedback and realistic, procedurally synthesized canine sounds.&lt;/p&gt;

&lt;h3&gt;
  
  
  Demo
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Live Site:&lt;/strong&gt; &lt;a href="https://dogspeakpro.netlify.app" rel="noopener noreferrer"&gt;https://dogspeakpro.netlify.app&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Source Code:&lt;/strong&gt; &lt;a href="https://github.com/batu-ta/dogspeak" rel="noopener noreferrer"&gt;https://github.com/batu-ta/dogspeak&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  How It Works
&lt;/h3&gt;

&lt;p&gt;DogSpeak Pro combines three core web technologies with zero external frameworks or heavy assets:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Procedural Acoustic Synthesizer (Web Audio API):&lt;/strong&gt;&lt;br&gt;
No static audio files (&lt;code&gt;.mp3&lt;/code&gt; / &lt;code&gt;.wav&lt;/code&gt;) are downloaded. All sounds are generated in real-time using mathematical oscillators, low-frequency oscillators (LFOs) for vibrato/growl rumbles, and custom white noise buffers for panting breaths. Real-time sliders allow modulations of the &lt;strong&gt;vocal pitch&lt;/strong&gt; and &lt;strong&gt;vocal raspiness&lt;/strong&gt; live.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Live Waveform Oscilloscope (HTML5 Canvas):&lt;/strong&gt;&lt;br&gt;
All audio outputs connect to an &lt;code&gt;AnalyserNode&lt;/code&gt;. A &lt;code&gt;requestAnimationFrame&lt;/code&gt; loop reads time-domain data and draws a glowing wave curve matching the color theme of the website.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Mouse-Tracking CSS Art:&lt;/strong&gt;&lt;br&gt;
The cartoonish dog is rendered entirely via semantic CSS shapes. The eyes dynamically track your cursor across the sandbox, and different vocalizations trigger physical reactions (head shaking, mouth opening, eyebrow expression changes).&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Development Journey
&lt;/h3&gt;

&lt;p&gt;Building this over the weekend pushed me to explore the limits of the Web Audio API. Shaping a triangle wave pitch sweep to sound like a natural dog bark required fine-tuning decay envelopes down to milliseconds. &lt;br&gt;
Creating the mouse-tracking eye movement using basic bounding client coordinates and clamping the displacement vectors to a circle added a layer of physical life to the CSS character.&lt;/p&gt;

</description>
      <category>weekendchallenge</category>
      <category>showdev</category>
      <category>javascript</category>
      <category>devchallenge</category>
    </item>
    <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>
