<?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: Vlad B.</title>
    <description>The latest articles on DEV Community by Vlad B. (@vladbevs).</description>
    <link>https://dev.to/vladbevs</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%2F4096564%2F64ae40ff-fc81-4faf-b531-ce6fb7355def.png</url>
      <title>DEV Community: Vlad B.</title>
      <link>https://dev.to/vladbevs</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/vladbevs"/>
    <language>en</language>
    <item>
      <title>What If Your Terminal Had an Infinite Canvas? Meet Fuse.</title>
      <dc:creator>Vlad B.</dc:creator>
      <pubDate>Thu, 17 Sep 2026 02:09:44 +0000</pubDate>
      <link>https://dev.to/vladbevs/what-if-your-terminal-had-an-infinite-canvas-meet-fuse-b1i</link>
      <guid>https://dev.to/vladbevs/what-if-your-terminal-had-an-infinite-canvas-meet-fuse-b1i</guid>
      <description>&lt;p&gt;Let’s be honest: every software project eventually grows a collection of messy, fragile shell scripts.&lt;/p&gt;

&lt;p&gt;You know the drill:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A 200-line release script that occasionally breaks mid-execution.&lt;/li&gt;
&lt;li&gt;Juggling three terminal tabs to run migrations, build artifacts, bump versions, and deploy across different sub-projects.&lt;/li&gt;
&lt;li&gt;Forgetting a parameter or copy-pasting an API token into the wrong prompt.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I wanted something that gave me the &lt;strong&gt;visual clarity of node-based automation tools&lt;/strong&gt; (like Blender shader graphs or visual CI pipelines), but running &lt;strong&gt;100% locally on my Mac, with zero cloud lock-in, and without an Electron app eating 1GB of RAM&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;So I built &lt;strong&gt;Fuse&lt;/strong&gt; — an open-source, native visual command and workflow builder for macOS.&lt;/p&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/VladB-evs" rel="noopener noreferrer"&gt;
        VladB-evs
      &lt;/a&gt; / &lt;a href="https://github.com/VladB-evs/Fuse" rel="noopener noreferrer"&gt;
        Fuse
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Visual command and workflow builder for macOS. Connect shell commands, scripts, APIs, Git operations, and logic into executable workflows.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div&gt;
&lt;a rel="noopener noreferrer" href="https://github.com/VladB-evs/Fuse/assets/logo.png"&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%2FVladB-evs%2FFuse%2FHEAD%2Fassets%2Flogo.png" alt="Fuse Logo" width="110" height="110"&gt;&lt;/a&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Fuse&lt;/h1&gt;
&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Visual Command &amp;amp; Workflow Builder for macOS&lt;/h3&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href="https://github.com/VladB-evs/Fuse/releases" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/0b15a6aa88e756e6985fbb73a6880c88c9ef9bf48bb7665513df0b6cccd24823/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f762f72656c656173652f566c6164422d6576732f467573653f7374796c653d666c61742d73717561726526636f6c6f723d363336366631" alt="Release"&gt;&lt;/a&gt;
&lt;a href="https://github.com/VladB-evs/Fuse" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/000fba823d9a1a7aeb0da22d0e6c3cba4c24711e519aec8436a9e5263749b7ba/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f706c6174666f726d2d6d61634f532d3030303030303f7374796c653d666c61742d737175617265266c6f676f3d6170706c65266c6f676f436f6c6f723d7768697465" alt="Platform"&gt;&lt;/a&gt;
&lt;a href="https://tauri.app" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/53a55759f69301f534d80cc6b57d39a27a5f47299b3891a97d7fc0c657c5423b/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6275696c74253230776974682d5461757269253230322e302d3234433844383f7374796c653d666c61742d737175617265266c6f676f3d7461757269266c6f676f436f6c6f723d7768697465" alt="Built with Tauri"&gt;&lt;/a&gt;
&lt;a href="https://www.rust-lang.org/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/44184e3521612333da2a647f685057331d8442c911b14bf9def698aa6c3e5f3e/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f656e67696e652d527573742d4445413538343f7374796c653d666c61742d737175617265266c6f676f3d72757374266c6f676f436f6c6f723d7768697465" alt="Rust"&gt;&lt;/a&gt;
&lt;a href="https://github.com/VladB-evs/Fuse/LICENSE" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/422db9fd40f5831c765cf6530b6750c081b696bd18d904cf89554df98c676277/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d677265656e3f7374796c653d666c61742d737175617265" alt="License"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
  &lt;b&gt;Draw your terminal commands as connected blocks on an infinite canvas.&lt;/b&gt;&lt;br&gt;
  Orchestrate complex shell scripts, APIs, git workflows, and automated pipelines with real-time streaming output, smart variables, and Apple on-device intelligence
