<?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: Rin Katsuragi</title>
    <description>The latest articles on DEV Community by Rin Katsuragi (@rinrinrinrin).</description>
    <link>https://dev.to/rinrinrinrin</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%2F4175044%2Fc86468be-4a7f-4fd1-ac23-2ec2060d5291.png</url>
      <title>DEV Community: Rin Katsuragi</title>
      <link>https://dev.to/rinrinrinrin</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/rinrinrinrin"/>
    <language>en</language>
    <item>
      <title>The Hardest Part of Robotics AI Isn't the AI</title>
      <dc:creator>Rin Katsuragi</dc:creator>
      <pubDate>Tue, 20 Oct 2026 08:04:16 +0000</pubDate>
      <link>https://dev.to/rinrinrinrin/the-hardest-part-of-robotics-ai-isnt-the-ai-42kl</link>
      <guid>https://dev.to/rinrinrinrin/the-hardest-part-of-robotics-ai-isnt-the-ai-42kl</guid>
      <description>&lt;p&gt;Being a robotics and vision AI grad student at NAIST, I spend my days with a real robot arm, cameras, and a long list of failed experiments. Here's what I've learned about where things actually break.&lt;/p&gt;

&lt;h2&gt;
  
  
  The boring problem
&lt;/h2&gt;

&lt;p&gt;People assume the hard part is the model, but for us, it's writing the Python that glues perception to motion, and every time we swapped models, we ended up rewiring the same motor functions. What changed our workflow was treating robot capabilities as reusable skill bundles (&lt;a href="https://github.com/arpahls/skillware" rel="noopener noreferrer"&gt;Skillware&lt;/a&gt;): write the deterministic script once, and any model can call it. You swap the brain without rewiring the motor functions. The problem is Skillware is mostly software focused, and although it gives you a good baseline to create your own skills, it still takes time to write scripts the first time, but then it works like magic.&lt;/p&gt;

&lt;h2&gt;
  
  
  Determinism is a feature, not a limitation
&lt;/h2&gt;

&lt;p&gt;A robot has a fixed set of skills, and it cannot invent new ones mid-task, which is exactly what you want, that's why a deterministic skill either works or it doesn't, fits robots the best. No grey zone, no hallucinated torque values, and honestly, half of our bugs aren't AI bugs at all, but unit mismatches, degrees fed into radian-expecting nodes, mg instead of m/s².&lt;/p&gt;

&lt;p&gt;The tradeoff is context I guess, when 20+ skills loaded in full, the context gets cluttered fast. So we only append short descriptions of what each skill does and when to use it, and the full context unlocks only when a skill is triggered. It basically doubles as smart memory management.&lt;/p&gt;

&lt;h2&gt;
  
  
  Knowing why the robot did something
&lt;/h2&gt;

&lt;p&gt;On top of the skills, we run a harness (&lt;a href="https://github.com/arpahls/aura" rel="noopener noreferrer"&gt;aura&lt;/a&gt;) with a native sequencer, which gives us a real audit trail, like what the robot did, when, why, and where the reasoning came from, was it the model's own thought, something from a skill bundle, or something picked up from an internet post? With physical hardware, "it kind of seemed like a good idea" is not an acceptable answer.&lt;/p&gt;

&lt;h2&gt;
  
  
  The real world refuses to cooperate
&lt;/h2&gt;

&lt;p&gt;In vision, the hardest part is lighting and unpredictable background noise, people walking by, hands entering the scene, and here's the ironic one: even when the robot does everything perfectly, strict guardrails can make it freeze. It sees a hand in the frame, can't compute distance reliably from a frozen snapshot, decides that moving might risk contact, and freezes rather than move, which yes, is perfectly safe, but also completely useless. The robot isn't wrong, but our guardrails just have no concept of "re-plan from a new viewpoint."&lt;/p&gt;

&lt;p&gt;So the model is maybe 20% of the problem. The rest is deterministic skills, context management, audit trails, and a world that refuses to hold still. If you're building agent pipelines for hardware, invest there first. What keeps breaking in your robot stack? Happy to trade war stories  :D&lt;/p&gt;

