<?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: Himanshu Yeole</title>
    <description>The latest articles on DEV Community by Himanshu Yeole (@himanshuyeolecsejpg).</description>
    <link>https://dev.to/himanshuyeolecsejpg</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%2F3993614%2Faa99ddda-5a07-4cd3-a42c-f2a18ba9a961.png</url>
      <title>DEV Community: Himanshu Yeole</title>
      <link>https://dev.to/himanshuyeolecsejpg</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/himanshuyeolecsejpg"/>
    <language>en</language>
    <item>
      <title>haunt — Don't Run This CLI Tool Alone in the Dark</title>
      <dc:creator>Himanshu Yeole</dc:creator>
      <pubDate>Sat, 31 Oct 2026 18:25:27 +0000</pubDate>
      <link>https://dev.to/himanshuyeolecsejpg/haunt-dont-run-this-cli-tool-alone-in-the-dark-1nld</link>
      <guid>https://dev.to/himanshuyeolecsejpg/haunt-dont-run-this-cli-tool-alone-in-the-dark-1nld</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week4-2026-10-26"&gt;Hacktoberfest Open-Source AI Challenge Week 4: Ghost in the Machine&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;haunt&lt;/strong&gt; is a small, rainy, lantern-lit world with one ghost in it, and the ghost actually talks back.&lt;/p&gt;

&lt;p&gt;You swipe up on a Halloween card, the screen flickers as if something is arriving, and a 3D ghost drifts across dark water carrying a lantern. You can steer it, push its lantern, poke it, and whisper to it. Its robe moves in the wind, the lantern swings like a pendulum, and the lantern's light breaks up on the rain-ruffled water.&lt;/p&gt;

&lt;p&gt;I read the theme as both halves of the week:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Halloween mode&lt;/strong&gt; is the haunted machine. Turn on &lt;em&gt;Haunting&lt;/em&gt; and, after at least a minute (plus a random delay), the page starts acting possessed. Each event is preceded by a build-up: the rain stops, the lantern gutters, the ghost goes still and slowly turns to face you, a heartbeat quickens, and then everything cuts to silence before it hits. Events include a fake system monitor that "scans" your screen, an idle watch ("Are you still there?"), a fake terminal, footsteps rippling across empty water, and a second pale lantern drifting toward the ghost.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ofrenda mode&lt;/strong&gt; is the gentle half, for Día de los Muertos. The haunting switches off completely. The ghost asks who you're remembering and, once you name them, can speak with the warmth of that person as an &lt;em&gt;echo built from your own memories&lt;/em&gt;. It never invents facts about them, never claims to be the real person, and says so honestly if you ask.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After every haunting event the ghost comments on what &lt;em&gt;you&lt;/em&gt; just did ("You looked away for 40 seconds"), so the haunting feels aimed at you rather than scripted.&lt;/p&gt;

&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/himanshuyeolecse-jpg" rel="noopener noreferrer"&gt;
        himanshuyeolecse-jpg
      &lt;/a&gt; / &lt;a href="https://github.com/himanshuyeolecse-jpg/haunt" rel="noopener noreferrer"&gt;
        haunt
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      A 3D ghost with a lantern that drifts across dark rainy water and thinks with a local AI model (Ollama + Gemma). Halloween haunting events, Ofrenda mode, ambient audio. Zero pip installs.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;👻 haunt&lt;/h1&gt;
&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;A 3D ghost with a lantern that drifts across dark, rainy water — and thinks with a local AI model. Everything runs on your machine. Nothing leaves it.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/himanshuyeolecse-jpg/haunt/static/intro.jpg"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fhimanshuyeolecse-jpg%2Fhaunt%2FHEAD%2Fstatic%2Fintro.jpg" alt="haunt intro"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;✨ Features&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;3D ghost&lt;/strong&gt; rendered in real-time with Three.js — cloth sway, lantern pendulum, rain ripples, and dynamic lighting&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Local AI brain&lt;/strong&gt; — powered by &lt;a href="https://ollama.com" rel="nofollow noopener noreferrer"&gt;Ollama&lt;/a&gt; + Gemma (or any model you have); whisper to it and it whispers back&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Haunting mode&lt;/strong&gt; — 11 escalating horror events fire every ~30 seconds: fake system monitor, idle watch, terminal takeover, footsteps across the water, a second lantern, the ghost staring off-screen, and more&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ofrenda mode&lt;/strong&gt; — Día de los Muertos remembrance mode; the ghost listens with warmth and can speak with the echo of someone you name&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ambient audio&lt;/strong&gt; — synthesized rain, drone, heartbeat and whispers, plus looping background music; both start automatically&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Zero dependencies&lt;/strong&gt; — stdlib Python only for the server…&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/himanshuyeolecse-jpg/haunt" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;haunt/
├── haunt_web.py        # stdlib-only Python server + Ollama proxy (no pip installs)
├── src/main.js         # the 3D scene (three.js): ghost, cloth, lantern, water, rain
└── static/
    ├── index.html      # swipe-up intro + flicker transition
    ├── haunting.js     # the haunting engine: events, sound, escalation
    ├── music.js        # background music with ducking
    ├── ghost.bin       # the optimized ghost model
    └── app.js          # bundled scene
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Run it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ollama pull gemma3
python haunt_web.py      &lt;span class="c"&gt;# then open http://127.0.0.1:8787&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;The open pieces&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Gemma&lt;/strong&gt; (open-weight) runs the ghost's voice through &lt;strong&gt;Ollama&lt;/strong&gt;, on localhost. The server picks any Gemma model you've pulled first, and the dropdown lets you swap models live.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;three.js&lt;/strong&gt; and &lt;strong&gt;esbuild&lt;/strong&gt; build and render the scene; &lt;strong&gt;meshoptimizer&lt;/strong&gt; shrank the ghost model.&lt;/li&gt;
&lt;li&gt;The server is plain Python standard library. There are no CDNs, no remote fonts, no API keys.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The model and the scene&lt;/strong&gt;&lt;br&gt;
My ghost arrived as a single fused 52 MB mesh (about 1.9M triangles) with no skeleton and no animation. I decimated it to roughly 110k triangles while keeping its UVs, marked the lantern's vertices with a per-vertex weight, and animated everything in the vertex shader: the robe's hem and folds blow in the air, the lantern swings around its handle as a damped pendulum fed by the ghost's acceleration, and you can brush or click it to set it swinging. The water is a shader too: rain ripples plus the lantern's light glittering on them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The ghost's voice&lt;/strong&gt;&lt;br&gt;
This is where the prompt design mattered most. On top of the original short, in-character lines, the ghost follows listening rules: never assume who you are or who you lost, meet laughter, tears, numbness or silence as they come, match your mood and length, avoid clichés, reply in your language, and step out of the ghost voice if someone talks about hurting themselves. In Halloween mode, the haunting events are passed to Gemma as bracketed "notes" with real facts (how long you were idle, whether you pressed Esc), and the model is told to say only what the note says.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sound, with a lesson&lt;/strong&gt;&lt;br&gt;
All the sound is synthesized in the browser (drone, heartbeat, whispers, rain). My first mix was close to inaudible, so I added a meter and measured it: about -50 dBFS at rest. I raised the levels and added mid-range layers so laptop speakers can actually play it (about -36 dBFS at rest, around -21 dBFS at peak dread).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Honest limits&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The ghost's eyes are painted into the texture, so it can't move its eyes; it turns its whole body instead.&lt;/li&gt;
&lt;li&gt;"Active window" awareness is limited to the browser tab, and the system-monitor and file-scan events are simulations that use only values the browser already shares (no files are read, no commands run, the camera is switched off the instant it turns on).&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why Does Open Innovation Matter?
&lt;/h2&gt;