&lt;/p&gt;

&lt;p&gt;
  &lt;a href="https://github.com/VladB-evs/Fuse#key-features" rel="noopener noreferrer"&gt;Key Features&lt;/a&gt; •
  &lt;a href="https://github.com/VladB-evs/Fuse#quick-start" rel="noopener noreferrer"&gt;Quick Start&lt;/a&gt; •
  &lt;a href="https://github.com/VladB-evs/Fuse#block-catalog" rel="noopener noreferrer"&gt;Block Catalog&lt;/a&gt; •
  &lt;a href="https://github.com/VladB-evs/Fuse#variables--flow" rel="noopener noreferrer"&gt;Variables &amp;amp; Flow&lt;/a&gt; •
  &lt;a href="https://github.com/VladB-evs/Fuse#keyboard-shortcuts" rel="noopener noreferrer"&gt;Shortcuts&lt;/a&gt; •
  &lt;a href="https://github.com/VladB-evs/Fuse#architecture" rel="noopener noreferrer"&gt;Architecture&lt;/a&gt;
&lt;/p&gt;



&lt;br&gt;
&lt;a rel="noopener noreferrer" href="https://github.com/VladB-evs/Fuse/assets/preview.png"&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%2FVladB-evs%2FFuse%2FHEAD%2Fassets%2Fpreview.png" alt="Fuse Canvas Interface" width="100%"&gt;&lt;/a&gt;

&lt;p&gt;&lt;em&gt;(the actual image of the worlflow used for this app)&lt;/em&gt;&lt;/p&gt;


&lt;/div&gt;
&lt;br&gt;


&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;⚡️ Key Features&lt;/h2&gt;

&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;🎨 &lt;strong&gt;Fluid Canvas Orchestration&lt;/strong&gt; — Built for speed. Add blocks with a keystroke, drag wires between ports, and let frames auto-resize around their contents.&lt;/li&gt;
&lt;li&gt;🦀 &lt;strong&gt;Native Rust Performance&lt;/strong&gt; — Zero Electron bloat. Powered by &lt;strong&gt;Tauri 2&lt;/strong&gt; and Tokio async DAG walk. Sub-50MB memory footprint with instant launch times.&lt;/li&gt;
&lt;li&gt;🧠 &lt;strong&gt;Apple On-Device Intelligence&lt;/strong&gt; — Analyze git diffs locally using on-device semantic summaries to generate conventional commit messages in milliseconds.&lt;/li&gt;
&lt;li&gt;📁 &lt;strong&gt;Repository &amp;amp; Folder Frames&lt;/strong&gt; — Group blocks inside folder frames. Every block inside…&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/VladB-evs/Fuse" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;



&lt;h2&gt;
  
  
  What is Fuse?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Fuse&lt;/strong&gt; lets you draw terminal commands, scripts, and API calls as connected nodes on an infinite canvas. You connect blocks with wires, pass variables downstream, set up conditionals, and watch real-time streaming ANSI terminal outputs as your DAG (Directed Acyclic Graph) executes.&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%2Fltyhwh3kd0hhst2b3th4.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%2Fltyhwh3kd0hhst2b3th4.png" alt="Fuse Canvas Interface" width="800" height="427"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  Why Not Just Run Shell Scripts?