</description>
      <category>ai</category>
      <category>robotics</category>
      <category>python</category>
      <category>machinelearning</category>
    </item>
    <item>
      <title>How I got to open a PR on my daily tool, and bring Robotics Telemetry to it! 🤖🌸</title>
      <dc:creator>Rin Katsuragi</dc:creator>
      <pubDate>Mon, 12 Oct 2026 08:37:07 +0000</pubDate>
      <link>https://dev.to/rinrinrinrin/how-i-got-to-open-a-pr-on-my-daily-tool-and-bring-robotics-telemetry-to-it-4n3p</link>
      <guid>https://dev.to/rinrinrinrin/how-i-got-to-open-a-pr-on-my-daily-tool-and-bring-robotics-telemetry-to-it-4n3p</guid>
      <description>&lt;p&gt;Today I have the most exciting little milestone to share: I just submitted my very first feature PR to &lt;strong&gt;Skillware&lt;/strong&gt;!&lt;/p&gt;

&lt;p&gt;Skillware is an agent framework my partner and I rely on daily in our robotics and embodied AI research, and it basically turns complex tasks into deterministic skills that agents can execute safely without hallucinating. Contributing to a tool you use every day already feels surreal, but how it happened was pure magic! ✨&lt;/p&gt;




&lt;h3&gt;
  
  
  The Spark: Taming Wild Sensor Telemetry 📡
&lt;/h3&gt;

&lt;p&gt;If you have ever hooked an LLM agent up to physical hardware, you know the pain: &lt;strong&gt;agents get dizzy around raw sensor feeds&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Millisecond epochs vs ISO strings, Fahrenheit mixed with Celsius, deg/s vs radians, and glitch spikes like &lt;code&gt;99999&lt;/code&gt; cause endless hallucinations.&lt;/p&gt;

&lt;p&gt;Browsing Skillware's tracker, I found Issue &lt;a href="https://github.com/ARPAHLS/skillware/issues/47" rel="noopener noreferrer"&gt;#47&lt;/a&gt;, which was originally a smart-city IoT idea, and reading it, I thought: &lt;em&gt;wait, this is the exact issue my partner and I face daily with our robot kinematics and IMUs!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;So I gathered my courage and pitched a big idea in the thread: what if we modernized this into a universal, deterministic &lt;strong&gt;&lt;code&gt;telemetry_normalizer&lt;/code&gt;&lt;/strong&gt; spanning robotics, smart cities, EV battery fleets, and HVAC?&lt;/p&gt;




&lt;h3&gt;
  
  
  "Assigning you with pleasure &amp;lt;3" 🥹💖
&lt;/h3&gt;

&lt;p&gt;Honestly, I was so nervous posting my pitch. Proposing an architecture overhaul on a framework you admire is intimidating!&lt;/p&gt;

&lt;p&gt;Then maintainer replied:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"Hey Rin, honestly, this is way out of my expertise, and I would like to think about it, but I am assigning you with pleasure and curious to see what you come up with. &amp;lt;3 Good luck!"&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Seeing that &lt;code&gt;&amp;lt;3&lt;/code&gt; made my day! They didn't just accept a quick patch—they genuinely &lt;strong&gt;trusted me with the design&lt;/strong&gt; and welcomed our robotics needs into the core library.&lt;/p&gt;




&lt;h3&gt;
  
  
  What We Built 🛠️
&lt;/h3&gt;

&lt;p&gt;Guided by our lab's real simulation feeds, we built &lt;code&gt;data_engineering/telemetry_normalizer&lt;/code&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Unit Harmonization:&lt;/strong&gt; Converts units (deg/s → rad/s, °F → °C, cfm → m³/h) via zero-overhead math lookup tables.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;UTC ISO-8601 Canonicalization:&lt;/strong&gt; Turns chaotic epochs into strict UTC timestamps.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hardware Fault Guards:&lt;/strong&gt; Tags stuck ADC readings and sensor spikes safely without crashing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;W3C SOSA / SSN Semantic Export:&lt;/strong&gt; Formats observations into Linked Data graphs for agents!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Pure Python, zero heavy dependencies, running at &amp;gt;75,000 observations/sec offline.&lt;/p&gt;




