<?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: Felix Schultz</title>
    <description>The latest articles on DEV Community by Felix Schultz (@felix-schultz).</description>
    <link>https://dev.to/felix-schultz</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3681156%2Fd5997c7d-b8fb-46d5-91b0-1a4129be49f6.jpeg</url>
      <title>DEV Community: Felix Schultz</title>
      <link>https://dev.to/felix-schultz</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/felix-schultz"/>
    <language>en</language>
    <item>
      <title>I’m tired of calling glued-together scripts “workflow automation”</title>
      <dc:creator>Felix Schultz</dc:creator>
      <pubDate>Sat, 27 Dec 2025 10:37:30 +0000</pubDate>
      <link>https://dev.to/felix-schultz/im-tired-of-calling-glued-together-scripts-workflow-automation-1l1j</link>
      <guid>https://dev.to/felix-schultz/im-tired-of-calling-glued-together-scripts-workflow-automation-1l1j</guid>
      <description>&lt;p&gt;I’ve built and maintained a lot of “automation” over the years.&lt;/p&gt;

&lt;p&gt;Most of it followed the same pattern:&lt;br&gt;&lt;br&gt;
a bit of JavaScript here, a Python script there, some environment variables, maybe a cron job, maybe a webhook. Then you wire it together and hope nobody touches it too much.&lt;/p&gt;

&lt;p&gt;And for a while, that works.&lt;/p&gt;

&lt;p&gt;Until it doesn’t.&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.amazonaws.com%2Fuploads%2Farticles%2F5wp7lif5jck47lm49s0y.webp" 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.amazonaws.com%2Fuploads%2Farticles%2F5wp7lif5jck47lm49s0y.webp" alt="Flow-Like overview" width="800" height="457"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  When scripting stops scaling
&lt;/h2&gt;

&lt;p&gt;What usually gets called “workflow automation” today is often just scripting with better marketing.&lt;/p&gt;

&lt;p&gt;You glue together JS and Python snippets. You pass JSON blobs between steps. You rely on runtime behavior to tell you whether things fit together or not.&lt;/p&gt;

&lt;p&gt;At the beginning, this feels flexible. Later, it becomes fragile.&lt;/p&gt;

&lt;p&gt;Refactoring is scary. Debugging means reading logs and guessing which step mutated the data. Someone changes a field name and the whole thing still runs — just incorrectly.&lt;/p&gt;

&lt;p&gt;That’s not automation. That’s accumulated technical debt with a scheduler.&lt;/p&gt;

&lt;h2&gt;
  
  
  I wanted workflows that behave like software
&lt;/h2&gt;

&lt;p&gt;Flow-Like started from a pretty simple idea:&lt;br&gt;&lt;br&gt;
&lt;strong&gt;if workflows are critical, they should behave like real software systems&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;clear inputs and outputs&lt;/li&gt;
&lt;li&gt;early validation instead of late failures&lt;/li&gt;
&lt;li&gt;predictable execution&lt;/li&gt;
&lt;li&gt;the ability to understand what a workflow does without reading five scripts&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In Flow-Like, workflows are visual graphs, but they’re also &lt;strong&gt;typed&lt;/strong&gt;. Connections aren’t just “data goes here”. They have meaning. If two steps don’t agree on what they exchange, you don’t get a broken run later — you get feedback immediately.&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.amazonaws.com%2Fuploads%2Farticles%2Frggajhw37wmq18xavkbz.webp" 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.amazonaws.com%2Fuploads%2Farticles%2Frggajhw37wmq18xavkbz.webp" alt="Typed connections and validation" width="800" height="457"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This alone removes a huge class of bugs that are considered “normal” in many automation setups.&lt;/p&gt;

&lt;h2&gt;
  
  
  Visual doesn’t mean dumbed down
&lt;/h2&gt;

&lt;p&gt;A lot of tools treat visual workflows as a way to hide complexity. I don’t like that approach.&lt;/p&gt;