&lt;/h2&gt;

&lt;p&gt;Here is what makes workflow graphs in Fuse fundamentally different from chaining &lt;code&gt;&amp;amp;&amp;amp;&lt;/code&gt; in a terminal:&lt;/p&gt;
&lt;h3&gt;
  
  
  1. Multi-Repo "Folder Frames"
&lt;/h3&gt;

&lt;p&gt;Working on a monorepo or separate client/server repositories? You can drop a &lt;strong&gt;Folder Frame&lt;/strong&gt; on the canvas and bind it to a local directory. Any block placed inside that frame automatically executes within that directory. You can coordinate your backend, frontend, and Docker setups on a single screen.&lt;/p&gt;
&lt;h3&gt;
  
  
  2. Smart Variable Piping (Without Escaping Nightmares)
&lt;/h3&gt;

&lt;p&gt;Outputs from upstream blocks are automatically captured and bound into your workflow context:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Upstream: &lt;code&gt;git rev-parse --short HEAD&lt;/code&gt; -&amp;gt; &lt;code&gt;{{sha}}&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Upstream: Semantic version bumper -&amp;gt; &lt;code&gt;{{next_version}}&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Downstream: Use them in curl payloads, shell commands, or commit messages:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git commit &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"chore(release): bump to {{next_version}}"&lt;/span&gt;
git tag &lt;span class="s2"&gt;"{{next_version}}"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Fuse handles shell-safe escaping under the hood so spaces, quotes, and multiline inputs won't break your commands.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Human-in-the-Loop Controls
&lt;/h3&gt;

&lt;p&gt;Workflows shouldn't always be a blind "run and pray":&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;Confirm&lt;/code&gt;&lt;/strong&gt;: Pauses execution and asks for approval before critical actions (like &lt;code&gt;git push --tags&lt;/code&gt; or a production deploy).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;Ask&lt;/code&gt;&lt;/strong&gt;: Prompts you mid-run for a one-time value or secret token (with password masking).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;Choose&lt;/code&gt; &amp;amp; &lt;code&gt;If (Condition)&lt;/code&gt;&lt;/strong&gt;: Branch your execution paths dynamically based on exit codes or interactive user selections (e.g. &lt;code&gt;[Deploy Staging]&lt;/code&gt; vs &lt;code&gt;[Deploy Production]&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4. The "Laser Slicer" (Because UX Matters)
&lt;/h3&gt;

&lt;p&gt;Instead of meticulously clicking wires to delete them, hold &lt;code&gt;Ctrl&lt;/code&gt; and slice your cursor across connections or nodes like a laser blade to sever them instantly.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Native Rust Performance (Sub-50MB RAM)
&lt;/h3&gt;

&lt;p&gt;Fuse is built on &lt;strong&gt;Tauri 2&lt;/strong&gt; and &lt;strong&gt;Rust&lt;/strong&gt; with Tokio async processes. It starts up instantaneously, doesn't spin up heavy Chromium browser instances per window, and uses virtually no background idle resources.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Block Catalog
&lt;/h2&gt;