&lt;h3&gt;
  
  
  Take the Leap! 🍵
&lt;/h3&gt;

&lt;p&gt;Open source can feel scary at first, but kind maintainers who trust your domain knowledge make all the difference. If there's a tool you love, don't be shy to share how you use it. You might just help shape its future!&lt;/p&gt;

&lt;p&gt;What's a project you'd love to contribute to? Tell me below! 🌸&lt;/p&gt;




&lt;p&gt;Check my post on opening my first PR for Webots &lt;a href="https://dev.to/rinrinrinrin/hunting-down-a-zombie-python-thread-my-first-pr-to-webots-2ijp"&gt;here&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>python</category>
      <category>ai</category>
      <category>robotics</category>
    </item>
    <item>
      <title>There's something about ASCII art, CLIs, and games that makes me melt. What are some of your favorite ASCII encounters lately? 🤔🔍</title>
      <dc:creator>Rin Katsuragi</dc:creator>
      <pubDate>Sun, 11 Oct 2026 19:07:17 +0000</pubDate>
      <link>https://dev.to/rinrinrinrin/theres-something-about-ascii-art-clis-and-games-that-makes-me-melt-what-are-some-of-your-53i4</link>
      <guid>https://dev.to/rinrinrinrin/theres-something-about-ascii-art-clis-and-games-that-makes-me-melt-what-are-some-of-your-53i4</guid>
      <description></description>
      <category>cli</category>
      <category>discuss</category>
      <category>gamedev</category>
    </item>
    <item>
      <title>Every Skill in This Open Source Agent Framework Could Literally Be a Startup</title>
      <dc:creator>Rin Katsuragi</dc:creator>
      <pubDate>Sun, 11 Oct 2026 10:54:20 +0000</pubDate>
      <link>https://dev.to/rinrinrinrin/every-skill-in-this-open-source-agent-framework-could-literally-be-a-startup-30lc</link>
      <guid>https://dev.to/rinrinrinrin/every-skill-in-this-open-source-agent-framework-could-literally-be-a-startup-30lc</guid>
      <description>&lt;p&gt;Most agent skills frameworks are just text prompts in markdown files, then I found an open source framework where each skill has so much depth, it could be a standalone startup moat on its own.&lt;/p&gt;

&lt;p&gt;What's even crazier, is that they accepted me to build a Skill bundle with them, and contribute to their robotics expansion. Considering that this is my second day building in public, and after my yesterday's PR for Webots, which added me to the Webots org, this is another framework I use regularly that I got to get also involved with and shape, even as a junior dev.&lt;/p&gt;




&lt;p&gt;As a robotics student building with AI, I have spent a lot of time testing different agent libraries. &lt;/p&gt;

&lt;p&gt;If you look around GitHub, almost everything labeled as an agent skill is just a markdown file, which is usually three paragraphs of English text telling an LLM to act like an expert, parse some text, and hope for the best, with rare cases where there's a small Python script attached.&lt;/p&gt;

&lt;p&gt;Whenever you try to run these in a real project, they break, as if they're made for demos, but the moment they have to handle real work, the model is like "hold my beer, let me try this again for the 10th time", until your token limit hits the fan. The model hallucinates, the output shape changes every time, and you burn tokens on things that should take two lines of normal code.&lt;/p&gt;

&lt;p&gt;A few weeks ago, I came across an open source repository called Skillware, from a Greece organization that sparked my interest not just cause of their approach on Skills, but their entire philosophy around sovereign and accountable AI. At first, I thought it was just another list of tools, but when I actually opened the folders, and kept digging my mind was blown.&lt;/p&gt;

&lt;p&gt;These are way far from text prompts, and every single skill is a complete, self contained Python package with its own mathematical checks, strict data schemas, datasets, intent parsing logic, automated tests, and safety guardrails. They run offline, they are completely deterministic, and they are licensed under MIT.&lt;/p&gt;

