<?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: Andrew Jokovich</title>
    <description>The latest articles on DEV Community by Andrew Jokovich (@superuser038).</description>
    <link>https://dev.to/superuser038</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%2F4206563%2F098e1a57-735e-44df-907f-051184aa6cd7.jpg</url>
      <title>DEV Community: Andrew Jokovich</title>
      <link>https://dev.to/superuser038</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/superuser038"/>
    <language>en</language>
    <item>
      <title>[Boost]</title>
      <dc:creator>Andrew Jokovich</dc:creator>
      <pubDate>Sun, 25 Oct 2026 16:56:08 +0000</pubDate>
      <link>https://dev.to/superuser038/-7ja</link>
      <guid>https://dev.to/superuser038/-7ja</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/superuser038/show-dev-i-built-a-bayesian-github-action-to-find-the-commit-that-broke-your-c-project-2lo8" class="crayons-story__hidden-navigation-link"&gt;Show DEV: I Built a Bayesian GitHub Action to Find the Commit That Broke Your C++ Project&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/superuser038" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F4206563%2F098e1a57-735e-44df-907f-051184aa6cd7.jpg" alt="superuser038 profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/superuser038" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Andrew Jokovich
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Andrew Jokovich
                
                
              
              &lt;div id="story-author-preview-content-4915467" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/superuser038" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F4206563%2F098e1a57-735e-44df-907f-051184aa6cd7.jpg" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Andrew Jokovich&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/superuser038/show-dev-i-built-a-bayesian-github-action-to-find-the-commit-that-broke-your-c-project-2lo8" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Oct 25&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/superuser038/show-dev-i-built-a-bayesian-github-action-to-find-the-commit-that-broke-your-c-project-2lo8" id="article-link-4915467"&gt;
          Show DEV: I Built a Bayesian GitHub Action to Find the Commit That Broke Your C++ Project
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag crayons-tag--filled  " href="/t/showdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;showdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/cpp"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;cpp&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/githubactions"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;githubactions&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/superuser038/show-dev-i-built-a-bayesian-github-action-to-find-the-commit-that-broke-your-c-project-2lo8" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/raised-hands-74b2099fd66a39f2d7eed9305ee0f4553df0eb7b4f11b01b6b1b499973048fe5.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;4&lt;span class="hidden s:inline"&gt;&amp;nbsp;reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/superuser038/show-dev-i-built-a-bayesian-github-action-to-find-the-commit-that-broke-your-c-project-2lo8#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              1&lt;span class="hidden s:inline"&gt;&amp;nbsp;comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            3 min read
          &lt;/small&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>automation</category>
      <category>github</category>
      <category>githubactions</category>
      <category>showdev</category>
    </item>
    <item>
      <title>Show DEV: I Built a Bayesian GitHub Action to Find the Commit That Broke Your C++ Project</title>
      <dc:creator>Andrew Jokovich</dc:creator>
      <pubDate>Sun, 25 Oct 2026 13:20:25 +0000</pubDate>
      <link>https://dev.to/superuser038/show-dev-i-built-a-bayesian-github-action-to-find-the-commit-that-broke-your-c-project-2lo8</link>
      <guid>https://dev.to/superuser038/show-dev-i-built-a-bayesian-github-action-to-find-the-commit-that-broke-your-c-project-2lo8</guid>
      <description>&lt;h1&gt;
  
  
  Show DEV: I Built a Bayesian GitHub Action to Find the Commit That Broke Your C++ Build
&lt;/h1&gt;

&lt;p&gt;Hey DEV community! 👋&lt;/p&gt;

&lt;p&gt;I've been experimenting with probability theory and wanted to see whether &lt;strong&gt;Bayes' theorem could help identify which commit caused a failed CI build&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;So I built &lt;strong&gt;BayesCI&lt;/strong&gt;, an open-source GitHub Action powered by a small Bayesian engine written in C, with Python handling Git analysis and compiler diagnostics.&lt;/p&gt;

&lt;h3&gt;
  
  
  The problem
&lt;/h3&gt;

&lt;p&gt;Imagine you've made several commits, pushed your changes, and suddenly your C++ build fails:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;undefined reference to `calculate_total'
collect2: error: ld returned 1 exit status
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The compiler tells you what failed, but not necessarily which commit introduced the problem.&lt;/p&gt;

&lt;p&gt;That's what BayesCI tries to help with.&lt;/p&gt;

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

&lt;p&gt;BayesCI:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Reads GCC, Clang, linker, and CMake diagnostics.&lt;/li&gt;
&lt;li&gt;Examines commits since the last successful build.&lt;/li&gt;
&lt;li&gt;Analyzes changed files, symbols, lines, and build configuration.&lt;/li&gt;
&lt;li&gt;Uses Bayesian ranking to identify suspicious commits.&lt;/li&gt;
&lt;li&gt;Displays the results directly in GitHub Actions Summary.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No paid AI APIs or external services required.&lt;/p&gt;