&lt;p&gt;Fuse comes with a modular set of blocks you can place with a single keypress (&lt;code&gt;Tab&lt;/code&gt; or &lt;code&gt;A&lt;/code&gt;):&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Category&lt;/th&gt;
&lt;th&gt;Blocks&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Execution&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Command&lt;/strong&gt; (shell), &lt;strong&gt;Script&lt;/strong&gt; (multi-line Python/Node/Bash), &lt;strong&gt;HTTP Request&lt;/strong&gt; (REST calls)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Git &amp;amp; Release&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Bump Version&lt;/strong&gt; (SemVer major/minor/patch), &lt;strong&gt;Git Presets&lt;/strong&gt; (Init, Rebase, Tag, Push)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Data &amp;amp; Files&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Capture&lt;/strong&gt; (stdout to variable), &lt;strong&gt;Set Variable&lt;/strong&gt;, &lt;strong&gt;Read File&lt;/strong&gt;, &lt;strong&gt;Write File&lt;/strong&gt;, &lt;strong&gt;Ask&lt;/strong&gt; (user input)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Flow &amp;amp; Logic&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;If (Condition)&lt;/strong&gt;, &lt;strong&gt;Choose&lt;/strong&gt;, &lt;strong&gt;Confirm&lt;/strong&gt;, &lt;strong&gt;Wait&lt;/strong&gt; (delay or healthcheck polling), &lt;strong&gt;Frame&lt;/strong&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  Tech Stack
&lt;/h2&gt;

&lt;p&gt;Under the hood, Fuse is built with modern web and systems tech:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frontend:&lt;/strong&gt; React 19, TypeScript, &lt;a href="https://reactflow.dev/" rel="noopener noreferrer"&gt;@xyflow/react&lt;/a&gt; (React Flow), Tailwind CSS v4, Lucide Icons.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend / Desktop Shell:&lt;/strong&gt; &lt;a href="https://tauri.app/" rel="noopener noreferrer"&gt;Tauri 2&lt;/a&gt; + Rust.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Runtime:&lt;/strong&gt; Tokio asynchronous process groups, streaming ANSI terminal output with 256-color support.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Try It Out!
&lt;/h2&gt;

&lt;p&gt;If you are on macOS (Apple Silicon or Intel), you can grab the pre-built &lt;code&gt;.dmg&lt;/code&gt; directly from GitHub Releases:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Download the latest release from &lt;a href="https://github.com/VladB-evs/Fuse/releases/latest" rel="noopener noreferrer"&gt;GitHub Releases&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Open the &lt;code&gt;.dmg&lt;/code&gt; and drag &lt;strong&gt;Fuse.app&lt;/strong&gt; into your Applications folder.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;em&gt;(Note: As an open-source release without an Apple Developer certificate, if Gatekeeper gives you a prompt, run &lt;code&gt;xattr -cr /Applications/Fuse.app&lt;/code&gt; or right-click the app and choose **Open&lt;/em&gt;&lt;em&gt;).&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Or Build from Source:
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/VladB-evs/Fuse.git
&lt;span class="nb"&gt;cd &lt;/span&gt;Fuse
npm &lt;span class="nb"&gt;install
&lt;/span&gt;npm run tauri dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  I’d Love Your Feedback!
&lt;/h2&gt;

&lt;p&gt;Fuse is completely open source under the &lt;strong&gt;MIT License&lt;/strong&gt;.&lt;/p&gt;

&lt;h4&gt;
  
  
  ⚠️ A Quick Note: Early Beta &amp;amp; Use at Your Own Risk
&lt;/h4&gt;

&lt;p&gt;Because Fuse executes real shell commands, scripts, and file operations directly on your local system with your user permissions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;This is an early active beta (v0.1.x)&lt;/strong&gt;: Expect bugs, UI rough edges, and evolving features as the project matures.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use at your own risk&lt;/strong&gt;: Always double-check your connections and test commands (especially destructive operations like &lt;code&gt;rm&lt;/code&gt;, file writes, or git resets) on test repositories or dummy files first.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Back up your work&lt;/strong&gt;: Make sure critical code is committed and pushed before running new automated pipelines.
Your bug reports and early feedback during this phase are hugely appreciated and will directly help shape the app!&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>opensource</category>
      <category>macos</category>
      <category>rust</category>
      <category>productivity</category>
    </item>
    <item>
      <title>This week at Romi #2 - Latency and Voice AI</title>
      <dc:creator>Vlad B.</dc:creator>
      <pubDate>Tue, 08 Sep 2026 04:23:59 +0000</pubDate>
      <link>https://dev.to/romiadhd/this-week-at-romi-2-latency-and-voice-ai-556c</link>
      <guid>https://dev.to/romiadhd/this-week-at-romi-2-latency-and-voice-ai-556c</guid>
      <description>&lt;p&gt;Welcome back to &lt;del&gt;This&lt;/del&gt; Last week at Romi. We've been really busy so this post hits a bit late than our scheduled Friday one!&lt;/p&gt;