&lt;p&gt;The more I looked through the code, the more I realized something crazy!&lt;/p&gt;

&lt;p&gt;You could take almost any skill in this library, put a clean web interface in front of it, and you have a real, viable startup that people would pay for today.&lt;/p&gt;

&lt;p&gt;Here are three examples that made me realize how powerful this is.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. The Autonomous Security Guard
&lt;/h3&gt;

&lt;p&gt;Imagine you want to build a security startup for office buildings, server rooms, or online identity verification.&lt;/p&gt;

&lt;p&gt;Usually, you would need a team of computer vision engineers and months of research. Inside Skillware, there are two skills that solve this out of the box when you connect them together.&lt;/p&gt;

&lt;p&gt;The first is called deepfake guard. Instead of asking an AI if a photo looks fake, it runs real mathematical forensic tests. It checks the high frequency noise in the image, looks for repeated patterns from copy paste edits, scans for screen reflection grids, and even calculates the official checksum math used on real international passport documents.&lt;/p&gt;

&lt;p&gt;The second is called gatekeeper, which I am also assigned on to!!! It takes an authentic face, compares it to an authorized list, and runs an emotional safety check. If the person at the door is showing signs of intense fear or distress, like in a hostage or coercion situation, it safely denies access and sends a silent alert.&lt;/p&gt;

&lt;p&gt;When you chain these two skills together, you get a full biometric access control system. Stage one verifies the person is physically real and not a digital fake, and stage two verifies who they are and makes sure they are safe to enter.&lt;/p&gt;

&lt;p&gt;That is not just a demo. That is a full enterprise security product in a few lines of Python.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Automated Company Intelligence and Due Diligence
&lt;/h3&gt;

&lt;p&gt;Every day, thousands of accountants, investors, and legal teams spend hours manually looking up corporate records, checking who owns a company, and downloading annual filing reports.&lt;/p&gt;

&lt;p&gt;Inside Skillware, there are skills that directly connect to official business registers, like a skill called UK companies house handler. &lt;/p&gt;

&lt;p&gt;It does not ask a model to browse the web or guess facts, but actually connects directly to the official government registry, normalizes company names, resolves registration numbers, and filters company directors. It can rank filings, find the latest accounts, and download the official filing documents directly into your pipeline.&lt;/p&gt;

&lt;p&gt;If you connect this skill to an email handler, you could build an autonomous corporate analyst in a single weekend. A user sends an email asking for a report on any business, the agent runs the pipeline, grabs the official documents, summarizes the directors, and emails back a clean report. &lt;/p&gt;

&lt;p&gt;Companies pay thousands of dollars a month for tools that do exactly this. It's mind boggling.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Safe Web3 and Crypto Payments
&lt;/h3&gt;

&lt;p&gt;Building anything in crypto is terrifying for normal users like me because one bad signature can drain an entire wallet.&lt;/p&gt;

&lt;p&gt;Skillware has skills like wallet screening, permit2 helper, and evm tx handler. &lt;/p&gt;

&lt;p&gt;Instead of letting an agent guess transaction parameters, the skills check addresses against risk databases, construct mathematically valid signatures with strict spending limits, preview exactly what will happen, and require human confirmation before anything is broadcast to the network.&lt;/p&gt;

&lt;p&gt;A developer could take these skills and build a scam proof crypto checkout assistant that protects users from malicious contracts and bad actors.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why This Architecture Is So Different
&lt;/h3&gt;

&lt;p&gt;Most people building AI products today try to make the model do everything, like feeding hundreds of pages of instructions into the prompt and pray the model does not make a mistake.&lt;/p&gt;

&lt;p&gt;Skillware flips this upside down.&lt;/p&gt;