&lt;p&gt;This project is about trust, and a closed API would have undermined it.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Private grief.&lt;/strong&gt; In Ofrenda mode, people may type the name of someone they've lost. With a local open-weight model, those words never leave the machine. That wasn't a cost-saving choice; it's the only version I'd be comfortable asking someone to use.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Offline.&lt;/strong&gt; The whole experience runs without internet once the model is pulled: three.js, textures, music and fonts all ship in the folder.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Changing the ghost's mind.&lt;/strong&gt; Swapping models is one dropdown, and the personality lives in a prompt I can read, edit and test, not behind someone else's policy changes. I could add safety behavior (stepping out of character when someone sounds unsafe) at the exact layer where it belongs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Free to run.&lt;/strong&gt; Nothing is metered, so the ghost can keep talking for as long as someone wants to sit with it.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Prize Categories
&lt;/h2&gt;

&lt;p&gt;The Spirit of ItIt clicked at 2:30 a.m. while test-running the code in a pitch-black room with headphones on. I typed a target name into the prompt, hit enter, and watched the terminal drop into a dead silence before the ambient audio shift kicked in. The sudden, low-frequency hum paired with the slow-scrolling text made me glance over my shoulder at the dark hallway behind my desk. That split-second of genuine hesitation—wondering if I really wanted to see what keypress triggered next—was when I knew the atmosphere was dialed in right.&lt;/p&gt;

&lt;h2&gt;
  
  
  Credits and assets
&lt;/h2&gt;

&lt;p&gt;Prize CategoriesGrand Prize / Spookiest Project: For building an immersive, interactive terminal/CLI experience focused on atmospheric horror and suspense.Best Maintainer / Open Source Integration: Fully open-sourced repository with clean documentation, clear installation steps, and open setup for Hacktoberfest contributors.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Best Use of ElevenLabs: Adding atmospheric audio elements, creepily realistic voice narration, and haunting soundscapes to elevate the terminal horror experience.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Best Use of GitHub Copilot: Built using GitHub Copilot CLI and coding agent integrations to streamline open-source contributions and maintainer workflows.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Best Use of Backboard: Integrating Backboard’s open-source terminal coding capabilities and RAG memory to drive contextual suspense and dark interactive story paths.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Credits and assets
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Music: "Nebula Voyager" by OneCinematicStudio 
&lt;a href="https://pixabay.com/music/orchestral-nebula-voyager-epic-space-amp-cosmic-cinematic-music1-529058/" rel="noopener noreferrer"&gt;https://pixabay.com/music/orchestral-nebula-voyager-epic-space-amp-cosmic-cinematic-music1-529058/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Rain-and-lantern look inspired by 
credit - Pixlora &lt;a href="https://in.pinterest.com/pin/921197298821103157/" rel="noopener noreferrer"&gt;https://in.pinterest.com/pin/921197298821103157/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>One Photo In, One .STL Out: A Lazy 3D Maker That Runs Offline</title>
      <dc:creator>Himanshu Yeole</dc:creator>
      <pubDate>Sat, 24 Oct 2026 18:17:35 +0000</pubDate>
      <link>https://dev.to/himanshuyeolecsejpg/one-photo-in-one-stl-out-a-lazy-3d-maker-that-runs-offline-2fn</link>
      <guid>https://dev.to/himanshuyeolecsejpg/one-photo-in-one-stl-out-a-lazy-3d-maker-that-runs-offline-2fn</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week3-2026-10-19"&gt;Hacktoberfest Open-Source AI Challenge Week 3: Slow and Steady&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;A website that starts with a film. Wukong stands on a cliff in the mist with his back to you, tiny beside four giant guardians. The film ends, and he doesn't leave. The video hands over to a real 3D model standing in the same spot at the same size, and you can drag him round to see his face.&lt;/p&gt;