&lt;p&gt;In Voice AI, saving 200–300 milliseconds sounds tiny on paper. In practice, it’s the difference between an awkward robotic delay and a natural conversation.&lt;br&gt;
This week, we took a hard look at our pipeline to eliminate latency and clean out old code that was getting in the way. Here is what we changed:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Sync to Async Tools:&lt;/strong&gt; Originally, tool execution was synchronous. When a user created a task, the pipeline froze waiting for database writes. Making our tools asynchronous means the voice keeps flowing naturally while items are saved in the background.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;7 Dedup Layers Down to 2:&lt;/strong&gt; To stop duplicate tasks from hitting the database, we kept piling on safeguards over time until we had 7 layers of deduplication. They slowed down the pipeline and began contradicting each other. With stronger prompt reinforcement and a quick backend cleanup, we cut that down to just 2 layers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ditching "Thinking" Models:&lt;/strong&gt; Since our agent relies heavily on fast tool calls, thinking models added unnecessary reasoning delay before speaking. We swapped to a model optimized strictly for speed and accurate tool invocation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Push-to-Talk Toggle:&lt;/strong&gt; To complement these backend speedups, we added a toggle between &lt;em&gt;Natural Flow&lt;/em&gt; and &lt;em&gt;Push-to-Talk&lt;/em&gt;. Now users can think out loud or speak in noisy rooms without the model prematurely triggering unwanted tasks.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Sometimes performance wins aren't about writing complex new code—they're about deleting redundant safeguards, running tasks in the background, and picking the right model for the job.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;What's the worst bit of legacy "safety code" you've had to clean out of your stack?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;By Vlad - CTO@RomiADHD&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>This week at Romi #1 - OTA updates</title>
      <dc:creator>Vlad B.</dc:creator>
      <pubDate>Sat, 29 Aug 2026 06:21:04 +0000</pubDate>
      <link>https://dev.to/romiadhd/this-week-at-romi-1-48lc</link>
      <guid>https://dev.to/romiadhd/this-week-at-romi-1-48lc</guid>
      <description>&lt;p&gt;We finally added OTA updates to Romi.&lt;/p&gt;

&lt;p&gt;This is something apps have been doing for years, but it’s new territory for us.&lt;/p&gt;

&lt;p&gt;Instead of waiting for Apple’s review every time we need to push a small fix, we can now ship certain updates directly to users.&lt;/p&gt;

&lt;p&gt;And because apparently paying for another service wasn’t exciting enough, we built our own setup using Capgo + CDN.&lt;/p&gt;

&lt;p&gt;It’s one of those things that feels obvious once it works. Getting there was slightly less obvious. 😅&lt;/p&gt;

&lt;p&gt;What’s something your team implemented way later than everyone else?&lt;/p&gt;

&lt;p&gt;By Vlad - CTO@RomiADHD&lt;/p&gt;

</description>
      <category>development</category>
      <category>showdev</category>
    </item>
    <item>
      <title>I Built an Obsidian Plugin for Myself. Someone Actually Used It.</title>
      <dc:creator>Vlad B.</dc:creator>
      <pubDate>Sat, 29 Aug 2026 04:26:47 +0000</pubDate>
      <link>https://dev.to/vladbevs/i-built-an-obsidian-plugin-for-myself-someone-actually-used-it-3ll5</link>
      <guid>https://dev.to/vladbevs/i-built-an-obsidian-plugin-for-myself-someone-actually-used-it-3ll5</guid>
      <description>&lt;p&gt;I got an email recently from someone asking if I could add a feature to one of my Obsidian plugins.&lt;/p&gt;