&lt;p&gt;It treats the LLM like a human brain that decides what action to take, while the skill acts like a reliable hand that does the physical work. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The skill runs real code that never hallucinates.&lt;/li&gt;
&lt;li&gt;The output format is always predictable, so your app never crashes.&lt;/li&gt;
&lt;li&gt;It works offline without sending private data to expensive third party APIs.&lt;/li&gt;
&lt;li&gt;You do not waste money burning tokens on basic math or file parsing.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This particulary important in functions that touch the real world such as robotics, and that's why Skillware became my go to. Today I sent a comment to some issues, and the maintainers not only were friendly, but agreed to let me work on deterministic skills that could transform my workflow with AI powered robots. I feel hyped and excited, and that's why I decided to share this.&lt;/p&gt;

&lt;h3&gt;
  
  
  How to Get Started with Skillware or any project you like
&lt;/h3&gt;

&lt;p&gt;You do not need to raise millions of dollars or build a massive model from scratch to create something useful. &lt;/p&gt;

&lt;p&gt;Sometimes, the best startups come from finding reliable, well engineered building blocks that solve real problems, and connecting them together in a way that makes someone's life easier.&lt;/p&gt;

&lt;p&gt;For Skillware, you can inspect the entire codebase yourself, clone it, and run the examples locally on your own machine. It works with local models like Ollama as well as cloud providers. I use it with Claude API, and a local Gemma4.&lt;/p&gt;




&lt;p&gt;If you made it this far, please do let me know, are this kind of brain dumps the content you enjoy? Should I post more about personal life and nature, ai/ml, robots, student life, something completely different? 🤓🤭&lt;/p&gt;

</description>
      <category>ai</category>
      <category>python</category>
      <category>opensource</category>
      <category>programming</category>
    </item>
    <item>
      <title>Cedar Canopies, Salt Air, and Kinematics</title>
      <dc:creator>Rin Katsuragi</dc:creator>
      <pubDate>Sun, 11 Oct 2026 09:19:24 +0000</pubDate>
      <link>https://dev.to/rinrinrinrin/cedar-canopies-salt-air-and-kinematics-5g7d</link>
      <guid>https://dev.to/rinrinrinrin/cedar-canopies-salt-air-and-kinematics-5g7d</guid>
      <description>&lt;p&gt;Living in Ikoma (生駒) often feels like existing in a low-pass filter between two high-frequency extremes. On one side of the mountain lies the neon density of Osaka, and on the other, the quiet, ancient basin of Nara. Tucked into the forested slopes of Takayama is NAIST (Nara Institute of Science and Technology), where most of my waking hours are spent debugging ROS nodes, untangling sensor wiring, and staring at loss curves until matrices blur into white noise.&lt;/p&gt;

&lt;p&gt;It is easy in robotics to forget what physics actually feels like when it isn’t simulated in Gazebo. When your universe shrinks to soldering irons, cheap cardboard prototypes, and motor torque limits, you risk treating embodiment as a purely mathematical problem. &lt;/p&gt;

&lt;p&gt;That is why on weekends, I deliberately pull the plug.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Hillside Habitat
&lt;/h3&gt;

&lt;p&gt;Ikoma isn’t Tokyo, so life here is steep stone staircases cut through mossy cedar groves, cable cars creaking uphill past small shrines, and tiny counter shops where a 70-year-old master slides a steaming bowl of tonkotsu ramen across a worn wooden plank without saying more than two words. &lt;/p&gt;

&lt;p&gt;There is an organic determinism here that software rarely captures, like cedar trees don’t grow according to an optimized global cost function lol, but adapt to micro-shifts in wind, root space, sunlight, etc. Walking uphill through Hozan-ji with my dog, Miso, bouncing along the stone steps, I find myself watching biological kinematics, say the way quadrupedal joints passively absorb shock without a central processor burning kilowatts of compute is a humbling reality check for any robotics student trying to balance an inverted pendulum.&lt;/p&gt;

&lt;h3&gt;
  
  
  A Dash to the Sea
&lt;/h3&gt;

&lt;p&gt;Nara is famously landlocked, ringed by mountains that trap heat in summer and frost in winter. When the lab air feels too stale, Miso and I load into the car early in the morning and head out. The closest true open water is south toward the coast of Wakayama or out toward Osaka Bay and Sennan. &lt;/p&gt;

