<?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://efe-genc-portfolio.vercel.app/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>Sun, 02 Aug 2026 12:00:00 GMT</lastBuildDate>
    <atom:link href="https://efe-genc-portfolio.vercel.app/feed.xml" rel="self" type="application/rss+xml"/>
    <item>
      <title>95% Less Water Is a Control Problem</title>
      <link>https://efe-genc-portfolio.vercel.app/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://efe-genc-portfolio.vercel.app/writing/ninety-five-percent-less-water/</guid>
    </item>
    <item>
      <title>The Controller You Can Read</title>
      <link>https://efe-genc-portfolio.vercel.app/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://efe-genc-portfolio.vercel.app/writing/the-controller-you-can-read/</guid>
    </item>
    <item>
      <title>A Token Budget Is a Product Decision</title>
      <link>https://efe-genc-portfolio.vercel.app/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://efe-genc-portfolio.vercel.app/writing/a-token-budget-is-a-product-decision/</guid>
    </item>
    <item>
      <title>An Interview Inside the Browser</title>
      <link>https://efe-genc-portfolio.vercel.app/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://efe-genc-portfolio.vercel.app/writing/an-interview-inside-the-browser/</guid>
    </item>
    <item>
      <title>Default-Deny Rights in an Autonomous Documentary Pipeline</title>
      <link>https://efe-genc-portfolio.vercel.app/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://efe-genc-portfolio.vercel.app/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://efe-genc-portfolio.vercel.app/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://efe-genc-portfolio.vercel.app/writing/knowing-when-not-to-speak/</guid>
    </item>
    <item>
      <title>One Outbox Record per Notification</title>
      <link>https://efe-genc-portfolio.vercel.app/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://efe-genc-portfolio.vercel.app/writing/one-outbox-record-per-notification/</guid>
    </item>
    <item>
      <title>How to Show Engineering Ownership When the Repositories Are Private</title>
      <link>https://efe-genc-portfolio.vercel.app/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://efe-genc-portfolio.vercel.app/writing/showing-ownership-private-repositories/</guid>
    </item>
    <item>
      <title>Surviving Your AI Providers</title>
      <link>https://efe-genc-portfolio.vercel.app/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://efe-genc-portfolio.vercel.app/writing/surviving-your-ai-providers/</guid>
    </item>
    <item>
      <title>The Feature I Chose Not to Ship</title>
      <link>https://efe-genc-portfolio.vercel.app/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://efe-genc-portfolio.vercel.app/writing/the-feature-i-chose-not-to-ship/</guid>
    </item>
    <item>
      <title>The Spec Is the Fast Path</title>
      <link>https://efe-genc-portfolio.vercel.app/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://efe-genc-portfolio.vercel.app/writing/the-spec-is-the-fast-path/</guid>
    </item>
  </channel>
</rss>