&lt;p&gt;The funny part? I built the plugin for myself and never really expected anyone to use it.&lt;/p&gt;

&lt;p&gt;The plugin adds folder backlinks to Obsidian, since Obsidian only supports backlinks to notes.&lt;/p&gt;

&lt;p&gt;He asked if I could make folder links work inside note properties because he couldn't figure out how to do it himself.&lt;/p&gt;

&lt;p&gt;So I built it.&lt;/p&gt;

&lt;p&gt;It's now a two-step command palette action: select the folder, then select the note property, and the link gets added.&lt;/p&gt;

&lt;p&gt;While I was working on it, I also found a few things that weren't as smooth as they should be, fixed a couple of bugs, and polished some of the rough edges.&lt;/p&gt;

&lt;p&gt;It's kind of weird seeing someone use something you built purely because you wanted it yourself.&lt;/p&gt;

&lt;p&gt;Maybe I should start taking my side projects a little more seriously.&lt;/p&gt;

</description>
      <category>obsidian</category>
      <category>opensource</category>
      <category>productivity</category>
      <category>programming</category>
    </item>
    <item>
      <title>Hello from Romi!</title>
      <dc:creator>Vlad B.</dc:creator>
      <pubDate>Thu, 27 Aug 2026 04:51:57 +0000</pubDate>
      <link>https://dev.to/romiadhd/hello-from-romi-ae4</link>
      <guid>https://dev.to/romiadhd/hello-from-romi-ae4</guid>
      <description>&lt;p&gt;Hey this is Vlad, the CTO. We’ve been quietly building Romi for a while, so we figured it was probably time to stop hiding in the codebase.&lt;/p&gt;

&lt;p&gt;Romi thinks like you do. Voice-first, ADHD-first. Capture thoughts, build routines, and actually stick to them. Your brain deserves a companion that keeps up.&lt;/p&gt;

&lt;p&gt;I'm not trying to promote anything but to share what we’re building, the things we learn along the way, technical decisions, experiments, and probably a healthy amount of “well, that broke.”&lt;/p&gt;

&lt;p&gt;We’re especially interested in exploring what happens when AI becomes something you actually work with every day, rather than just another chatbot in a browser tab.&lt;/p&gt;

&lt;p&gt;If you’re building with AI, working on developer tools, or just enjoy watching other developers make questionable architectural decisions, welcome.&lt;/p&gt;

&lt;p&gt;Ask me anything in the comments. &lt;/p&gt;

</description>
      <category>ai</category>
      <category>buildinpublic</category>
      <category>startup</category>
    </item>
    <item>
      <title>I Finally Joined DEV.to</title>
      <dc:creator>Vlad B.</dc:creator>
      <pubDate>Thu, 27 Aug 2026 04:10:55 +0000</pubDate>
      <link>https://dev.to/vladbevs/i-finally-joined-devto-3hof</link>
      <guid>https://dev.to/vladbevs/i-finally-joined-devto-3hof</guid>
      <description>&lt;p&gt;Well, I finally joined DEV.to.&lt;/p&gt;

&lt;p&gt;Got bored of social media and scrolling so I decided to give this a go and scroll some more.&lt;/p&gt;

&lt;p&gt;I’m currently working on Romi, experimenting with AI agents, and finding increasingly questionable ways to make computers do what I don't want to do. &lt;/p&gt;

&lt;p&gt;I’ll probably post about what I’m building, cool open source stuff I find and maybe show off some of my (not so great) side projects.&lt;/p&gt;

&lt;p&gt;Anyway, If you saw this tell me your best programming joke that will kill on slack lol 🗿&lt;/p&gt;

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