&lt;p&gt;Driving down through the passes, the dense green canopy gradually gives way to wide horizons and humid salt air, and by mid-morning, the drone of the highway drops off, replaced by the rhythmic cadence of surf crashing onto sand. &amp;lt;3&lt;/p&gt;

&lt;p&gt;Miso treats the beach like an unmapped coordinate frame, she doesn't compute terrain elevation maps hihi, she just runs, her paws instantly shifting gait from packed wet sand to loose drift without a single dropped frame. &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%2F3uxmc9b9rac44yw175yj.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%2F3uxmc9b9rac44yw175yj.png" alt=" " width="800" height="783"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Sitting on the sand towel after a swim, shivering slightly in the ocean breeze with salt clinging to wet skin and sandy toes, there’s an immediate clarity that no whiteboard session can produce, considering the ocean is chaotic, high-entropy, and indifferent to us and our thoughts. Interfacing an artificial agent with the physical world requires that same resilience—an architecture built to survive real friction, unexpected gusts, and dirty inputs rather than idealized test vectors.&lt;/p&gt;

&lt;h3&gt;
  
  
  Touching Grass to Build Silicon
&lt;/h3&gt;

&lt;p&gt;Most breakthroughs in robotics don't come from staring longer at an IDE. They come from grounding yourself in the messy, analog world your machines are supposed to inhabit. &lt;/p&gt;

&lt;p&gt;Living in Ikoma gives you the quiet space to build, and the coast gives you the perspective to remember why you do it all. Back at the desk tonight, the breadboards, servo leads, and lines of code won't feel like abstract puzzles anymore—they're just an attempt to borrow a fraction of the elegance that already exists right outside the lab door.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>beginners</category>
      <category>japan</category>
      <category>touchgrass</category>
    </item>
    <item>
      <title>Hunting Down a Zombie Python Thread: My First PR to Webots 🤖🌸</title>
      <dc:creator>Rin Katsuragi</dc:creator>
      <pubDate>Sat, 10 Oct 2026 14:15:10 +0000</pubDate>
      <link>https://dev.to/rinrinrinrin/hunting-down-a-zombie-python-thread-my-first-pr-to-webots-2ijp</link>
      <guid>https://dev.to/rinrinrinrin/hunting-down-a-zombie-python-thread-my-first-pr-to-webots-2ijp</guid>
      <description>&lt;blockquote&gt;
&lt;h2&gt;
  
  
  How a subtle threading deadlock on Windows led to my first open source contribution to the Webots robotics simulator.
&lt;/h2&gt;
&lt;/blockquote&gt;

&lt;p&gt;Following up on my intro post from quiet Ikoma, and while hype still runs through me, I wanted to share a fun little milestone as I just submitted my first Pull Request to Webots!&lt;/p&gt;

&lt;p&gt;If you work in robotics or embodied AI, you probably know Webots, it’s an incredible open-source 3D robot simulator used worldwide for prototyping everything from multi-jointed arms to autonomous rovers before touching physical hardware.&lt;/p&gt;

&lt;p&gt;Here is the story of a sneaky deadlock on Windows, and how I solved it.&lt;/p&gt;




&lt;h3&gt;
  
  
  The Mystery of the Zombie Process 🧟‍♂️
&lt;/h3&gt;

&lt;p&gt;While working with external Python controllers on Windows, I ran into an issue where scripts wouldn't terminate. &lt;/p&gt;

&lt;p&gt;When running a controller with stdout/stderr redirection enabled (&lt;code&gt;--stdout-redirect&lt;/code&gt;):&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="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;controller&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Robot&lt;/span&gt;

&lt;span class="n"&gt;robot&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Robot&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Hello Webots!&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="c1"&gt;# simulation loop finishes...
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The simulation ended, the message printed cleanly to the Webots console, but &lt;code&gt;python.exe&lt;/code&gt; never exited but stayed stuck in the background as a zombie process until forcefully killed. I also noticed there is an open issue that specified the exact error from the maintainer.&lt;/p&gt;