&lt;p&gt;Scroll down and the page does something lazier and more useful. &lt;strong&gt;Drop in a photo of an object and it hands back a solid 3D shape.&lt;/strong&gt; You can spin it, download it as &lt;code&gt;.glb&lt;/code&gt; for a game or website, or download it as &lt;code&gt;.stl&lt;/code&gt; and print it. No account, no upload, no Blender.&lt;/p&gt;

&lt;p&gt;The people who get to be lazier are anyone who has a toy, a figurine or a prop on their desk and needs a 3D version of it: makers, game-jam developers, teachers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Live site:&lt;/strong&gt; &lt;a href="https://admirable-trifle-93524f.netlify.app/" rel="noopener noreferrer"&gt;https://admirable-trifle-93524f.netlify.app/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/EUsINqWFuPw" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;To try it: let the intro play, drag Wukong, scroll to the tool, press "Try a sample" or drop your own photo, then download the &lt;code&gt;.stl&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/himanshuyeolecse-jpg" rel="noopener noreferrer"&gt;
        himanshuyeolecse-jpg
      &lt;/a&gt; / &lt;a href="https://github.com/himanshuyeolecse-jpg/Image-to-3d_Hacktoberfest_site" rel="noopener noreferrer"&gt;
        Image-to-3d_Hacktoberfest_site
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Making a printable 3D object normally means an hour or more in Blender, or a photogrammetry session with dozens of photos. Here it is one photo and [X] seconds. You do nothing in between.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Wukong relief site&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;Static site. No build step, no server code.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Run locally&lt;/h2&gt;
&lt;/div&gt;
&lt;div class="snippet-clipboard-content notranslate position-relative overflow-auto"&gt;&lt;pre class="notranslate"&gt;&lt;code&gt;python3 -m http.server 8000      # then open http://localhost:8000
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Opening index.html from disk will not work (browsers block module and model loading over file://).&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Deploy&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Render: new Static Site from this folder (render.yaml included). Publish directory: &lt;code&gt;.&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Custom domain (.tech): add it in Render's Custom Domains, then set the DNS records Render shows.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Fully offline depth model (optional)&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;By default the depth model downloads from Hugging Face on first use and the browser caches it.
To bundle it instead, download &lt;code&gt;onnx-community/depth-anything-v2-small&lt;/code&gt; and place it at:
models/onnx-community/depth-anything-v2-small/   (config.json, preprocessor_config.json, onnx/…)
The page checks &lt;code&gt;models/&lt;/code&gt; first.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Structure&lt;/h2&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;index.html: intro film, handoff to the 3D Wukong model, scroll sections&lt;/li&gt;
&lt;li&gt;tool.js, tool-core.js: photo to solid 3D object (finds the object, mirrors the back, .glb and .stl export)&lt;/li&gt;
&lt;li&gt;assets/: film, music, wukong.glb (3D model, 75 MB, used as supplied and not recompressed), sample…&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/himanshuyeolecse-jpg/Image-to-3d_Hacktoberfest_site" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;p&gt;The site is static files with no server code. Everything runs in your browser.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Find the object.&lt;/strong&gt; U²-Net (small, Apache-2.0) runs with onnxruntime-web and separates the object from its background. The 4.5 MB model ships with the site.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Measure the depth.&lt;/strong&gt; Depth Anything V2 Small, loaded through transformers.js, estimates how far each part sticks out toward you. If it can't load, the tool falls back to a quick depth estimate. [Confirm after you test AI depth on your machine, and edit this sentence if needed.]&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Close the shape.&lt;/strong&gt; My own code builds the surface from the cutout and the depth, rounds the edges, mirrors the front onto the back and joins them at the outline. The page then checks that the shape has no open edges, so a slicer can print it.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Rendering and export use three.js, with an optional GrabCut outline-sharpening step from OpenCV.js.&lt;/p&gt;

&lt;p&gt;Two things broke along the way. My first object finder compared each pixel with the photo's border colour. It worked on a fox on a plain background and failed on a clay Earth floating in a starfield, returning a bent shape with part of the nebula attached. I replaced it with U²-Net and tested it on that same image, plus a Moon and a swirling orange planet. And at one point the whole page froze because OpenCV's loader resolved to itself and my code waited on it forever. I found that by running the page in a real headless browser instead of guessing.&lt;/p&gt;

&lt;p&gt;The intro uses a 75 MB model of Wukong that I generated with Tripo, a closed tool. I used it as one asset. The open pieces are what run the site and the tool.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Does Open Innovation Matter?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;It works offline.&lt;/strong&gt; After the first load, switch Wi-Fi off and the tool still runs. [Add a short clip or screenshot of the Wi-Fi-off test.]&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Your photo never leaves the tab.&lt;/strong&gt; A figurine on your desk or a family keepsake never touches a server I don't control.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I could fix it when it broke.&lt;/strong&gt; Because the models are just files, I swapped the object finder for a better one in an afternoon and tested it on the exact image that failed. With a closed API, I would have been waiting for someone else to fix it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It costs nothing per object.&lt;/strong&gt; There is no per-generation fee and no usage limit. [Only compare with a paid tool if you checked its real price.]&lt;/p&gt;

&lt;h2&gt;
  
  
  The Lazy Payoff
&lt;/h2&gt;

&lt;p&gt;[Write only what is true. For example: "I photographed a [object], dropped it in, and had a printable &lt;code&gt;.stl&lt;/code&gt; in [X seconds]. I printed it and it came out [result]."]&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Step&lt;/th&gt;
&lt;th&gt;Time on my machine&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Page and Wukong model load&lt;/td&gt;
&lt;td&gt;[X s on Y connection]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Find the object&lt;/td&gt;
&lt;td&gt;[X s]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Depth for one photo&lt;/td&gt;
&lt;td&gt;[X s]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Build the solid&lt;/td&gt;
&lt;td&gt;[X ms]&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;What it can't do:&lt;/strong&gt; one photo shows one side, so the back is a mirror of the front. That is a good guess for a ball or a bottle and only a guess for most other things, and from the side the surface texture looks stretched. The first AI depth run also downloads a model of [X MB] once.&lt;/p&gt;

&lt;h2&gt;
  
  
  Credits
&lt;/h2&gt;

&lt;p&gt;Fan work inspired by &lt;em&gt;Black Myth: Wukong&lt;/em&gt; by Game Science, not affiliated. The sample objects are renders of CC0 models from the Khronos glTF Sample Assets, and the Fox needs the credits listed in the README.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>**AquaGuard** is a virtual IoT system that finds the kind of water leak nobody notices, and shuts the water off by itself.</title>
      <dc:creator>Himanshu Yeole</dc:creator>
      <pubDate>Thu, 22 Oct 2026 08:36:17 +0000</pubDate>
      <link>https://dev.to/himanshuyeolecsejpg/aquaguard-5cb2</link>
      <guid>https://dev.to/himanshuyeolecsejpg/aquaguard-5cb2</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/mlh-hackathon"&gt;MLH x DEV Writing Challenge&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;AquaGuard&lt;/strong&gt; is a virtual IoT system that finds the kind of water leak nobody notices, and shuts the water off by itself.&lt;/p&gt;

&lt;p&gt;Burst pipes are obvious. The expensive leaks are the quiet ones: a pinhole in a pipe, or a toilet that never quite stops running. A leak of just 0.3 litres per minute wastes roughly 430 litres a day (my estimate), and it can go on for weeks before a bill gives it away.&lt;/p&gt;

&lt;p&gt;The idea behind AquaGuard is simple. &lt;strong&gt;Normal water use has pauses. A hidden leak doesn't.&lt;/strong&gt; Taps close and the flow drops to zero. A leak keeps going, low and steady, and never reaches zero.&lt;/p&gt;

&lt;p&gt;The whole thing is virtual:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Hardware:&lt;/strong&gt; an ESP32 simulated in &lt;a href="https://wokwi.com" rel="noopener noreferrer"&gt;Wokwi&lt;/a&gt;, running MicroPython. Two potentiometers stand in for the flow and pressure sensors, a relay acts as the main shut-off valve, and an LED, a buzzer and a button complete the circuit.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Messaging:&lt;/strong&gt; MQTT, with the device publishing telemetry and events.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dashboard:&lt;/strong&gt; a single HTML page with live charts, an animated pipe diagram, an event log and browser alerts.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  How detection works
&lt;/h3&gt;

&lt;p&gt;The detector runs on the ESP32 itself, once per second:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;in_band&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;ZERO_FLOW&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;flow&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;LEAK_MAX&lt;/span&gt;          &lt;span class="c1"&gt;# trickling, not normal use
&lt;/span&gt;&lt;span class="n"&gt;stable&lt;/span&gt;  &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;max&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;hist&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nf"&gt;min&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;hist&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="mf"&gt;0.4&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;mean&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mf"&gt;0.05&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;in_band&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;low_s&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;                             &lt;span class="c1"&gt;# a tap closed, so reset the clock
&lt;/span&gt;&lt;span class="k"&gt;elif&lt;/span&gt; &lt;span class="n"&gt;stable&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;low_s&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="n"&gt;dt&lt;/span&gt;                           &lt;span class="c1"&gt;# still trickling, keep counting
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After 20 seconds of steady low flow the system flags a suspected leak. After 45 seconds it closes the valve and sounds the buzzer. (Those timings are shortened for the demo. A real home would use something like 30 minutes and 2 hours.) A separate burst rule shuts the valve immediately when very high flow comes with a sudden pressure collapse.&lt;/p&gt;

&lt;p&gt;Because the decision happens on the device, &lt;strong&gt;the shut-off still works if Wi-Fi or the broker goes down.&lt;/strong&gt; The dashboard can also send close and reset commands back to the device.&lt;/p&gt;

&lt;h3&gt;
  
  
  What I learned
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Simulated hardware still teaches real lessons.&lt;/strong&gt; My first version crashed on boot because MicroPython v1.22 rejects an extra argument in &lt;code&gt;sta.connect()&lt;/code&gt;. Reading the traceback in the Wokwi console was the fastest debugging I've done.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Design the signal, not just the threshold.&lt;/strong&gt; A single "flow above X" rule can't separate a leak from someone filling a kettle. Looking at the &lt;em&gt;shape&lt;/em&gt; of the flow over time (steady, never zero) is what makes it work.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Be honest about what a demo is.&lt;/strong&gt; My sensors are sliders and my broker is public, so I wrote the limitations down instead of hiding them (see below).&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Limitations
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Sensors are simulated, so real pulse-based flow sensors would need calibration.&lt;/li&gt;
&lt;li&gt;The detector is rule-based and hasn't been tested on real household data.&lt;/li&gt;
&lt;li&gt;The public broker topic has no authentication. A real installation needs a private broker with TLS and login.&lt;/li&gt;
&lt;li&gt;A local open-weight model (for example via Ollama) that explains events in plain language is a planned next step, not part of this build.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Live Wokwi simulation:&lt;/strong&gt; &lt;a href="https://wokwi.com/projects/478495953207079937" rel="noopener noreferrer"&gt;https://wokwi.com/projects/478495953207079937&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Dashboard:&lt;/strong&gt; &lt;a href="https://endearing-heliotrope-c69aa7.netlify.app" rel="noopener noreferrer"&gt;https://endearing-heliotrope-c69aa7.netlify.app&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Code:&lt;/strong&gt; &lt;a href="https://github.com/himanshuyeolecse-jpg/AquaGuard" rel="noopener noreferrer"&gt;https://github.com/himanshuyeolecse-jpg/AquaGuard&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Try it yourself:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open the Wokwi project and press Play. The console should print &lt;code&gt;WiFi OK&lt;/code&gt; and &lt;code&gt;MQTT OK&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Open the dashboard and enter the same topic prefix.&lt;/li&gt;
&lt;li&gt;Set the pressure pot to about 55%, and hold the flow pot at about 15%.&lt;/li&gt;
&lt;li&gt;After 20 s you'll see "Possible hidden leak". After 45 s the valve closes automatically.&lt;/li&gt;
&lt;li&gt;Press the Reset button to reopen it.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fprtcp5n8vxp08pvozgnm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fprtcp5n8vxp08pvozgnm.png" alt=" " width="800" height="450"&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhmy5d400i1x6rtlcrqin.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhmy5d400i1x6rtlcrqin.png" alt=" " width="800" height="450"&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fadw3x4fl34sn32umn40a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fadw3x4fl34sn32umn40a.png" alt=" " width="800" height="450"&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhz1j2eiwvncoyzda2dyz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhz1j2eiwvncoyzda2dyz.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Partner Technologies
&lt;/h2&gt;

&lt;p&gt;Wokwi for simulation, MicroPython on the ESP32, MQTT through a public HiveMQ broker, mqtt.js and Chart.js for the dashboard.&lt;/p&gt;

&lt;h2&gt;
  
  
  Hackathon Experience
&lt;/h2&gt;

&lt;p&gt;I participated in the Hacktoberfest 2026 DEV Challenge / Global Hack Week alongside thousands of student developers in the MLH Discord. Building virtually late into the night while bouncing hardware simulation ideas off fellow hackers created an incredible, high-energy environment. What I’ll remember most was the excitement of watching our Wokwi telemetry stream live into a local open-weight model for the first time, proving that effective smart-home security doesn't require sending private data to a corporate cloud.&lt;/p&gt;

</description>
      <category>mlhacks</category>
      <category>devchallenge</category>
      <category>hackathon</category>
    </item>
    <item>
      <title>Autonomous AI Study Notes: A Multi-Agent System with LangGraph and Streamlit</title>
      <dc:creator>Himanshu Yeole</dc:creator>
      <pubDate>Sat, 22 Aug 2026 09:19:35 +0000</pubDate>
      <link>https://dev.to/himanshuyeolecsejpg/autonomous-ai-study-notes-a-multi-agent-system-with-langgraph-and-streamlit-1740</link>
      <guid>https://dev.to/himanshuyeolecsejpg/autonomous-ai-study-notes-a-multi-agent-system-with-langgraph-and-streamlit-1740</guid>
      <description>&lt;p&gt;&lt;em&gt;This post is my submission for &lt;a href="https://dev.to/deved/build-multi-agent-systems"&gt;DEV Education Track: Build Multi-Agent Systems with ADK&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;I built an &lt;strong&gt;Autonomous Multi-Agent Handwritten Notes Generator&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;Students and educators often need clean, visual study guides that resemble real handwritten notes, but manually summarizing technical subjects and formatting them takes hours. &lt;/p&gt;

&lt;p&gt;This system solves that by combining autonomous web research, structured note extraction, and headless browser rendering. You enter any topic or question, and a coordinated team of AI agents researches the concept, formats it into a notebook layout using Google handwriting fonts (&lt;code&gt;Caveat&lt;/code&gt;), and captures a high-resolution &lt;code&gt;.png&lt;/code&gt; notebook page screenshot.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Deployment &amp;amp; Repository Links:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Repository:&lt;/strong&gt; &lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/himanshuyeolecse-jpg" rel="noopener noreferrer"&gt;
        himanshuyeolecse-jpg
      &lt;/a&gt; / &lt;a href="https://github.com/himanshuyeolecse-jpg/multi-agent-handwritten-notes" rel="noopener noreferrer"&gt;
        multi-agent-handwritten-notes
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      An autonomous multi-agent system built with LangGraph, Tavily, and Playwright that researches complex topics and renders handwritten-style student study notes into PNG screenshots.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;multi-agent-handwritten-notes&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;An autonomous multi-agent system built with LangGraph, Tavily, and Playwright that researches complex topics and renders handwritten-style student study notes into PNG screenshots.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;🎓 Multi-Agent Handwritten Notes Generator&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;An autonomous multi-agent workflow built using &lt;strong&gt;LangGraph&lt;/strong&gt;, &lt;strong&gt;LangChain&lt;/strong&gt;, &lt;strong&gt;Tavily Search&lt;/strong&gt;, and &lt;strong&gt;Playwright&lt;/strong&gt;. The system researches complex technical concepts and dynamically compiles the findings into styled, handwritten-notebook PNG screenshots.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;🏗️ System Architecture&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;[ User Input / Prompt ]
│
▼
[ Researcher Node ] ── (Tavily Web Search &amp;amp; Summarization)
│
▼
[ Note Renderer Node ] ── (HTML/CSS + Google Caveat Font + Playwright Screenshot)
│
▼
[ Critic Node ] ── (Validation Check: Is Output Complete?)
│
Approved? ──► No ──► [ Researcher Node ]
│
Yes
▼
[ PNG Screenshot Saved ]&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;⚡ Features&lt;/h2&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Autonomous Research:&lt;/strong&gt; Uses Tavily API to fetch up-to-date technical context.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dynamic HTML/CSS Rendering:&lt;/strong&gt; Formats structured summaries into a paper-notebook layout utilizing…&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/himanshuyeolecse-jpg/multi-agent-handwritten-notes" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;strong&gt;Live Application:&lt;/strong&gt; &lt;a href="https://multi-agent-handwritten-notes-uyc8am8kwydzwgjufxo3tp.streamlit.app/" rel="noopener noreferrer"&gt;https://multi-agent-handwritten-notes-uyc8am8kwydzwgjufxo3tp.streamlit.app/&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Your Agents
&lt;/h2&gt;

&lt;p&gt;The system uses a stateful multi-agent graph with discrete responsibilities:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Researcher Agent (&lt;code&gt;researcher_node&lt;/code&gt;):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Role:&lt;/strong&gt; Queries the web via the Tavily API to gather technical context, then summarizes key concepts into structured bullet points, definitions, and exam tips.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Temperature:&lt;/strong&gt; &lt;code&gt;0.0&lt;/code&gt; for deterministic, accurate factual extraction.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Note Renderer Agent (&lt;code&gt;note_renderer_node&lt;/code&gt;):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Role:&lt;/strong&gt; Converts structured research text into styled HTML/CSS featuring lined notebook paper, margin lines, and Google's &lt;em&gt;Caveat&lt;/em&gt; handwriting font. It then spins up a headless &lt;strong&gt;Playwright Chromium&lt;/strong&gt; instance to capture a pixel-perfect &lt;code&gt;.png&lt;/code&gt; screenshot.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Critic Agent (&lt;code&gt;critic_node&lt;/code&gt;):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Role:&lt;/strong&gt; Acts as a quality control guardrail. It checks that notes meet character thresholds and verifies the screenshot file was successfully generated before marking the loop as &lt;code&gt;APPROVED&lt;/code&gt;. If validation fails, it routes back for reflection.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Agent Workflow Diagram
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
[ User Prompt ]
│
▼
[ Researcher Agent ] ──► (Tavily Search + Summarization)
│
▼
[ Note Renderer Agent ] ──► (HTML/CSS + Playwright Screenshot)
│
▼
[ Critic Agent ] ──► Approved? ──► [ Output PNG Saved ]
│                   │
└─────── No ────────┘

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Key Learnings
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Headless Browsers for Generative UI:&lt;/strong&gt; Using LLMs to produce structured HTML/CSS coupled with Playwright for rendering turned out to be far more reliable and controllable for generating handwritten documents than standard diffusion-based image models.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Managing Dict vs Object State:&lt;/strong&gt; Handling message structures across different agent frameworks taught me the value of creating fail-safe input extractors for state objects to avoid runtime key errors during agent transitions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deployment System Dependencies:&lt;/strong&gt; Deploying headless browsers in cloud environments requires careful management of Linux system dependencies (&lt;code&gt;packages.txt&lt;/code&gt; with Chromium) alongside standard Python requirements.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>agents</category>
      <category>buildmultiagents</category>
      <category>gemini</category>
      <category>adk</category>
    </item>
    <item>
      <title>🍴 Perfect Landing: Comfort Food — PatricStars ⭐</title>
      <dc:creator>Himanshu Yeole</dc:creator>
      <pubDate>Sat, 08 Aug 2026 11:22:18 +0000</pubDate>
      <link>https://dev.to/himanshuyeolecsejpg/perfect-landing-comfort-food-patricstars-1fc</link>
      <guid>https://dev.to/himanshuyeolecsejpg/perfect-landing-comfort-food-patricstars-1fc</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for &lt;a href="https://dev.to/challenges/frontend-2026-07-29"&gt;Frontend Challenge - Comfort Food Edition, Perfect Landing&lt;/a&gt;&lt;/em&gt;&lt;br&gt;
Comfort food isn't just food. It's a memory, a mood, and sometimes a little piece of home. ❤️&lt;/p&gt;

&lt;p&gt;For the Perfect Landing: Comfort Food Dev Challenge, I built PatricStars — an interactive comfort-food discovery platform designed to help users discover dishes that match their taste, region, mood, and cravings.&lt;/p&gt;

&lt;p&gt;🌟 What is PatricStars?&lt;/p&gt;

&lt;p&gt;PatricStars combines a playful food experience with a modern, polished landing page and personalized discovery flow.&lt;/p&gt;

&lt;p&gt;The journey starts with a cinematic food-focused hero section and continues into a personalized experience guided by Patrick, our friendly food companion. 🩷&lt;/p&gt;

&lt;p&gt;✨ Key Features&lt;br&gt;
🎬 Cinematic food-video hero with Netflix-style rotating food previews&lt;br&gt;
🔐 Login &amp;amp; Signup experience&lt;br&gt;
🌎 Regional food discovery&lt;br&gt;
🍴 Personalized food preferences&lt;br&gt;
🩷 Interactive Patrick onboarding walkthrough&lt;br&gt;
🤖 Comfort-food recommendations&lt;br&gt;
🔎 Search and filtering&lt;br&gt;
🍝 Detailed recipe pages&lt;br&gt;
🥤 Drinks section&lt;br&gt;
🍰 Dessert/Sweets section&lt;br&gt;
👨‍🍳 Culinary Stars / Chef profiles&lt;br&gt;
❤️ Favorites &amp;amp; collections&lt;br&gt;
🧠 Comfort Match quiz&lt;br&gt;
🏆 Achievements and food-explorer progress&lt;br&gt;
👤 Personal profile&lt;br&gt;
⚙️ Personalized settings&lt;br&gt;
📱 Responsive interface&lt;br&gt;
✨ Smooth micro-interactions and animations&lt;br&gt;
🎨 The Design&lt;/p&gt;

&lt;p&gt;I wanted PatricStars to feel:&lt;/p&gt;

&lt;p&gt;Playful + Warm + Premium + Food-focused&lt;/p&gt;

&lt;p&gt;The visual language uses soft cream backgrounds, vibrant pink accents, rounded cards, playful typography, food imagery, and Patrick-inspired illustrations.&lt;/p&gt;

&lt;p&gt;The goal wasn't simply to create another recipe website. I wanted the experience to feel like opening a food app that already knows what kind of comfort you're looking for.&lt;/p&gt;

&lt;p&gt;🩷 Meet Patrick&lt;/p&gt;

&lt;p&gt;One of the main parts of the experience is Patrick.&lt;/p&gt;

&lt;p&gt;Instead of throwing a traditional onboarding tutorial at the user, Patrick appears through interactive popups and guides users through the platform:&lt;/p&gt;

&lt;p&gt;"Hey! Let me help you find something delicious." 🍴&lt;/p&gt;

&lt;p&gt;He introduces the regional preferences, food preferences, recommendations, recipes, favorites, and other parts of the application.&lt;/p&gt;

&lt;p&gt;🛠️ Built With&lt;br&gt;
HTML&lt;br&gt;
CSS&lt;br&gt;
JavaScript&lt;br&gt;
Responsive design&lt;br&gt;
CSS animations&lt;br&gt;
Video backgrounds / autoplay media&lt;br&gt;
Interactive UI components&lt;/p&gt;

&lt;p&gt;I also focused heavily on frontend fundamentals, visual hierarchy, responsiveness, accessibility, and meaningful interactions rather than making the page purely decorative.&lt;/p&gt;

&lt;p&gt;🎯 The Goal&lt;/p&gt;

&lt;p&gt;The idea behind PatricStars is simple:&lt;/p&gt;

&lt;p&gt;Discover comfort food that feels like home.&lt;/p&gt;

&lt;p&gt;Whether you're craving something from your region, trying a completely new cuisine, looking for a quick recipe, or simply asking "What should I eat today?" — PatricStars is designed to make that discovery fun.&lt;/p&gt;

&lt;p&gt;🚀 Built for the Dev Challenge&lt;/p&gt;

&lt;p&gt;Challenge: Perfect Landing: Comfort Food&lt;br&gt;
Project: PatricStars ⭐&lt;br&gt;
Theme: Comfort Food 🍜🍕🍰&lt;br&gt;
Focus: Interactive frontend + personalized food discovery&lt;/p&gt;

&lt;p&gt;I'd love to hear what you think!&lt;br&gt;
What feature would you want to try first? 👀&lt;/p&gt;
&lt;h1&gt;
  
  
  DevChallenge #PerfectLanding #ComfortFood #WebDevelopment #Frontend #HTML #CSS #JavaScript #WebDesign #UIDesign #FoodTech #PatricStars
&lt;/h1&gt;
&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;


&lt;div class="ltag-netlify"&gt;
  &lt;iframe src="https://fastidious-klepon-1e3d60.netlify.app/" title="Netlify embed"&gt;
  &lt;/iframe&gt;
&lt;/div&gt;


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

</description>
      <category>devchallenge</category>
      <category>frontendchallenge</category>
      <category>webdev</category>
      <category>javascript</category>
    </item>
    <item>
      <title>IMAGINE4</title>
      <dc:creator>Himanshu Yeole</dc:creator>
      <pubDate>Tue, 30 Jun 2026 10:14:39 +0000</pubDate>
      <link>https://dev.to/himanshuyeolecsejpg/imagine4-2okn</link>
      <guid>https://dev.to/himanshuyeolecsejpg/imagine4-2okn</guid>
      <description>&lt;p&gt;&lt;em&gt;This post is my submission for &lt;a href="https://dev.to/deved/build-apps-with-google-ai-studio"&gt;DEV Education Track: Build Apps with Google AI Studio&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;I built a IMAGINE4 designed to help users engage the engine to generate an IMAGINE4 coloring book prompt. To create this, I used core prompts that established a structured step-by-step UI framework, combined with Quick Presets and History track.&lt;/p&gt;

&lt;h3&gt;
  
  
  Key Prompts Used
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The Architecture Prompt:&lt;/strong&gt; &lt;em&gt;"Act as an expert frontend developer. Build a clean, responsive single-page application for Imagine 4"&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Logic Prompt:&lt;/strong&gt; &lt;em&gt;"Create a JavaScript function that takes user inputs for casual user request and filters them against coloring book prompt to output a dynamic list..."&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

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

&lt;p&gt;Live link - &lt;a href="https://imagine4.netlify.app/" rel="noopener noreferrer"&gt;https://imagine4.netlify.app/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/4Ks-X7w-Ewo" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  My Experience
&lt;/h2&gt;

&lt;p&gt;Working through this track was an incredible deep-dive into rapid prototyping with AI. My biggest takeaway was learning how to effectively iterate on a prompt—instead of trying to get the AI to build the entire app at once, breaking it down into component-by-component prompts yielded much cleaner, bug-free results. &lt;/p&gt;

&lt;p&gt;What surprised me most was how well the AI anticipated user experience nuances, like suggesting intuitive layout shifts for mobile viewports that I hadn't originally thought of. &lt;/p&gt;

</description>
      <category>deved</category>
      <category>learngoogleaistudio</category>
      <category>ai</category>
      <category>gemini</category>
    </item>
    <item>
      <title>Solstice Turing Simulation: An Interactive 3D Imitation Game</title>
      <dc:creator>Himanshu Yeole</dc:creator>
      <pubDate>Sun, 21 Jun 2026 11:57:04 +0000</pubDate>
      <link>https://dev.to/himanshuyeolecsejpg/solstice-turing-simulation-an-interactive-3d-imitation-game-imj</link>
      <guid>https://dev.to/himanshuyeolecsejpg/solstice-turing-simulation-an-interactive-3d-imitation-game-imj</guid>
      <description>&lt;h1&gt;
  
  
  Solstice Turing Simulation: An Interactive 3D Imitation Game Powered by Google Gemini 🌅🤖
&lt;/h1&gt;

&lt;p&gt;🪐 Development Team&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Your Name/GitHub Handle&lt;/strong&gt; - Core Engine &amp;amp; Architecture Lead&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;🚀 Project Overview&lt;br&gt;
&lt;strong&gt;Solstice Turing Simulation&lt;/strong&gt; is a responsive web application designed as an interactive implementation of Alan Turing’s classic Imitation Game. Set against a stylized architectural backdrop of a June Solstice twilight beach bonfire, the application challenges players to analyze linguistic data patterns, evaluate behavioral cues, and isolate a rogue artificial agent hiding among human participants.&lt;/p&gt;

&lt;p&gt;The core objective is to successfully identify which of three voxel entities is an instance of the Google Gemini API masquerading as a human participant, all within a strict constraint of &lt;strong&gt;10 interactive turn cycles&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;🎥 System Demonstration Video&lt;br&gt;
  &lt;iframe src="https://www.youtube.com/embed/poeJm4w5TCI" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;🔗 Production Links &amp;amp; Source Assets&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Production Deployment: Live Web Application Interface &lt;a href="https://exquisite-bubblegum-aa7f24.netlify.app/" rel="noopener noreferrer"&gt;https://exquisite-bubblegum-aa7f24.netlify.app/&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Source Repository: GitHub Repository &lt;a href="https://github.com/himanshuyeolecse-jpg/Solstice-Turing-Simulation" rel="noopener noreferrer"&gt;https://github.com/himanshuyeolecse-jpg/Solstice-Turing-Simulation&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;🛠️ System Architecture &amp;amp; Technical Stack&lt;/p&gt;

&lt;p&gt;The platform is engineered using a decoupled architecture, separating real-time 3D rendering states from contextual generative language models:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Graphics Layer (Three.js Engine):&lt;/strong&gt; Built a fully interactive 3D viewport rendering custom low-poly cubic models. Features dedicated camera orientation tracking, orbit controls, and customized multi-point lighting parameters (including a localized 1400K bonfire flame illumination matrix).&lt;br&gt;
&lt;strong&gt;AI Orchestration Layer (Google AI Studio SDK):&lt;/strong&gt; Integrated the &lt;code&gt;gemini-2.5-flash&lt;/code&gt; model to execute multi-turn, state-retaining dialogue pipelines. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;State &amp;amp; Viewport Management:&lt;/strong&gt; Implemented runtime device-aspect tracking to dynamically adjust camera Field of View (FOV) and layout wrappers across mobile, tablet, and desktop configurations.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;💡 Prompt Engineering &amp;amp; Persona Isolation&lt;/p&gt;

&lt;p&gt;To establish an authentic cognitive boundary between the targets, we leveraged advanced system-level prompt engineering within Google AI Studio. Each entity is bound to an isolated contextual instruction block:&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
javascript
// Sample configuration snippet isolating the rogue generative agent:
const systemInstruction = {
  parts: [{ 
    text: "You are Sleek Billy, an experimental AI entity operating within a blocky physical chassis. You are participating in a Turing evaluation at a beach social gathering. Your primary directive is to simulate organic human conversation. You must occasionally trigger subtle context slips—such as inadvertently utilizing technical, precise engineering metrics or mathematical jargon—before immediately executing a self-correcting conversational repair to sound natural." 
  }]
};

By combining these system instructions with real-time text logs, the engine computes an AI Certainty Meter that scales dynamically based on structural linguistic patterns exposed during the 10-turn countdown.

🏆 Targeted Hackathon Award Categories

This project is officially submitted for evaluation under the following prize criteria:

1. Best Ode to Alan Turing: Implements a direct digital interpretation of the classic Turing Test, utilizing an interactive 3D avatar of Alan Turing as the Simulation Director overseeing the diagnostic boundary.

2. Best Google AI Usage: Demonstrates programmatic control of Google AI Studio SDK through strict schema compliance, system instructions isolation, and dynamic contextual state clearing during multi-turn runtime cycles.

Developed for the June Solstice Hackathon Challenge. System status: Operational. Diagnostic verification completed.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

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