<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Efe Genc - Writing</title>
    <link>https://efegenc.me/writing/</link>
    <description>Essays by Efe Genc on building production systems — proactive AI, autonomous pipelines, ownership boundaries, and the things worth not shipping.</description>
    <language>en-gb</language>
    <lastBuildDate>Sat, 24 Oct 2026 12:00:00 GMT</lastBuildDate>
    <atom:link href="https://efegenc.me/feed.xml" rel="self" type="application/rss+xml"/>
    <item>
      <title>surviving-lines scored highest in a six-arm code-ownership benchmark</title>
      <link>https://dev.to/efe_genc/surviving-lines-scored-highest-in-a-six-arm-code-ownership-benchmark-5de5</link>
      <description>surviving-lines against five other ways of answering who wrote the code still in a repository, on public tasks and on a sealed set written by someone who never saw the tool, with the limits of each result.</description>
      <pubDate>Sat, 24 Oct 2026 12:00:00 GMT</pubDate>
      <guid isPermaLink="true">https://dev.to/efe_genc/surviving-lines-scored-highest-in-a-six-arm-code-ownership-benchmark-5de5</guid>
    </item>
    <item>
      <title>Humanizer has about 60,000 stars. On 12 public tasks my linter plugin scored 2.67 higher</title>
      <link>https://dev.to/efe_genc/humanizer-has-about-60000-stars-on-12-public-tasks-my-linter-plugin-scored-267-higher-2cdg</link>
      <description>ai-slop-linter against six other tools and no tool on 12 public rewriting tasks, graded blind, and the held-out set where the top tools tied.</description>
      <pubDate>Sat, 24 Oct 2026 12:00:00 GMT</pubDate>
      <guid isPermaLink="true">https://dev.to/efe_genc/humanizer-has-about-60000-stars-on-12-public-tasks-my-linter-plugin-scored-267-higher-2cdg</guid>
    </item>
    <item>
      <title>Twelve Checks That Could Not Fail</title>
      <link>https://efegenc.me/writing/twelve-checks-that-could-not-fail/</link>
      <description>A reader pointed out that three characters in my release script were what made a broken check pass. He was right, and I measured it. Then I counted how many other checks in my own repositories had the same shape: twelve, in one week, all mine.</description>
      <pubDate>Thu, 17 Sep 2026 12:00:00 GMT</pubDate>
      <guid isPermaLink="true">https://efegenc.me/writing/twelve-checks-that-could-not-fail/</guid>
    </item>
    <item>
      <title>The Smoke Test That Could Not Fail</title>
      <link>https://efegenc.me/writing/the-smoke-test-that-could-not-fail/</link>
      <description>A release pipeline ended with a step that installed the published package on three operating systems and confirmed the version. It reported success against a version the registry was not serving, because the check looked for the version string anywhere in the output and the failure message quotes it back. Five more checks in the same repositories had the same shape.</description>
      <pubDate>Sun, 13 Sep 2026 12:00:00 GMT</pubDate>
      <guid isPermaLink="true">https://efegenc.me/writing/the-smoke-test-that-could-not-fail/</guid>
    </item>
    <item>
      <title>I wrote a linter for AI-writing tells. It gave one of my own READMEs a C.</title>
      <link>https://dev.to/efe_genc/i-wrote-a-linter-for-ai-writing-tells-it-gave-one-of-my-own-readmes-a-c-1mmf</link>
      <description>The ai-slop-linter tool: rule-based detectors for the tells that mark machine-written prose, run against my own repositories first, with what the grade cannot tell you printed alongside it.</description>
      <pubDate>Sat, 12 Sep 2026 12:00:00 GMT</pubDate>
      <guid isPermaLink="true">https://dev.to/efe_genc/i-wrote-a-linter-for-ai-writing-tells-it-gave-one-of-my-own-readmes-a-c-1mmf</guid>
    </item>
    <item>
      <title>I made my coding agent explain every change to the customer. Here is the skill.</title>
      <link>https://dev.to/efe_genc/i-made-my-coding-agent-explain-every-change-to-the-customer-here-is-the-skill-3gcc</link>
      <description>The product-engineer skill: every commit carries a plain-language section for the person paying for the work, and why that turned out to change what got built, not only how it was described.</description>
      <pubDate>Sat, 12 Sep 2026 12:00:00 GMT</pubDate>
      <guid isPermaLink="true">https://dev.to/efe_genc/i-made-my-coding-agent-explain-every-change-to-the-customer-here-is-the-skill-3gcc</guid>
    </item>
    <item>
      <title>I open-sourced the part of a proactive AI assistant that decides when not to speak</title>
      <link>https://dev.to/efe_genc/i-open-sourced-the-part-of-a-proactive-ai-assistant-that-decides-when-not-to-speak-36fe</link>
      <description>The proactive-gate library: the suppressing half of a proactive assistant as a zero-dependency decision function, with the reasons it returns and the conformance fixtures two languages are held to.</description>
      <pubDate>Sat, 12 Sep 2026 12:00:00 GMT</pubDate>
      <guid isPermaLink="true">https://dev.to/efe_genc/i-open-sourced-the-part-of-a-proactive-ai-assistant-that-decides-when-not-to-speak-36fe</guid>
    </item>
    <item>
      <title>Who really owns this code? A git blame sampler you can run in one command</title>
      <link>https://dev.to/efe_genc/who-really-owns-this-code-a-git-blame-sampler-you-can-run-in-one-command-3ph1</link>
      <description>The surviving-lines tool, published on npm: share of surviving lines next to commit share over a deterministic file sample, with the caveats printed under every table.</description>
      <pubDate>Sat, 05 Sep 2026 12:00:00 GMT</pubDate>
      <guid isPermaLink="true">https://dev.to/efe_genc/who-really-owns-this-code-a-git-blame-sampler-you-can-run-in-one-command-3ph1</guid>
    </item>
    <item>
      <title>95% Less Water Is a Control Problem</title>
      <link>https://efegenc.me/writing/ninety-five-percent-less-water/</link>
      <description>Vertical farming&apos;s sustainability promises, 95% less water, zero pesticide, eight times the yield, are controlled rather than grown. What a TÜBİTAK-funded project&apos;s committed targets taught me about where the climate value of agtech lives: in the software layer holding the set points.</description>
      <pubDate>Sun, 02 Aug 2026 12:00:00 GMT</pubDate>
      <guid isPermaLink="true">https://efegenc.me/writing/ninety-five-percent-less-water/</guid>
    </item>
    <item>
      <title>The Controller You Can Read</title>
      <link>https://efegenc.me/writing/the-controller-you-can-read/</link>
      <description>Inside a sealed vertical farm with no logged history, I chose fuzzy logic over a learned model, because a control decision you cannot explain is a crop you cannot diagnose. When rules beat models, why traceability was the deciding property, and the condition under which the choice expires.</description>
      <pubDate>Sun, 02 Aug 2026 12:00:00 GMT</pubDate>
      <guid isPermaLink="true">https://efegenc.me/writing/the-controller-you-can-read/</guid>
    </item>
    <item>
      <title>A Token Budget Is a Product Decision</title>
      <link>https://efegenc.me/writing/a-token-budget-is-a-product-decision/</link>
      <description>Every model call has a fixed budget and there is always more relevant material than fits. What a system leaves out is a product choice, so the five-layer allocator I built treats it as a declared policy per use case instead of the tail of a slice.</description>
      <pubDate>Thu, 30 Jul 2026 12:00:00 GMT</pubDate>
      <guid isPermaLink="true">https://efegenc.me/writing/a-token-budget-is-a-product-decision/</guid>
    </item>
    <item>
      <title>An Interview Inside the Browser</title>
      <link>https://efegenc.me/writing/an-interview-inside-the-browser/</link>
      <description>Real-time video, an embedded code editor and proctoring, running together in one tab while someone is being assessed for a job. Three subsystems that each assume they own the main thread, and the loading decision I had backwards to begin with.</description>
      <pubDate>Thu, 30 Jul 2026 12:00:00 GMT</pubDate>
      <guid isPermaLink="true">https://efegenc.me/writing/an-interview-inside-the-browser/</guid>
    </item>
    <item>
      <title>Default-Deny Rights in an Autonomous Documentary Pipeline</title>
      <link>https://efegenc.me/writing/default-deny-rights-documentary-pipeline/</link>
      <description>A pipeline that publishes without a human in the loop has to make rights a condition of entry, not a review step. The failure mode you choose is the design decision. The check you write is only the implementation.</description>
      <pubDate>Thu, 30 Jul 2026 12:00:00 GMT</pubDate>
      <guid isPermaLink="true">https://efegenc.me/writing/default-deny-rights-documentary-pipeline/</guid>
    </item>
    <item>
      <title>The Hardest Part of a Proactive Assistant Is Knowing When Not to Speak</title>
      <link>https://efegenc.me/writing/knowing-when-not-to-speak/</link>
      <description>A proactive assistant pays far more for a bad interruption than it earns from a good one, so suppression deserves to be architecture rather than a threshold. What I built instead: one delivery gate, twelve ordered checks, and every rejection logged with its reason.</description>
      <pubDate>Thu, 30 Jul 2026 12:00:00 GMT</pubDate>
      <guid isPermaLink="true">https://efegenc.me/writing/knowing-when-not-to-speak/</guid>
    </item>
    <item>
      <title>One Outbox Record per Notification</title>
      <link>https://efegenc.me/writing/one-outbox-record-per-notification/</link>
      <description>Two independent producers for push and in-app notifications will eventually disagree, and the disagreement is a category of bug rather than an instance of one. Making them the same record made divergence structurally impossible, and it cost me something I think was worth paying.</description>
      <pubDate>Thu, 30 Jul 2026 12:00:00 GMT</pubDate>
      <guid isPermaLink="true">https://efegenc.me/writing/one-outbox-record-per-notification/</guid>
    </item>
    <item>
      <title>How to Show Engineering Ownership When the Repositories Are Private</title>
      <link>https://efegenc.me/writing/showing-ownership-private-repositories/</link>
      <description>Every repository I have shipped production code into belongs to somebody else. This is the method I use to make ownership claims that can be judged rather than believed, and the claims it forces me to make smaller.</description>
      <pubDate>Thu, 30 Jul 2026 12:00:00 GMT</pubDate>
      <guid isPermaLink="true">https://efegenc.me/writing/showing-ownership-private-repositories/</guid>
    </item>
    <item>
      <title>Surviving Your AI Providers</title>
      <link>https://efegenc.me/writing/surviving-your-ai-providers/</link>
      <description>A retry loop around a dead provider multiplies delay instead of providing a fallback. One gateway, a capability-to-tier router, a cross-provider chain and a breaker per provider, plus the parts of this design I still count as a cost rather than a solved problem.</description>
      <pubDate>Thu, 30 Jul 2026 12:00:00 GMT</pubDate>
      <guid isPermaLink="true">https://efegenc.me/writing/surviving-your-ai-providers/</guid>
    </item>
    <item>
      <title>The Feature I Chose Not to Ship</title>
      <link>https://efegenc.me/writing/the-feature-i-chose-not-to-ship/</link>
      <description>An over-the-air update splash screen that would have covered a narrow gap during app boot, and degraded every background-to-foreground switch instead. Reproducing it on a real device, reading the dependency, and reverting.</description>
      <pubDate>Thu, 30 Jul 2026 12:00:00 GMT</pubDate>
      <guid isPermaLink="true">https://efegenc.me/writing/the-feature-i-chose-not-to-ship/</guid>
    </item>
    <item>
      <title>The Spec Is the Fast Path</title>
      <link>https://efegenc.me/writing/the-spec-is-the-fast-path/</link>
      <description>The received wisdom is that writing the design down is what you sacrifice for speed. Over one twelve-month tenure the documents and the release cadence grew together: 255 specifications, 207 plans, 17 runbooks and 377 production releases. This is my account of why those two things were never in tension.</description>
      <pubDate>Thu, 30 Jul 2026 12:00:00 GMT</pubDate>
      <guid isPermaLink="true">https://efegenc.me/writing/the-spec-is-the-fast-path/</guid>
    </item>
  </channel>
</rss>