&lt;p&gt;Why did that happen?&lt;/p&gt;




&lt;h3&gt;
  
  
  The Anatomy of the Deadlock 🔍
&lt;/h3&gt;

&lt;p&gt;Digging into Webots' Python API (&lt;code&gt;robot.py&lt;/code&gt;), stdout redirection is handled by a class called &lt;code&gt;StdStreamRedirect&lt;/code&gt;. It sets up an OS pipe (&lt;code&gt;os.pipe()&lt;/code&gt;) and a background helper thread that reads lines from the pipe and forwards them directly to the Universal C Runtime (&lt;code&gt;ucrtbase&lt;/code&gt;), allowing Webots' C++ backend to capture the output.&lt;/p&gt;

&lt;p&gt;Here was the catch:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Python shutdown order&lt;/strong&gt;: When a Python script reaches EOF, Python's runtime (&lt;code&gt;threading._shutdown&lt;/code&gt;) waits to join all non-daemon threads before executing &lt;code&gt;atexit&lt;/code&gt; cleanup callbacks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The pipe blocking&lt;/strong&gt;: The helper thread was created with &lt;code&gt;daemon=False&lt;/code&gt;. It was blocked inside &lt;code&gt;self._r.readline()&lt;/code&gt;, waiting for an EOF on the pipe.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The stalemate&lt;/strong&gt;: An OS pipe only sends EOF when all write ends are closed. But the write end was scheduled to close inside an &lt;code&gt;atexit&lt;/code&gt; callback!&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The interpreter waited for the thread to finish before running &lt;code&gt;atexit&lt;/code&gt;, but the thread couldn't finish until &lt;code&gt;atexit&lt;/code&gt; ran resulting to classic deadlock.&lt;/p&gt;




&lt;h3&gt;
  
  
  The Solution 🛠️
&lt;/h3&gt;

&lt;p&gt;The fix was clean and minimal:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Daemonize the helper thread (&lt;code&gt;daemon=True&lt;/code&gt;)&lt;/strong&gt;: This allows Python to exit the main thread and proceed smoothly into the &lt;code&gt;atexit&lt;/code&gt; stage.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Explicit &lt;code&gt;close()&lt;/code&gt; in &lt;code&gt;atexit&lt;/code&gt;&lt;/strong&gt;: We close the write pipe (sending EOF down the pipe), then call &lt;code&gt;self._thread.join()&lt;/code&gt; to guarantee all pending prints are flushed to Webots before final termination.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Restore streams&lt;/strong&gt;: Restored &lt;code&gt;sys.stdout&lt;/code&gt; and &lt;code&gt;sys.stderr&lt;/code&gt; before closing to ensure any late interpreter shutdown messages don't raise &lt;code&gt;ValueError: I/O operation on closed file&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Tested on Windows 11 — zero hangs, instant exit with code &lt;code&gt;0&lt;/code&gt;.&lt;/p&gt;




&lt;h3&gt;
  
  
  Small Steps Forward 🌱
&lt;/h3&gt;

&lt;p&gt;Contributing to the core tools you rely on daily in your research is such a rewarding feeling. &lt;/p&gt;

&lt;p&gt;If you've been hesitating to contribute to a large open-source project, start by tackling a small bug or reading through issue trackers. You might find a curious little puzzle waiting for you as I did!&lt;/p&gt;

&lt;p&gt;What was your first open-source bug fix like? I'd love to hear your stories and get inspired to be not afraid to post about my journey in robotics and AI, even if my contributions look small and simple to advanced devs! 🍵💅&lt;/p&gt;