&lt;p&gt;How will it be shown in user experience&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%2Fwvhbmvcoe496pse8ax6w.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%2Fwvhbmvcoe496pse8ax6w.png" alt=" " width="800" height="645"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Why did I choose C for the core?
&lt;/h3&gt;

&lt;p&gt;I intentionally separated the Bayesian computation engine from the log parsing logic.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The idea was to keep the mathematical core independent of any particular programming language or CI system.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Right now, Python handles compiler diagnostics and Git analysis, while C performs the Bayesian calculations.&lt;/p&gt;

&lt;p&gt;But what if someone wants to implement their own parser? Or integrate the ranking engine into a completely different tool?&lt;/p&gt;

&lt;p&gt;That's exactly why I chose C.&lt;/p&gt;

&lt;p&gt;You can compile the core as a shared library (&lt;code&gt;.dll&lt;/code&gt; on Windows or &lt;code&gt;.so&lt;/code&gt; on Linux) and call it from another language through its C interface.&lt;/p&gt;

&lt;p&gt;Want to write your own log parser in Rust? Go ahead.&lt;/p&gt;

&lt;p&gt;Want to build a GUI in C#? You can reuse the same computational core.&lt;/p&gt;

&lt;p&gt;Want to replace my Python implementation entirely? That's fine too.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The parser is replaceable. The mathematical engine is reusable.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Does it work?
&lt;/h3&gt;

&lt;p&gt;I tested it on 20 synthetic failure scenarios:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;20/20&lt;/strong&gt; — diagnostics successfully parsed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;19/20&lt;/strong&gt; — culprit appeared in the displayed Top 3.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;11/20&lt;/strong&gt; — culprit was the unambiguous Top-1 result.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are synthetic tests, not real-world accuracy guarantees. The reported scores are heuristic relative rankings, not calibrated probabilities.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why I think this is useful
&lt;/h3&gt;

&lt;p&gt;Especially with AI-assisted coding, it's easy to generate multiple changes before discovering that a build has broken.&lt;/p&gt;

&lt;p&gt;BayesCI can help narrow down the investigation and provide more useful context for tools like Claude Code or Cursor.&lt;/p&gt;

&lt;h3&gt;
  
  
  Everyone is welcome — KISS &amp;amp; Install and Forget
&lt;/h3&gt;

&lt;p&gt;I want BayesCI to be a genuinely community-driven open-source project.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;At this early stage, I'm welcoming contributions from absolutely anyone, regardless of experience level.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Are you a high school student? A university student? A beginner who just learned their first programming language? Or an experienced developer?&lt;/p&gt;

&lt;p&gt;I don't care about your background. If you have an idea, you're welcome here.&lt;/p&gt;

&lt;p&gt;Fork the repository, experiment, open issues, submit pull requests, or build something completely different on top of the project.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I'm open to contributions of all kinds. My main concern during review is security, not whether you're an experienced programmer or whether your implementation matches my personal preferences.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Want to write a parser in Java? Do it.&lt;/p&gt;

&lt;p&gt;Prefer Rust, Go, C#, JavaScript, or something else? Go for it.&lt;/p&gt;

&lt;p&gt;Want to build a desktop GUI, web dashboard, or your own CI integration? That's awesome.&lt;/p&gt;

&lt;p&gt;You can simply use the existing C computational engine as a shared library and build everything else however you like.&lt;/p&gt;

&lt;p&gt;And if you're stuck, feel free to ask questions. I'll do my best to help.&lt;/p&gt;

&lt;p&gt;The project follows two core principles:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. KISS — Keep It Simple, Stupid.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The mathematical core should remain small, understandable, and lightweight. I don't want unnecessary abstractions, complicated dependencies, or complexity just for the sake of complexity.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Install and Forget.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For end users, the experience should be as simple as possible:&lt;/p&gt;

&lt;p&gt;Install BayesCI once, configure it, and forget about it.&lt;/p&gt;

&lt;p&gt;When a supported CI build fails, BayesCI should automatically analyze the failure and provide useful results without requiring constant manual intervention.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Freedom for contributors. Simplicity for users.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That's the philosophy I want to build this project around.&lt;/p&gt;

&lt;h3&gt;
  
  
  Try it out
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/austinkilla228-art/BayesCI" rel="noopener noreferrer"&gt;https://github.com/austinkilla228-art/BayesCI&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stable release:&lt;/strong&gt; &lt;code&gt;v1.0.0&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The project is fully open source and open to contributions.&lt;/p&gt;

&lt;p&gt;Feel free to fork it, experiment with the C engine, create alternative implementations, or submit your ideas.&lt;/p&gt;

&lt;p&gt;I'm particularly interested in feedback on the Bayesian model, diagnostic accuracy, and possible integrations.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What do you think? Would this be useful in your CI workflow?&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>showdev</category>
      <category>cpp</category>
      <category>githubactions</category>
    </item>
  </channel>
</rss>
