<?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: Simon Landry</title>
    <description>The latest articles on DEV Community by Simon Landry (@hyftar).</description>
    <link>https://dev.to/hyftar</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%2F280597%2Fab1e2bf1-f793-4883-a3f1-deecc28dab9b.png</url>
      <title>DEV Community: Simon Landry</title>
      <link>https://dev.to/hyftar</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/hyftar"/>
    <language>en</language>
    <item>
      <title>Introducing Mutineer: Chaos Engineering for Elixir Function Calls</title>
      <dc:creator>Simon Landry</dc:creator>
      <pubDate>Sat, 07 Feb 2026 02:25:49 +0000</pubDate>
      <link>https://dev.to/hyftar/introducing-mutineer-chaos-engineering-for-elixir-function-calls-5g5b</link>
      <guid>https://dev.to/hyftar/introducing-mutineer-chaos-engineering-for-elixir-function-calls-5g5b</guid>
      <description>&lt;p&gt;I recently released Mutineer, a chaos engineering library designed specifically for Elixir applications.&lt;/p&gt;

&lt;p&gt;If you've ever wondered whether your error handling actually works under pressure, this might be useful.&lt;/p&gt;

&lt;h2&gt;
  
  
  What It Does
&lt;/h2&gt;

&lt;p&gt;Mutineer lets you annotate individual functions to randomly fail at configurable rates. Think of it as Netflix's Chaos Monkey, but instead of taking down entire services, it operates at the function level—making it practical for development and staging environments.&lt;br&gt;
How It Works&lt;br&gt;
You can mark functions for chaos testing in two ways:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Using the &lt;code&gt;@chaos&lt;/code&gt; attribute&lt;/li&gt;
&lt;li&gt;Using the &lt;code&gt;defchaos&lt;/code&gt; or &lt;code&gt;defchaosp&lt;/code&gt; macros&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once annotated, Mutineer randomly triggers failures based on your configuration, helping you validate that your supervision trees, GenServers, retry logic, and error handling actually behave as expected!&lt;/p&gt;

&lt;h2&gt;
  
  
  Failure Modes
&lt;/h2&gt;

&lt;p&gt;Mutineer supports six different failure types:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;:error&lt;/code&gt; - Returns error tuples&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;:raise&lt;/code&gt; - Raises exceptions&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;:timeout&lt;/code&gt; - Simulates timeouts&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;:delay&lt;/code&gt; - Introduces latency&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;:nil&lt;/code&gt; - Returns nil unexpectedly&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;:exit&lt;/code&gt; - Triggers process exits&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can specify a single failure type or provide a list—Mutineer will randomly select one for each invocation. This also works with custom errors, exceptions, and exit reasons, helping simulate realistic production scenarios.&lt;/p&gt;

&lt;h3&gt;
  
  
  Links
&lt;/h3&gt;

&lt;p&gt;GitHub: &lt;a href="https://github.com/rum-and-code/mutineer" rel="noopener noreferrer"&gt;https://github.com/rum-and-code/mutineer&lt;/a&gt;&lt;br&gt;
Hex: &lt;a href="https://hex.pm/packages/mutineer" rel="noopener noreferrer"&gt;https://hex.pm/packages/mutineer&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is an early release, and I'd love to hear from the community about what would make it more useful. If you've worked with chaos engineering in Elixir (or other languages), I'm especially interested in your thoughts on what failure modes or configuration options would be valuable.&lt;/p&gt;

&lt;p&gt;Have you used chaos engineering in your Elixir projects? What challenges have you faced testing fault tolerance?&lt;/p&gt;

</description>
      <category>elixir</category>
      <category>testing</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