</description>
      <category>robotics</category>
      <category>python</category>
      <category>opensource</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Hi! 👋 From Ikoma to the DEV Community: Why I’m Building AI that Touches the Real World</title>
      <dc:creator>Rin Katsuragi</dc:creator>
      <pubDate>Sat, 10 Oct 2026 11:35:12 +0000</pubDate>
      <link>https://dev.to/rinrinrinrin/hi-from-ikoma-to-the-dev-community-why-im-building-ai-that-touches-the-real-world-45hl</link>
      <guid>https://dev.to/rinrinrinrin/hi-from-ikoma-to-the-dev-community-why-im-building-ai-that-touches-the-real-world-45hl</guid>
      <description>&lt;p&gt;Konnichiwa, DEV Community! 🌸&lt;/p&gt;

&lt;p&gt;I am Rin from Japan, and this is my first post in dev.to! I’ve been a long-time lurker, reading amazing tutorials and system architecture breakdowns, but today I’m finally stepping out of the shadows to say hello and share a bit of my world.&lt;/p&gt;

&lt;p&gt;I am a Japanese-Russian student, living in Ikoma, a beautiful city in Nara, surrounded by lush green hills. By day (and many late nights) I am a graduate focusing on AI/ML, specifically diving deep into Human-Machine Interaction (HMI) and Robotics.&lt;/p&gt;




&lt;h3&gt;
  
  
  🧠 My Focus
&lt;/h3&gt;

&lt;p&gt;I think when a lot of people think about AI they think about abstract LLM wrappers, chatbots or purely digital software, but for me the magic happens when the digital world collides with physical reality. &lt;/p&gt;

&lt;p&gt;In my research, I am very interested in:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Human-Machine Interaction (HMI):&lt;/strong&gt; How can we design multimodal systems (combining speech, vision, and touch) so that AI feels like a natural partner to a human rather than an unyielding tool?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Physical AI &amp;amp; Robot Learning:&lt;/strong&gt; Implementing reinforcement learning algorithms onto physical machinery. Trust me, it’s one thing to see an agent succeed in a clean, simulated environment, and a completely different ballgame when you deploy it onto a robot arm that has to deal with friction, weird lighting, and real-world unpredictability!&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  🌱 What Drives Me
&lt;/h3&gt;

&lt;p&gt;I was born and raised in Russia to Japanese and Russian parents, and my family moved to Japan in the late 90s. Living and studying in Japan, you see the demographic shifts happening in real time, as we have an aging population, and there are very real, immediate labor shortages in sectors like healthcare, agriculture, and manufacturing. &lt;/p&gt;

&lt;p&gt;For me, AI isn’t just a cool math problem or a way to optimize ad clicks, or a fancy startup idea catalyst, but necessity. &lt;/p&gt;

&lt;p&gt;My ultimate drive is as cliche as it may sound, real-life impact. I want to build intelligent systems that can:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Assist physical therapists in rehabilitation clinics.&lt;/li&gt;
&lt;li&gt;Collaborate safely alongside factory workers without requiring rigid safety cages.&lt;/li&gt;
&lt;li&gt;Help create intuitive assistive technologies for the elderly.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Seeing an algorithm you wrote actually move a mechanical joint or help a human complete a exhausting task more safely, that is the most rewarding feeling in the world. &amp;lt;3&lt;/p&gt;




&lt;h3&gt;
  
  
  🚀 Why I’m on DEV
&lt;/h3&gt;

&lt;p&gt;I’m joining DEV because I want to document my journey, share the messy realities of training robotics models (spoiler alert: things fall over. A lot.), and connect with developers worldwide. &lt;/p&gt;

&lt;p&gt;In my upcoming posts, I plan to write about:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The math behind deep reinforcement learning in physical spaces.&lt;/li&gt;
&lt;li&gt;My setups, failures, and breakthrough moments in the lab.&lt;/li&gt;
&lt;li&gt;What it's like researching AI nestled here in the quiet tech hub of Ikoma.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Thank you so much for reading my mini-intro, or at least I hope it's mini :D I'd love to connect with anyone working in computer vision, robotics, or just general machine learning. &lt;/p&gt;

&lt;p&gt;Let's do our best to make the world a better place, for humans first! 💪&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>ai</category>
      <category>machinelearning</category>
      <category>robotics</category>
    </item>
  </channel>
</rss>