&lt;p&gt;Flow-Like uses visuals to &lt;strong&gt;expose structure&lt;/strong&gt;, not to pretend it isn’t there. You can see execution order, dependencies, and side effects. If a workflow is complicated, the graph shows that — and that’s a good thing.&lt;/p&gt;

&lt;p&gt;As a developer, I want systems that are honest about their complexity.&lt;/p&gt;

&lt;h2&gt;
  
  
  Robust by default
&lt;/h2&gt;

&lt;p&gt;Under the hood, Flow-Like is written in Rust. That wasn’t a trendy choice. It was a practical one.&lt;/p&gt;

&lt;p&gt;Workflow engines deal with IO, concurrency, long-running tasks, and failures. Crashes or undefined behavior are not acceptable. Rust gives you a runtime that’s fast, predictable, and safe by default.&lt;/p&gt;

&lt;p&gt;More importantly, it makes the system portable. The same workflow can run locally, inside a desktop app, or on a server without changing how it behaves.&lt;/p&gt;

&lt;h2&gt;
  
  
  Privacy and local-first execution
&lt;/h2&gt;

&lt;p&gt;One thing that bothers me about many automation tools is how quickly they assume “send everything to the cloud”.&lt;/p&gt;

&lt;p&gt;Flow-Like is local-first. You can build and execute workflows entirely on your own machine. No mandatory backend. No hidden SaaS dependency.&lt;/p&gt;

&lt;p&gt;That’s not about being anti-cloud. It’s about having a choice.&lt;/p&gt;

&lt;p&gt;Local execution means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;easier debugging&lt;/li&gt;
&lt;li&gt;real data during development&lt;/li&gt;
&lt;li&gt;fewer surprises around privacy and compliance&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you later want to run workflows on a server or in Kubernetes, that’s fine. But it shouldn’t be required.&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.amazonaws.com%2Fuploads%2Farticles%2Fxss9udv6r88kjskwrthq.webp" 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.amazonaws.com%2Fuploads%2Farticles%2Fxss9udv6r88kjskwrthq.webp" alt="Local and offline execution" width="800" height="457"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  AI workflows without duct tape
&lt;/h2&gt;

&lt;p&gt;AI is now part of many automation pipelines. Too often that means embedding prompts in scripts and hoping nothing weird happens.&lt;/p&gt;

&lt;p&gt;In Flow-Like, AI steps are just part of the workflow graph. They have typed inputs and outputs like everything else. You can see where data comes from, how it’s transformed, and what gets produced.&lt;/p&gt;

&lt;p&gt;That makes AI workflows less magical — and much easier to trust.&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.amazonaws.com%2Fuploads%2Farticles%2F3ktddpjn7dwt0tlq5v7s.webp" 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.amazonaws.com%2Fuploads%2Farticles%2F3ktddpjn7dwt0tlq5v7s.webp" alt="Node detail view" width="800" height="379"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I’m building this
&lt;/h2&gt;

&lt;p&gt;If you’ve ever looked at an automation setup and thought “please don’t break”, you probably know exactly why this exists.&lt;/p&gt;

&lt;p&gt;I don’t think automation should mean “a pile of scripts nobody wants to touch”. I want a workflow system that developers actually enjoy using. One that’s robust, predictable, and private by default. One where you can come back months later and still understand what’s going on.&lt;/p&gt;

&lt;p&gt;That’s what I’m building with Flow-Like.&lt;/p&gt;




&lt;p&gt;You can find the project on &lt;a href="https://github.com/TM9657/flow-like" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; and it is still evolving. If the ideas resonate, feel free to follow along, poke at it, or tell me where it falls short. Thoughtful criticism is more valuable than quiet approval.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://flow-like.com" rel="noopener noreferrer"&gt;Website&lt;/a&gt; • &lt;a href="https://docs.flow-like.com" rel="noopener noreferrer"&gt;Docs&lt;/a&gt; • &lt;a href="https://github.com/TM9657/flow-like" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;/p&gt;

</description>
      <category>rust</category>
      <category>tooling</category>
      <category>privacy</category>
      <category>ai</category>
    </item>
  </channel>
</rss>
