<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1">
  <url>
    <loc>https://huseyinkaplan.dev/</loc>
    <lastmod>2026-10-04</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/about/face.webp</image:loc>
      <image:title>Hüseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/work/switchyard.webp</image:loc>
      <image:title>Switchyard handoff screen in demo mode with two chats marked Reply observed</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/work/case-admin.webp</image:loc>
      <image:title>Admin console demo with overview metrics, invoices and tickets</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/work/case-search.webp</image:loc>
      <image:title>Search overlay demo showing results for a query on a synthetic store</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/work/case-reco.webp</image:loc>
      <image:title>Recommended products slider demo cloning a storefront product carousel</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/about/</loc>
    <lastmod>2026-10-04</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/about/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/hakkimda/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/about/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Portrait of Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/about/polaroid-desk.webp</image:loc>
      <image:title>A desk at night with a laptop, a monitor full of code and an open notebook</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/about/polaroid-city.webp</image:loc>
      <image:title>Huseyin walking along a metro platform in Istanbul</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/about/polaroid-book.webp</image:loc>
      <image:title>An open book page that reads: If you want it, work for it</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/logos/kobisi.png</image:loc>
      <image:title>Kobisi logo</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/logos/harvard.png</image:loc>
      <image:title>Harvard University arms</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/projects/</loc>
    <lastmod>2026-10-04</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/projects/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/projeler/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/projects/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/work/switchyard.webp</image:loc>
      <image:title>Switchyard conversations view in demo mode with a Codex chat that continues a Claude Code session after its usage limit</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/work/case-admin.webp</image:loc>
      <image:title>Admin console demo with overview metrics, invoices and tickets</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/work/case-search.webp</image:loc>
      <image:title>Search overlay demo showing results for a query on a synthetic store</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/work/case-rollout.webp</image:loc>
      <image:title>Rollout CLI demo with a terminal and a fleet status board</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/work/case-reco.webp</image:loc>
      <image:title>Recommended products slider demo cloning a storefront product carousel</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/work/case-widgets.webp</image:loc>
      <image:title>Daily deal widget builder demo with settings and a storefront preview</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/work/case-email.webp</image:loc>
      <image:title>Email builder demo with a product block filled from a URL</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/work/case-panel.webp</image:loc>
      <image:title>App push dashboard demo with a send-time heatmap</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/work/case-push.webp</image:loc>
      <image:title>Mobile push demo with a campaign composer, delivery pipeline and device</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/work/relay-desk.webp</image:loc>
      <image:title>Relay Desk ops desk with priority inbox and answer workspace</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/work/agent-bench.webp</image:loc>
      <image:title>Agent Runtime Bench landing page</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/work/reliability-lab.webp</image:loc>
      <image:title>LLM Reliability Lab scored suite</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/work/rag-evals.webp</image:loc>
      <image:title>Production RAG and Evals reference page</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/insights/</loc>
    <lastmod>2026-10-04</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/"/>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/insights/route-by-what-a-wrong-answer-costs/</loc>
    <lastmod>2026-10-29</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/route-by-what-a-wrong-answer-costs/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/route-by-what-a-wrong-answer-costs/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/route-by-what-a-wrong-answer-costs/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/cover.webp</image:loc>
      <image:title>Animated routing diagram: an incoming task, a router asking what if it's wrong, and five lanes from a script to Opus with high effort, ordered by the cost of a mistake</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Four gates on a lane: dry-run report, apply, log every row, rerun what failed, with a green block passing the last gate</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Switchyard conversations view in demo mode: a Codex chat that picks up a Claude Code session after its usage limit, with the project list on the left</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/when-an-average-hides-a-failure/card.webp</image:loc>
      <image:title>The evaluator playground showing a 0.75 average passing at a 0.75 threshold while the required-check gate fails the abstention policy.</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/insights/moving-crm-history-with-scripts/</loc>
    <lastmod>2026-11-02</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/moving-crm-history-with-scripts/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/moving-crm-history-with-scripts/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/moving-crm-history-with-scripts/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/cover.webp</image:loc>
      <image:title>Four gates on a lane: dry-run report, apply, log every row, rerun what failed, with a green block passing the last gate</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/log-rerun.webp</image:loc>
      <image:title>Hand-drawn diagram with sample data: run 1 logs six records, two fail with 401 session expired and one with 400 invalid date. Run 2 logs in again, resends only those three after fixing the date, and skips the three that already returned 200. A note says rollback reads the same log.</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/dirty-data.webp</image:loc>
      <image:title>Hand-drawn table with sample data: a date of 1111-11-11 becomes empty with no note; an email of x becomes a placeholder and the note keeps the old value; a missing last name becomes a dash with a note; an account manager without an active account is left empty and named in a note.</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Animated routing diagram: an incoming task, a router asking what if it's wrong, and five lanes from a script to Opus with high effort, ordered by the cost of a mistake</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Switchyard conversations view in demo mode: a Codex chat that picks up a Claude Code session after its usage limit, with the project list on the left</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/when-an-average-hides-a-failure/card.webp</image:loc>
      <image:title>The evaluator playground showing a 0.75 average passing at a 0.75 threshold while the required-check gate fails the abstention policy.</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/insights/switchyard-handoff-when-the-limit-hits/</loc>
    <lastmod>2026-10-23</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/switchyard-handoff-when-the-limit-hits/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/switchyard-handoff-when-the-limit-hits/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/switchyard-handoff-when-the-limit-hits/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/cover.webp</image:loc>
      <image:title>Switchyard conversations view in demo mode: a Codex chat that picks up a Claude Code session after its usage limit, with the project list on the left</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/schedules.webp</image:loc>
      <image:title>Switchyard scheduled tasks view in demo mode: a nightly dependency audit with three runs, one marked No assistant reply in the archive, this run may have done nothing</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Animated routing diagram: an incoming task, a router asking what if it's wrong, and five lanes from a script to Opus with high effort, ordered by the cost of a mistake</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Four gates on a lane: dry-run report, apply, log every row, rerun what failed, with a green block passing the last gate</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/when-an-average-hides-a-failure/card.webp</image:loc>
      <image:title>The evaluator playground showing a 0.75 average passing at a 0.75 threshold while the required-check gate fails the abstention policy.</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/insights/when-an-average-hides-a-failure/</loc>
    <lastmod>2026-10-19</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/when-an-average-hides-a-failure/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/when-an-average-hides-a-failure/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/when-an-average-hides-a-failure/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/when-an-average-hides-a-failure/cover.webp</image:loc>
      <image:title>The evaluator playground showing a 0.75 average passing at a 0.75 threshold while the required-check gate fails the abstention policy.</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Animated routing diagram: an incoming task, a router asking what if it's wrong, and five lanes from a script to Opus with high effort, ordered by the cost of a mistake</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Four gates on a lane: dry-run report, apply, log every row, rerun what failed, with a green block passing the last gate</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Switchyard conversations view in demo mode: a Codex chat that picks up a Claude Code session after its usage limit, with the project list on the left</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/insights/smooth-without-the-wait/</loc>
    <lastmod>2026-10-17</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/smooth-without-the-wait/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/smooth-without-the-wait/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/smooth-without-the-wait/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Animated routing diagram: an incoming task, a router asking what if it's wrong, and five lanes from a script to Opus with high effort, ordered by the cost of a mistake</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Four gates on a lane: dry-run report, apply, log every row, rerun what failed, with a green block passing the last gate</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Switchyard conversations view in demo mode: a Codex chat that picks up a Claude Code session after its usage limit, with the project list on the left</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/insights/a-word-or-a-number/</loc>
    <lastmod>2026-10-14</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/a-word-or-a-number/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/a-word-or-a-number/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/a-word-or-a-number/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/a-word-or-a-number/cover.webp</image:loc>
      <image:title>Line drawing of a score axis from 0 to 1 with sixty dots in two groups, an empty band between them, one highlighted dot inside the band at 0.35 and a dashed threshold line at 0.5</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Animated routing diagram: an incoming task, a router asking what if it's wrong, and five lanes from a script to Opus with high effort, ordered by the cost of a mistake</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Four gates on a lane: dry-run report, apply, log every row, rerun what failed, with a green block passing the last gate</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Switchyard conversations view in demo mode: a Codex chat that picks up a Claude Code session after its usage limit, with the project list on the left</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/insights/a-results-page-on-someone-elses-storefront/</loc>
    <lastmod>2026-10-13</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/a-results-page-on-someone-elses-storefront/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/a-results-page-on-someone-elses-storefront/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/a-results-page-on-someone-elses-storefront/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/a-results-page-on-someone-elses-storefront/cover.webp</image:loc>
      <image:title>Line drawing of one core script block between four config cards and four storefront plates, one pair highlighted</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Animated routing diagram: an incoming task, a router asking what if it's wrong, and five lanes from a script to Opus with high effort, ordered by the cost of a mistake</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Four gates on a lane: dry-run report, apply, log every row, rerun what failed, with a green block passing the last gate</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Switchyard conversations view in demo mode: a Codex chat that picks up a Claude Code session after its usage limit, with the project list on the left</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/insights/motion-graphics-written-as-code/</loc>
    <lastmod>2026-10-13</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/motion-graphics-written-as-code/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/motion-graphics-written-as-code/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/motion-graphics-written-as-code/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/motion-graphics-written-as-code/cover.webp</image:loc>
      <image:title>Timeline diagram with three keyframe tracks and a playhead, next to a small isometric lane the tracks drive</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Animated routing diagram: an incoming task, a router asking what if it's wrong, and five lanes from a script to Opus with high effort, ordered by the cost of a mistake</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Four gates on a lane: dry-run report, apply, log every row, rerun what failed, with a green block passing the last gate</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Switchyard conversations view in demo mode: a Codex chat that picks up a Claude Code session after its usage limit, with the project list on the left</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/insights/same-model-different-workflow/</loc>
    <lastmod>2026-10-13</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/same-model-different-workflow/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/same-model-different-workflow/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/same-model-different-workflow/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/same-model-different-workflow/cover.webp</image:loc>
      <image:title>Line drawing of a lane with four numbered gates labelled reproduce, give context, target and validate, with a block that has passed the last one</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Animated routing diagram: an incoming task, a router asking what if it's wrong, and five lanes from a script to Opus with high effort, ordered by the cost of a mistake</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Four gates on a lane: dry-run report, apply, log every row, rerun what failed, with a green block passing the last gate</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Switchyard conversations view in demo mode: a Codex chat that picks up a Claude Code session after its usage limit, with the project list on the left</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/insights/the-widget-that-worked-on-the-second-visit/</loc>
    <lastmod>2026-10-13</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/the-widget-that-worked-on-the-second-visit/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/the-widget-that-worked-on-the-second-visit/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/the-widget-that-worked-on-the-second-visit/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/the-widget-that-worked-on-the-second-visit/cover.webp</image:loc>
      <image:title>Line drawing of two lanes leading to a storage block: a push script token and a widget token that waits at a line until the value is saved</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Animated routing diagram: an incoming task, a router asking what if it's wrong, and five lanes from a script to Opus with high effort, ordered by the cost of a mistake</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Four gates on a lane: dry-run report, apply, log every row, rerun what failed, with a green block passing the last gate</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Switchyard conversations view in demo mode: a Codex chat that picks up a Claude Code session after its usage limit, with the project list on the left</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/insights/a-guard-against-saving-to-the-wrong-brand/</loc>
    <lastmod>2026-10-11</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/a-guard-against-saving-to-the-wrong-brand/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/a-guard-against-saving-to-the-wrong-brand/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/a-guard-against-saving-to-the-wrong-brand/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/a-guard-against-saving-to-the-wrong-brand/cover.webp</image:loc>
      <image:title>Two panel tabs for different brands, one covered by a brand mismatch dialog, next to a grid of dashboards with empty states</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Animated routing diagram: an incoming task, a router asking what if it's wrong, and five lanes from a script to Opus with high effort, ordered by the cost of a mistake</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Four gates on a lane: dry-run report, apply, log every row, rerun what failed, with a green block passing the last gate</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Switchyard conversations view in demo mode: a Codex chat that picks up a Claude Code session after its usage limit, with the project list on the left</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/insights/a-product-url-becomes-an-email-block/</loc>
    <lastmod>2026-10-11</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/a-product-url-becomes-an-email-block/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/a-product-url-becomes-an-email-block/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/a-product-url-becomes-an-email-block/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/a-product-url-becomes-an-email-block/cover.webp</image:loc>
      <image:title>Email builder with a block palette, a two-column product block filled from a pasted URL and an inspector panel</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Animated routing diagram: an incoming task, a router asking what if it's wrong, and five lanes from a script to Opus with high effort, ordered by the cost of a mistake</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Four gates on a lane: dry-run report, apply, log every row, rerun what failed, with a green block passing the last gate</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Switchyard conversations view in demo mode: a Codex chat that picks up a Claude Code session after its usage limit, with the project list on the left</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/insights/rolling-out-search-to-200-brands/</loc>
    <lastmod>2026-10-11</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/rolling-out-search-to-200-brands/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/rolling-out-search-to-200-brands/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/rolling-out-search-to-200-brands/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/rolling-out-search-to-200-brands/cover.webp</image:loc>
      <image:title>Terminal running discover, plan, apply and verify next to a status board of brands marked ready, disabled or search-empty</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Animated routing diagram: an incoming task, a router asking what if it's wrong, and five lanes from a script to Opus with high effort, ordered by the cost of a mistake</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Four gates on a lane: dry-run report, apply, log every row, rerun what failed, with a green block passing the last gate</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Switchyard conversations view in demo mode: a Codex chat that picks up a Claude Code session after its usage limit, with the project list on the left</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/insights/building-an-admin-platform-from-scratch/</loc>
    <lastmod>2026-10-06</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/building-an-admin-platform-from-scratch/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/building-an-admin-platform-from-scratch/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/building-an-admin-platform-from-scratch/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/building-an-admin-platform-from-scratch/cover.webp</image:loc>
      <image:title>Admin console demo with synthetic data: sidebar, KPI cards with sparklines, recent invoices and tickets</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Animated routing diagram: an incoming task, a router asking what if it's wrong, and five lanes from a script to Opus with high effort, ordered by the cost of a mistake</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Four gates on a lane: dry-run report, apply, log every row, rerun what failed, with a green block passing the last gate</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Switchyard conversations view in demo mode: a Codex chat that picks up a Claude Code session after its usage limit, with the project list on the left</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/insights/compile-the-widget-dont-interpret-it/</loc>
    <lastmod>2026-10-06</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/compile-the-widget-dont-interpret-it/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/compile-the-widget-dont-interpret-it/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/compile-the-widget-dont-interpret-it/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/compile-the-widget-dont-interpret-it/cover.webp</image:loc>
      <image:title>A settings panel on the left turning into a single storefront widget, with a live deal widget preview on the right</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Animated routing diagram: an incoming task, a router asking what if it's wrong, and five lanes from a script to Opus with high effort, ordered by the cost of a mistake</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Four gates on a lane: dry-run report, apply, log every row, rerun what failed, with a green block passing the last gate</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Switchyard conversations view in demo mode: a Codex chat that picks up a Claude Code session after its usage limit, with the project list on the left</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/insights/push-that-opens-the-right-screen/</loc>
    <lastmod>2026-10-06</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/push-that-opens-the-right-screen/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/push-that-opens-the-right-screen/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/push-that-opens-the-right-screen/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/push-that-opens-the-right-screen/cover.webp</image:loc>
      <image:title>A phone notification tap routed through foreground, background and cold start paths into one router that opens Home, Category, Product or Cart</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Animated routing diagram: an incoming task, a router asking what if it's wrong, and five lanes from a script to Opus with high effort, ordered by the cost of a mistake</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Four gates on a lane: dry-run report, apply, log every row, rerun what failed, with a green block passing the last gate</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Switchyard conversations view in demo mode: a Codex chat that picks up a Claude Code session after its usage limit, with the project list on the left</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/insights/recommendations-in-the-stores-own-design/</loc>
    <lastmod>2026-10-06</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/recommendations-in-the-stores-own-design/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/recommendations-in-the-stores-own-design/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/recommendations-in-the-stores-own-design/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/recommendations-in-the-stores-own-design/cover.webp</image:loc>
      <image:title>A store's own product card cloned into a recommendation carousel next to the original slider</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Animated routing diagram: an incoming task, a router asking what if it's wrong, and five lanes from a script to Opus with high effort, ordered by the cost of a mistake</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Four gates on a lane: dry-run report, apply, log every row, rerun what failed, with a green block passing the last gate</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Switchyard conversations view in demo mode: a Codex chat that picks up a Claude Code session after its usage limit, with the project list on the left</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/insights/search-overlay-on-200-storefronts/</loc>
    <lastmod>2026-10-06</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/search-overlay-on-200-storefronts/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/search-overlay-on-200-storefronts/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/search-overlay-on-200-storefronts/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/search-overlay-on-200-storefronts/cover.webp</image:loc>
      <image:title>Full-screen search overlay with product grid, category chips and a typed query, shown over a storefront</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Animated routing diagram: an incoming task, a router asking what if it's wrong, and five lanes from a script to Opus with high effort, ordered by the cost of a mistake</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Four gates on a lane: dry-run report, apply, log every row, rerun what failed, with a green block passing the last gate</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Switchyard conversations view in demo mode: a Codex chat that picks up a Claude Code session after its usage limit, with the project list on the left</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/insights/write-the-math/</loc>
    <lastmod>2026-10-04</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/write-the-math/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/write-the-math/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/write-the-math/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/write-the-math/cover.webp</image:loc>
      <image:title>LEGO pagoda and cherry blossom garden built by Claude Opus 5.5 in ldraw-nova: 2,175 parts, zero physics checks</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Animated routing diagram: an incoming task, a router asking what if it's wrong, and five lanes from a script to Opus with high effort, ordered by the cost of a mistake</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Four gates on a lane: dry-run report, apply, log every row, rerun what failed, with a green block passing the last gate</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Switchyard conversations view in demo mode: a Codex chat that picks up a Claude Code session after its usage limit, with the project list on the left</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/insights/notes-read-as-orders/</loc>
    <lastmod>2026-10-03</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/notes-read-as-orders/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/notes-read-as-orders/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/notes-read-as-orders/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/notes-read-as-orders/cover.webp</image:loc>
      <image:title>Misty mountain oil painting at dusk with a painter 1 note card from a Claude Opus painter chain on stillwet.</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Animated routing diagram: an incoming task, a router asking what if it's wrong, and five lanes from a script to Opus with high effort, ordered by the cost of a mistake</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Four gates on a lane: dry-run report, apply, log every row, rerun what failed, with a green block passing the last gate</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Switchyard conversations view in demo mode: a Codex chat that picks up a Claude Code session after its usage limit, with the project list on the left</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/insights/planner-writes-the-bill/</loc>
    <lastmod>2026-10-02</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/planner-writes-the-bill/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/planner-writes-the-bill/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/planner-writes-the-bill/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/planner-writes-the-bill/cover.webp</image:loc>
      <image:title>Pi 1.0 launch demo cost per model, Opus $0.071 vs Luna $0.004, with a checklist for splitting planner and implementer</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Animated routing diagram: an incoming task, a router asking what if it's wrong, and five lanes from a script to Opus with high effort, ordered by the cost of a mistake</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Four gates on a lane: dry-run report, apply, log every row, rerun what failed, with a green block passing the last gate</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Switchyard conversations view in demo mode: a Codex chat that picks up a Claude Code session after its usage limit, with the project list on the left</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/insights/isolates-to-microvms/</loc>
    <lastmod>2026-10-01</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/isolates-to-microvms/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/isolates-to-microvms/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/isolates-to-microvms/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/isolates-to-microvms/cover.webp</image:loc>
      <image:title>Card on Netlify Edge Functions: warm invocation median from 25 to 40 ms down to about 5, and edge path checks.</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Animated routing diagram: an incoming task, a router asking what if it's wrong, and five lanes from a script to Opus with high effort, ordered by the cost of a mistake</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Four gates on a lane: dry-run report, apply, log every row, rerun what failed, with a green block passing the last gate</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Switchyard conversations view in demo mode: a Codex chat that picks up a Claude Code session after its usage limit, with the project list on the left</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/insights/prefill-pays-the-wait/</loc>
    <lastmod>2026-10-01</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/prefill-pays-the-wait/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/prefill-pays-the-wait/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/prefill-pays-the-wait/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/prefill-pays-the-wait/cover.webp</image:loc>
      <image:title>Magnitude vs llama.cpp on M4 Pro at 64K context: one cold agent turn drops from 154 s to 135 s</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Animated routing diagram: an incoming task, a router asking what if it's wrong, and five lanes from a script to Opus with high effort, ordered by the cost of a mistake</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Four gates on a lane: dry-run report, apply, log every row, rerun what failed, with a green block passing the last gate</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Switchyard conversations view in demo mode: a Codex chat that picks up a Claude Code session after its usage limit, with the project list on the left</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/insights/warn-vs-stop/</loc>
    <lastmod>2026-10-01</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/warn-vs-stop/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/warn-vs-stop/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/warn-vs-stop/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/warn-vs-stop/cover.webp</image:loc>
      <image:title>Claude Code mods guide: Blast Radius holds rm -rf build, but $(...), aliases and scripts get past it, with a pre-install checklist</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Animated routing diagram: an incoming task, a router asking what if it's wrong, and five lanes from a script to Opus with high effort, ordered by the cost of a mistake</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Four gates on a lane: dry-run report, apply, log every row, rerun what failed, with a green block passing the last gate</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Switchyard conversations view in demo mode: a Codex chat that picks up a Claude Code session after its usage limit, with the project list on the left</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/insights/access-and-memory/</loc>
    <lastmod>2026-09-30</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/access-and-memory/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/access-and-memory/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/access-and-memory/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/access-and-memory/cover.webp</image:loc>
      <image:title>Card on OpenAI's Dots safety write-up: disconnecting an app stops new reads, plus four steps for agents with memory.</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Animated routing diagram: an incoming task, a router asking what if it's wrong, and five lanes from a script to Opus with high effort, ordered by the cost of a mistake</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Four gates on a lane: dry-run report, apply, log every row, rerun what failed, with a green block passing the last gate</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Switchyard conversations view in demo mode: a Codex chat that picks up a Claude Code session after its usage limit, with the project list on the left</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/insights/tokens-move-first/</loc>
    <lastmod>2026-09-30</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/tokens-move-first/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/tokens-move-first/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/tokens-move-first/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/tokens-move-first/cover.webp</image:loc>
      <image:title>livenerf validation on Opus 5.5: medium vs high effort cut accuracy 4 points and tokens 26%, while identical runs were 6 points apart</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Animated routing diagram: an incoming task, a router asking what if it's wrong, and five lanes from a script to Opus with high effort, ordered by the cost of a mistake</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Four gates on a lane: dry-run report, apply, log every row, rerun what failed, with a green block passing the last gate</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Switchyard conversations view in demo mode: a Codex chat that picks up a Claude Code session after its usage limit, with the project list on the left</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/insights/reasoning-is-a-budget/</loc>
    <lastmod>2026-09-29</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/reasoning-is-a-budget/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/reasoning-is-a-budget/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/reasoning-is-a-budget/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/reasoning-is-a-budget/cover.webp</image:loc>
      <image:title>Jeeves dev set: accuracy 0.775 to 0.825, median latency 0.3 s to 3.3 s and p90 17 s, with a checklist for classifiers</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Animated routing diagram: an incoming task, a router asking what if it's wrong, and five lanes from a script to Opus with high effort, ordered by the cost of a mistake</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Four gates on a lane: dry-run report, apply, log every row, rerun what failed, with a green block passing the last gate</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Switchyard conversations view in demo mode: a Codex chat that picks up a Claude Code session after its usage limit, with the project list on the left</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/insights/same-price-new-contract/</loc>
    <lastmod>2026-09-29</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/same-price-new-contract/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/same-price-new-contract/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/same-price-new-contract/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/same-price-new-contract/cover.webp</image:loc>
      <image:title>Sonnet 5 to Sonnet 5.5: $2 in, $10 out per million tokens unchanged, with a request checklist before flipping the model ID</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Animated routing diagram: an incoming task, a router asking what if it's wrong, and five lanes from a script to Opus with high effort, ordered by the cost of a mistake</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Four gates on a lane: dry-run report, apply, log every row, rerun what failed, with a green block passing the last gate</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Switchyard conversations view in demo mode: a Codex chat that picks up a Claude Code session after its usage limit, with the project list on the left</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/insights/app-lists-the-moves/</loc>
    <lastmod>2026-09-28</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/app-lists-the-moves/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/app-lists-the-moves/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/app-lists-the-moves/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/app-lists-the-moves/cover.webp</image:loc>
      <image:title>Card on taiga-s1 in FreeCAD: about 1 ms per decision on a CPU, and four app checks before a bigger UI agent model.</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Animated routing diagram: an incoming task, a router asking what if it's wrong, and five lanes from a script to Opus with high effort, ordered by the cost of a mistake</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Four gates on a lane: dry-run report, apply, log every row, rerun what failed, with a green block passing the last gate</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Switchyard conversations view in demo mode: a Codex chat that picks up a Claude Code session after its usage limit, with the project list on the left</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/insights/sync-is-a-test/</loc>
    <lastmod>2026-09-28</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/sync-is-a-test/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/sync-is-a-test/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/sync-is-a-test/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/sync-is-a-test/cover.webp</image:loc>
      <image:title>Launch film repo: Remotion AAC mux left about 2.5 frames of audio lag, fixed with ffmpeg, with a checklist for agent media renders</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Animated routing diagram: an incoming task, a router asking what if it's wrong, and five lanes from a script to Opus with high effort, ordered by the cost of a mistake</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Four gates on a lane: dry-run report, apply, log every row, rerun what failed, with a green block passing the last gate</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Switchyard conversations view in demo mode: a Codex chat that picks up a Claude Code session after its usage limit, with the project list on the left</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/insights/alert-pages-a-person/</loc>
    <lastmod>2026-09-27</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/alert-pages-a-person/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/alert-pages-a-person/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/alert-pages-a-person/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/alert-pages-a-person/cover.webp</image:loc>
      <image:title>Card on OpenAI's misalignment report: about 2.5 hours from alert to kill, and four checks for agent sandboxes.</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Animated routing diagram: an incoming task, a router asking what if it's wrong, and five lanes from a script to Opus with high effort, ordered by the cost of a mistake</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Four gates on a lane: dry-run report, apply, log every row, rerun what failed, with a green block passing the last gate</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Switchyard conversations view in demo mode: a Codex chat that picks up a Claude Code session after its usage limit, with the project list on the left</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/insights/missing-ampersand/</loc>
    <lastmod>2026-09-27</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/missing-ampersand/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/missing-ampersand/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/missing-ampersand/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/missing-ampersand/cover.webp</image:loc>
      <image:title>Card on llama.cpp prompt lookup drafting: a 16-line diff made it 4.5x to 25x faster, and checks before swapping a data structure.</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Animated routing diagram: an incoming task, a router asking what if it's wrong, and five lanes from a script to Opus with high effort, ordered by the cost of a mistake</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Four gates on a lane: dry-run report, apply, log every row, rerun what failed, with a green block passing the last gate</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Switchyard conversations view in demo mode: a Codex chat that picks up a Claude Code session after its usage limit, with the project list on the left</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/insights/agents-need-rails/</loc>
    <lastmod>2026-09-26</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/agents-need-rails/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/agents-need-rails/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/agents-need-rails/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/agents-need-rails/cover.webp</image:loc>
      <image:title>Card on GitHub Primer's move from CSS-in-JS to CSS Modules: 55% less server render time and the migration timeline.</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Animated routing diagram: an incoming task, a router asking what if it's wrong, and five lanes from a script to Opus with high effort, ordered by the cost of a mistake</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Four gates on a lane: dry-run report, apply, log every row, rerun what failed, with a green block passing the last gate</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Switchyard conversations view in demo mode: a Codex chat that picks up a Claude Code session after its usage limit, with the project list on the left</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/insights/widget-without-backend/</loc>
    <lastmod>2026-09-26</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/widget-without-backend/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/widget-without-backend/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/widget-without-backend/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/widget-without-backend/cover.webp</image:loc>
      <image:title>Cloudflare Turnstile and Siteverify: four server-side checks before you ship a form</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Animated routing diagram: an incoming task, a router asking what if it's wrong, and five lanes from a script to Opus with high effort, ordered by the cost of a mistake</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Four gates on a lane: dry-run report, apply, log every row, rerun what failed, with a green block passing the last gate</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Switchyard conversations view in demo mode: a Codex chat that picks up a Claude Code session after its usage limit, with the project list on the left</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/insights/comments-break-virtualization/</loc>
    <lastmod>2026-09-25</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/comments-break-virtualization/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/comments-break-virtualization/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/comments-break-virtualization/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/comments-break-virtualization/cover.webp</image:loc>
      <image:title>Card on GitHub Copilot app's rebuilt PR view: a 2,000+ file, 1M line test PR and what shipped.</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Animated routing diagram: an incoming task, a router asking what if it's wrong, and five lanes from a script to Opus with high effort, ordered by the cost of a mistake</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Four gates on a lane: dry-run report, apply, log every row, rerun what failed, with a green block passing the last gate</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Switchyard conversations view in demo mode: a Codex chat that picks up a Claude Code session after its usage limit, with the project list on the left</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/insights/token-diet/</loc>
    <lastmod>2026-09-25</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/token-diet/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/token-diet/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/token-diet/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/token-diet/cover.webp</image:loc>
      <image:title>Cursor agent harness, 7% fewer tokens: system prompt trimmed by about two thirds, and the four changes that moved the bill</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Animated routing diagram: an incoming task, a router asking what if it's wrong, and five lanes from a script to Opus with high effort, ordered by the cost of a mistake</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Four gates on a lane: dry-run report, apply, log every row, rerun what failed, with a green block passing the last gate</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Switchyard conversations view in demo mode: a Codex chat that picks up a Claude Code session after its usage limit, with the project list on the left</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/insights/count-dont-time/</loc>
    <lastmod>2026-09-24</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/count-dont-time/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/count-dont-time/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/count-dont-time/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/count-dont-time/cover.webp</image:loc>
      <image:title>Card on claude.ai performance work: the em dash bug and four deterministic counts gated in CI.</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Animated routing diagram: an incoming task, a router asking what if it's wrong, and five lanes from a script to Opus with high effort, ordered by the cost of a mistake</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Four gates on a lane: dry-run report, apply, log every row, rerun what failed, with a green block passing the last gate</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Switchyard conversations view in demo mode: a Codex chat that picks up a Claude Code session after its usage limit, with the project list on the left</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/insights/latency-cheap-crowds-not/</loc>
    <lastmod>2026-09-24</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/latency-cheap-crowds-not/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/latency-cheap-crowds-not/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/latency-cheap-crowds-not/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/latency-cheap-crowds-not/cover.webp</image:loc>
      <image:title>Card on NVIDIA Nemotron 3 Diarization on DIHARD III: 9% error at 1-4 speakers, 28% at 5+, and checks before shipping.</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Animated routing diagram: an incoming task, a router asking what if it's wrong, and five lanes from a script to Opus with high effort, ordered by the cost of a mistake</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Four gates on a lane: dry-run report, apply, log every row, rerun what failed, with a green block passing the last gate</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Switchyard conversations view in demo mode: a Codex chat that picks up a Claude Code session after its usage limit, with the project list on the left</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/insights/agents-bill-for-waiting/</loc>
    <lastmod>2026-09-23</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/agents-bill-for-waiting/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/agents-bill-for-waiting/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/agents-bill-for-waiting/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/agents-bill-for-waiting/cover.webp</image:loc>
      <image:title>Card on DigitalOcean Managed Agents: runtime plus tool gateway, and four things to check before moving an agent.</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Animated routing diagram: an incoming task, a router asking what if it's wrong, and five lanes from a script to Opus with high effort, ordered by the cost of a mistake</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Four gates on a lane: dry-run report, apply, log every row, rerun what failed, with a green block passing the last gate</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Switchyard conversations view in demo mode: a Codex chat that picks up a Claude Code session after its usage limit, with the project list on the left</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/insights/price-war-cached-tokens/</loc>
    <lastmod>2026-09-23</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/price-war-cached-tokens/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/price-war-cached-tokens/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/price-war-cached-tokens/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/price-war-cached-tokens/cover.webp</image:loc>
      <image:title>Opus 5.5 and GPT-6 Sol and Luna price changes with a checklist: cache hit rate, static context first, evals, thinking always on</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Animated routing diagram: an incoming task, a router asking what if it's wrong, and five lanes from a script to Opus with high effort, ordered by the cost of a mistake</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Four gates on a lane: dry-run report, apply, log every row, rerun what failed, with a green block passing the last gate</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Switchyard conversations view in demo mode: a Codex chat that picks up a Claude Code session after its usage limit, with the project list on the left</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/insights/knowledge-is-free-now-focus-is-still-expensive/</loc>
    <lastmod>2026-05-27</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/knowledge-is-free-now-focus-is-still-expensive/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/knowledge-is-free-now-focus-is-still-expensive/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/knowledge-is-free-now-focus-is-still-expensive/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/knowledge-is-free-now-focus-is-still-expensive/image-1.webp</image:loc>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Animated routing diagram: an incoming task, a router asking what if it's wrong, and five lanes from a script to Opus with high effort, ordered by the cost of a mistake</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Four gates on a lane: dry-run report, apply, log every row, rerun what failed, with a green block passing the last gate</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Switchyard conversations view in demo mode: a Codex chat that picks up a Claude Code session after its usage limit, with the project list on the left</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/insights/the-ai-api-key-leak-pattern-nobody-wants-to-talk-about/</loc>
    <lastmod>2026-05-18</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/the-ai-api-key-leak-pattern-nobody-wants-to-talk-about/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/the-ai-api-key-leak-pattern-nobody-wants-to-talk-about/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/the-ai-api-key-leak-pattern-nobody-wants-to-talk-about/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/the-ai-api-key-leak-pattern-nobody-wants-to-talk-about/image-1.webp</image:loc>
      <image:title>Black-and-white comparison diagram showing the wrong and right way to use an AI API key, with the key exposed in client-side code on the left and kept on the server on the right.</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/the-ai-api-key-leak-pattern-nobody-wants-to-talk-about/image-2.webp</image:loc>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/the-ai-api-key-leak-pattern-nobody-wants-to-talk-about/image-3.webp</image:loc>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Animated routing diagram: an incoming task, a router asking what if it's wrong, and five lanes from a script to Opus with high effort, ordered by the cost of a mistake</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Four gates on a lane: dry-run report, apply, log every row, rerun what failed, with a green block passing the last gate</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Switchyard conversations view in demo mode: a Codex chat that picks up a Claude Code session after its usage limit, with the project list on the left</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/insights/software-engineering-isnt-dying-it-s-evolving-from-vibe-coding-to-agentic-engineering/</loc>
    <lastmod>2026-02-16</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/software-engineering-isnt-dying-it-s-evolving-from-vibe-coding-to-agentic-engineering/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/software-engineering-isnt-dying-it-s-evolving-from-vibe-coding-to-agentic-engineering/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/software-engineering-isnt-dying-it-s-evolving-from-vibe-coding-to-agentic-engineering/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/software-engineering-isnt-dying-it-s-evolving-from-vibe-coding-to-agentic-engineering/image-1.webp</image:loc>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/software-engineering-isnt-dying-it-s-evolving-from-vibe-coding-to-agentic-engineering/image-2.webp</image:loc>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/software-engineering-isnt-dying-it-s-evolving-from-vibe-coding-to-agentic-engineering/image-3.webp</image:loc>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/software-engineering-isnt-dying-it-s-evolving-from-vibe-coding-to-agentic-engineering/image-4.webp</image:loc>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Animated routing diagram: an incoming task, a router asking what if it's wrong, and five lanes from a script to Opus with high effort, ordered by the cost of a mistake</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Four gates on a lane: dry-run report, apply, log every row, rerun what failed, with a green block passing the last gate</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Switchyard conversations view in demo mode: a Codex chat that picks up a Claude Code session after its usage limit, with the project list on the left</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/insights/agent-ready-repo-structure-2026/</loc>
    <lastmod>2026-02-01</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/agent-ready-repo-structure-2026/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/agent-ready-repo-structure-2026/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/agent-ready-repo-structure-2026/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/agent-ready-repo-structure-2026/image-1.webp</image:loc>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/agent-ready-repo-structure-2026/image-2.webp</image:loc>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Animated routing diagram: an incoming task, a router asking what if it's wrong, and five lanes from a script to Opus with high effort, ordered by the cost of a mistake</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Four gates on a lane: dry-run report, apply, log every row, rerun what failed, with a green block passing the last gate</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Switchyard conversations view in demo mode: a Codex chat that picks up a Claude Code session after its usage limit, with the project list on the left</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/insights/why-cs50-has-a-1-completion-rate-and-how-i-finished-twice/</loc>
    <lastmod>2026-01-05</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/why-cs50-has-a-1-completion-rate-and-how-i-finished-twice/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/why-cs50-has-a-1-completion-rate-and-how-i-finished-twice/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/why-cs50-has-a-1-completion-rate-and-how-i-finished-twice/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/why-cs50-has-a-1-completion-rate-and-how-i-finished-twice/image-1.webp</image:loc>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/why-cs50-has-a-1-completion-rate-and-how-i-finished-twice/image-2.webp</image:loc>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/why-cs50-has-a-1-completion-rate-and-how-i-finished-twice/image-3.webp</image:loc>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/why-cs50-has-a-1-completion-rate-and-how-i-finished-twice/image-4.webp</image:loc>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/why-cs50-has-a-1-completion-rate-and-how-i-finished-twice/image-5.webp</image:loc>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Animated routing diagram: an incoming task, a router asking what if it's wrong, and five lanes from a script to Opus with high effort, ordered by the cost of a mistake</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Four gates on a lane: dry-run report, apply, log every row, rerun what failed, with a green block passing the last gate</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Switchyard conversations view in demo mode: a Codex chat that picks up a Claude Code session after its usage limit, with the project list on the left</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/uses/</loc>
    <lastmod>2026-10-04</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/uses/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/kullandiklarim/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/uses/"/>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/contact/</loc>
    <lastmod>2026-10-04</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/contact/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/iletisim/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/contact/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/about/face.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/attribution/</loc>
    <lastmod>2026-10-15</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/attribution/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/kaynaklar/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/attribution/"/>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/guestbook/</loc>
    <lastmod>2026-10-15</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/guestbook/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/ziyaretci-defteri/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/guestbook/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/lab/decision-bench/</loc>
    <lastmod>2026-10-14</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/lab/decision-bench/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/lab/decision-bench/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/lab/decision-bench/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/labs/typesafe-logo.png</image:loc>
      <image:title>TypeSafe AI logo</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/a-word-or-a-number/card.webp</image:loc>
      <image:title>Line drawing of a score axis from 0 to 1 with sixty dots in two groups, an empty band between them, one highlighted dot inside the band at 0.35 and a dashed threshold line at 0.5</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Animated routing diagram: an incoming task, a router asking what if it's wrong, and five lanes from a script to Opus with high effort, ordered by the cost of a mistake</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Four gates on a lane: dry-run report, apply, log every row, rerun what failed, with a green block passing the last gate</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/lab/eval-gates/</loc>
    <lastmod>2026-10-19</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/lab/eval-gates/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/lab/eval-gates/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/lab/eval-gates/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/when-an-average-hides-a-failure/card.webp</image:loc>
      <image:title>The evaluator playground showing a 0.75 average passing at a 0.75 threshold while the required-check gate fails the abstention policy.</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Animated routing diagram: an incoming task, a router asking what if it's wrong, and five lanes from a script to Opus with high effort, ordered by the cost of a mistake</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Four gates on a lane: dry-run report, apply, log every row, rerun what failed, with a green block passing the last gate</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/lab/switchyard/</loc>
    <lastmod>2026-10-23</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/lab/switchyard/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/lab/switchyard/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/lab/switchyard/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/labs/switchyard-handoff.webp</image:loc>
      <image:title>Switchyard batch handoff screen in demo mode: a package of two conversations delivered to a new Claude account, both marked Reply observed and Title verified, 2 of 2 verified</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Switchyard conversations view in demo mode: a Codex chat that picks up a Claude Code session after its usage limit, with the project list on the left</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Animated routing diagram: an incoming task, a router asking what if it's wrong, and five lanes from a script to Opus with high effort, ordered by the cost of a mistake</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Four gates on a lane: dry-run report, apply, log every row, rerun what failed, with a green block passing the last gate</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/privacy/</loc>
    <lastmod>2026-10-15</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/privacy/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/gizlilik/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/privacy/"/>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/work/admin-platform/</loc>
    <lastmod>2026-10-06</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/work/admin-platform/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/calismalar/admin-platform/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/work/admin-platform/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/building-an-admin-platform-from-scratch/card.webp</image:loc>
      <image:title>Admin console demo with synthetic data: sidebar, KPI cards with sparklines, recent invoices and tickets</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Animated routing diagram: an incoming task, a router asking what if it's wrong, and five lanes from a script to Opus with high effort, ordered by the cost of a mistake</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Four gates on a lane: dry-run report, apply, log every row, rerun what failed, with a green block passing the last gate</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/work/email-product-block/</loc>
    <lastmod>2026-10-06</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/work/email-product-block/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/calismalar/email-product-block/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/work/email-product-block/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/a-product-url-becomes-an-email-block/card.webp</image:loc>
      <image:title>Email builder with a block palette, a two-column product block filled from a pasted URL and an inspector panel</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Animated routing diagram: an incoming task, a router asking what if it's wrong, and five lanes from a script to Opus with high effort, ordered by the cost of a mistake</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Four gates on a lane: dry-run report, apply, log every row, rerun what failed, with a green block passing the last gate</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/work/panel-engineering/</loc>
    <lastmod>2026-10-06</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/work/panel-engineering/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/calismalar/panel-engineering/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/work/panel-engineering/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/a-guard-against-saving-to-the-wrong-brand/card.webp</image:loc>
      <image:title>Two panel tabs for different brands, one covered by a brand mismatch dialog, next to a grid of dashboards with empty states</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Animated routing diagram: an incoming task, a router asking what if it's wrong, and five lanes from a script to Opus with high effort, ordered by the cost of a mistake</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Four gates on a lane: dry-run report, apply, log every row, rerun what failed, with a green block passing the last gate</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/work/mobile-push/</loc>
    <lastmod>2026-10-06</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/work/mobile-push/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/calismalar/mobile-push/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/work/mobile-push/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/push-that-opens-the-right-screen/card.webp</image:loc>
      <image:title>A phone notification tap routed through foreground, background and cold start paths into one router that opens Home, Category, Product or Cart</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Animated routing diagram: an incoming task, a router asking what if it's wrong, and five lanes from a script to Opus with high effort, ordered by the cost of a mistake</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Four gates on a lane: dry-run report, apply, log every row, rerun what failed, with a green block passing the last gate</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/work/product-slider/</loc>
    <lastmod>2026-10-06</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/work/product-slider/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/calismalar/product-slider/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/work/product-slider/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/recommendations-in-the-stores-own-design/card.webp</image:loc>
      <image:title>A store's own product card cloned into a recommendation carousel next to the original slider</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Animated routing diagram: an incoming task, a router asking what if it's wrong, and five lanes from a script to Opus with high effort, ordered by the cost of a mistake</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Four gates on a lane: dry-run report, apply, log every row, rerun what failed, with a green block passing the last gate</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/work/</loc>
    <lastmod>2026-10-06</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/work/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/calismalar/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/work/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/work/case-admin.webp</image:loc>
      <image:title>Admin console demo with overview metrics, invoices and tickets</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/work/case-search.webp</image:loc>
      <image:title>Search overlay demo showing results for a query on a synthetic store</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/work/case-rollout.webp</image:loc>
      <image:title>Rollout CLI demo with a terminal and a fleet status board</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/work/case-reco.webp</image:loc>
      <image:title>Recommended products slider demo cloning a storefront product carousel</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/work/case-widgets.webp</image:loc>
      <image:title>Daily deal widget builder demo with settings and a storefront preview</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/work/case-email.webp</image:loc>
      <image:title>Email builder demo with a product block filled from a URL</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/work/case-panel.webp</image:loc>
      <image:title>App push dashboard demo with a send-time heatmap</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/work/case-push.webp</image:loc>
      <image:title>Mobile push demo with a campaign composer, delivery pipeline and device</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Four gates on a lane: dry-run report, apply, log every row, rerun what failed, with a green block passing the last gate</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/a-guard-against-saving-to-the-wrong-brand/card.webp</image:loc>
      <image:title>Two panel tabs for different brands, one covered by a brand mismatch dialog, next to a grid of dashboards with empty states</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/a-product-url-becomes-an-email-block/card.webp</image:loc>
      <image:title>Email builder with a block palette, a two-column product block filled from a pasted URL and an inspector panel</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/work/search-rollout/</loc>
    <lastmod>2026-10-06</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/work/search-rollout/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/calismalar/search-rollout/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/work/search-rollout/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/rolling-out-search-to-200-brands/card.webp</image:loc>
      <image:title>Terminal running discover, plan, apply and verify next to a status board of brands marked ready, disabled or search-empty</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Animated routing diagram: an incoming task, a router asking what if it's wrong, and five lanes from a script to Opus with high effort, ordered by the cost of a mistake</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Four gates on a lane: dry-run report, apply, log every row, rerun what failed, with a green block passing the last gate</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/work/onsite-search/</loc>
    <lastmod>2026-10-06</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/work/onsite-search/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/calismalar/onsite-search/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/work/onsite-search/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/search-overlay-on-200-storefronts/card.webp</image:loc>
      <image:title>Full-screen search overlay with product grid, category chips and a typed query, shown over a storefront</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Animated routing diagram: an incoming task, a router asking what if it's wrong, and five lanes from a script to Opus with high effort, ordered by the cost of a mistake</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Four gates on a lane: dry-run report, apply, log every row, rerun what failed, with a green block passing the last gate</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/work/onsite-widgets/</loc>
    <lastmod>2026-10-06</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/work/onsite-widgets/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/calismalar/onsite-widgets/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/work/onsite-widgets/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/compile-the-widget-dont-interpret-it/card.webp</image:loc>
      <image:title>A settings panel on the left turning into a single storefront widget, with a live deal widget preview on the right</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Animated routing diagram: an incoming task, a router asking what if it's wrong, and five lanes from a script to Opus with high effort, ordered by the cost of a mistake</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Four gates on a lane: dry-run report, apply, log every row, rerun what failed, with a green block passing the last gate</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/tr/</loc>
    <lastmod>2026-10-04</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/about/face.webp</image:loc>
      <image:title>Hüseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/work/switchyard.webp</image:loc>
      <image:title>Demo modunda Switchyard handoff ekranı, iki sohbet Reply observed olarak işaretli</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/work/case-admin.webp</image:loc>
      <image:title>Genel bakış metrikleri, faturalar ve destek kayıtlarıyla yönetim paneli demosu</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/work/case-search.webp</image:loc>
      <image:title>Sentetik bir mağazada sorgu sonuçlarını gösteren arama ekranı demosu</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/work/case-reco.webp</image:loc>
      <image:title>Mağazanın ürün karuselini klonlayan önerilen ürün slider’ı demosu</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/tr/hakkimda/</loc>
    <lastmod>2026-10-04</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/about/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/hakkimda/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/about/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Hüseyin Kaplan portresi</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/about/polaroid-desk.webp</image:loc>
      <image:title>Gece bir masa: dizüstü bilgisayar, kod dolu bir monitör ve açık bir defter</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/about/polaroid-city.webp</image:loc>
      <image:title>İstanbul'da bir metro peronunda yürüyen Hüseyin</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/about/polaroid-book.webp</image:loc>
      <image:title>Açık bir kitap sayfası: If you want it, work for it</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/logos/kobisi.png</image:loc>
      <image:title>Kobisi logosu</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/logos/harvard.png</image:loc>
      <image:title>Harvard Üniversitesi arması</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/tr/projeler/</loc>
    <lastmod>2026-10-04</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/projects/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/projeler/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/projects/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/work/switchyard.webp</image:loc>
      <image:title>Demo modunda Switchyard konuşmalar ekranı: kullanım limitine takılan bir Claude Code oturumunu sürdüren Codex sohbeti</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/work/case-admin.webp</image:loc>
      <image:title>Genel bakış metrikleri, faturalar ve destek kayıtlarıyla yönetim paneli demosu</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/work/case-search.webp</image:loc>
      <image:title>Sentetik bir mağazada sorgu sonuçlarını gösteren arama ekranı demosu</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/work/case-rollout.webp</image:loc>
      <image:title>Terminal ve marka durum panosuyla yayın CLI demosu</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/work/case-reco.webp</image:loc>
      <image:title>Mağazanın ürün karuselini klonlayan önerilen ürün slider’ı demosu</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/work/case-widgets.webp</image:loc>
      <image:title>Ayarlar ve mağaza önizlemesiyle günlük fırsat widget’ı builder demosu</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/work/case-email.webp</image:loc>
      <image:title>URL’den doldurulan ürün bloğuyla e-posta editörü demosu</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/work/case-panel.webp</image:loc>
      <image:title>Gönderim saati ısı haritalı app push dashboard demosu</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/work/case-push.webp</image:loc>
      <image:title>Kampanya oluşturucu, teslimat hattı ve cihazla mobil push demosu</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/work/relay-desk.webp</image:loc>
      <image:title>Öncelikli gelen kutusu ve yanıt alanıyla Relay Desk</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/work/agent-bench.webp</image:loc>
      <image:title>Agent Runtime Bench açılış sayfası</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/work/reliability-lab.webp</image:loc>
      <image:title>LLM Reliability Lab puanlanmış test paketi</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/work/rag-evals.webp</image:loc>
      <image:title>Production RAG ve Evals referans sayfası</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/tr/yazilar/</loc>
    <lastmod>2026-10-04</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/"/>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/tr/yazilar/route-by-what-a-wrong-answer-costs/</loc>
    <lastmod>2026-10-29</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/route-by-what-a-wrong-answer-costs/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/route-by-what-a-wrong-answer-costs/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/route-by-what-a-wrong-answer-costs/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/cover.webp</image:loc>
      <image:title>Hareketli yönlendirme diyagramı: gelen bir iş, yanlışsa ne olur diye soran bir yönlendirici ve hatanın maliyetine göre sıralı beş şerit, scriptten yüksek effort ile Opus'a kadar</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Bir şerit üzerinde dört kapı: deneme raporu, uygula, her satırı logla, kalanı yeniden gönder; son kapıdan geçen yeşil bir blok</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Demo modunda Switchyard konuşmalar ekranı: kullanım limitine takılan bir Claude Code oturumunu devralan Codex sohbeti, solda proje listesi</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/when-an-average-hides-a-failure/card.webp</image:loc>
      <image:title>0.75 eşikte 0.75 ortalamanın geçtiği, zorunlu kontrol kapısının yanıt vermeme ihlalini engellediği oyun alanı.</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/tr/yazilar/moving-crm-history-with-scripts/</loc>
    <lastmod>2026-11-02</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/moving-crm-history-with-scripts/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/moving-crm-history-with-scripts/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/moving-crm-history-with-scripts/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/cover.webp</image:loc>
      <image:title>Bir şerit üzerinde dört kapı: deneme raporu, uygula, her satırı logla, kalanı yeniden gönder; son kapıdan geçen yeşil bir blok</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/log-rerun.webp</image:loc>
      <image:title>Örnek veriyle el çizimi şema: 1. çalıştırma altı kaydı logluyor, ikisi 401 oturum süresi doldu, biri 400 geçersiz tarih hatası alıyor. 2. çalıştırma yeniden giriş yapıyor, tarihi düzeltip sadece bu üçünü tekrar gönderiyor ve 200 dönmüş üç kaydı atlıyor. Bir not geri almanın aynı logu okuduğunu söylüyor.</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/dirty-data.webp</image:loc>
      <image:title>Örnek veriyle el çizimi tablo: 1111-11-11 tarihi notsuz boş kalıyor; x e-postası yer tutucuya dönüşüyor ve not eski değeri saklıyor; eksik soyad tire oluyor ve not ekleniyor; aktif hesabı olmayan müşteri yöneticisi boş bırakılıp notta adıyla yazılıyor.</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Hareketli yönlendirme diyagramı: gelen bir iş, yanlışsa ne olur diye soran bir yönlendirici ve hatanın maliyetine göre sıralı beş şerit, scriptten yüksek effort ile Opus'a kadar</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Demo modunda Switchyard konuşmalar ekranı: kullanım limitine takılan bir Claude Code oturumunu devralan Codex sohbeti, solda proje listesi</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/when-an-average-hides-a-failure/card.webp</image:loc>
      <image:title>0.75 eşikte 0.75 ortalamanın geçtiği, zorunlu kontrol kapısının yanıt vermeme ihlalini engellediği oyun alanı.</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/tr/yazilar/switchyard-handoff-when-the-limit-hits/</loc>
    <lastmod>2026-10-23</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/switchyard-handoff-when-the-limit-hits/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/switchyard-handoff-when-the-limit-hits/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/switchyard-handoff-when-the-limit-hits/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/cover.webp</image:loc>
      <image:title>Demo modunda Switchyard konuşmalar ekranı: kullanım limitine takılan bir Claude Code oturumunu devralan Codex sohbeti, solda proje listesi</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/schedules.webp</image:loc>
      <image:title>Demo modunda Switchyard zamanlanmış görevler ekranı: üç koşumlu gecelik bağımlılık denetimi, biri No assistant reply in the archive, this run may have done nothing uyarısıyla işaretli</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Hareketli yönlendirme diyagramı: gelen bir iş, yanlışsa ne olur diye soran bir yönlendirici ve hatanın maliyetine göre sıralı beş şerit, scriptten yüksek effort ile Opus'a kadar</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Bir şerit üzerinde dört kapı: deneme raporu, uygula, her satırı logla, kalanı yeniden gönder; son kapıdan geçen yeşil bir blok</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/when-an-average-hides-a-failure/card.webp</image:loc>
      <image:title>0.75 eşikte 0.75 ortalamanın geçtiği, zorunlu kontrol kapısının yanıt vermeme ihlalini engellediği oyun alanı.</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/tr/yazilar/when-an-average-hides-a-failure/</loc>
    <lastmod>2026-10-19</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/when-an-average-hides-a-failure/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/when-an-average-hides-a-failure/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/when-an-average-hides-a-failure/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/when-an-average-hides-a-failure/cover.webp</image:loc>
      <image:title>0.75 eşikte 0.75 ortalamanın geçtiği, zorunlu kontrol kapısının yanıt vermeme ihlalini engellediği oyun alanı.</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Hareketli yönlendirme diyagramı: gelen bir iş, yanlışsa ne olur diye soran bir yönlendirici ve hatanın maliyetine göre sıralı beş şerit, scriptten yüksek effort ile Opus'a kadar</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Bir şerit üzerinde dört kapı: deneme raporu, uygula, her satırı logla, kalanı yeniden gönder; son kapıdan geçen yeşil bir blok</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Demo modunda Switchyard konuşmalar ekranı: kullanım limitine takılan bir Claude Code oturumunu devralan Codex sohbeti, solda proje listesi</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/tr/yazilar/smooth-without-the-wait/</loc>
    <lastmod>2026-10-17</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/smooth-without-the-wait/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/smooth-without-the-wait/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/smooth-without-the-wait/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Hareketli yönlendirme diyagramı: gelen bir iş, yanlışsa ne olur diye soran bir yönlendirici ve hatanın maliyetine göre sıralı beş şerit, scriptten yüksek effort ile Opus'a kadar</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Bir şerit üzerinde dört kapı: deneme raporu, uygula, her satırı logla, kalanı yeniden gönder; son kapıdan geçen yeşil bir blok</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Demo modunda Switchyard konuşmalar ekranı: kullanım limitine takılan bir Claude Code oturumunu devralan Codex sohbeti, solda proje listesi</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/tr/yazilar/a-word-or-a-number/</loc>
    <lastmod>2026-10-14</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/a-word-or-a-number/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/a-word-or-a-number/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/a-word-or-a-number/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/a-word-or-a-number/cover.webp</image:loc>
      <image:title>0'dan 1'e bir skor ekseninin çizgi çizimi: iki gruba ayrılmış altmış nokta, aralarında boş bir bant, bandın içinde 0.35'te vurgulu tek nokta ve 0.5'te kesik eşik çizgisi</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Hareketli yönlendirme diyagramı: gelen bir iş, yanlışsa ne olur diye soran bir yönlendirici ve hatanın maliyetine göre sıralı beş şerit, scriptten yüksek effort ile Opus'a kadar</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Bir şerit üzerinde dört kapı: deneme raporu, uygula, her satırı logla, kalanı yeniden gönder; son kapıdan geçen yeşil bir blok</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Demo modunda Switchyard konuşmalar ekranı: kullanım limitine takılan bir Claude Code oturumunu devralan Codex sohbeti, solda proje listesi</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/tr/yazilar/a-results-page-on-someone-elses-storefront/</loc>
    <lastmod>2026-10-13</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/a-results-page-on-someone-elses-storefront/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/a-results-page-on-someone-elses-storefront/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/a-results-page-on-someone-elses-storefront/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/a-results-page-on-someone-elses-storefront/cover.webp</image:loc>
      <image:title>Dört config kartı ile dört mağaza plakası arasında tek bir çekirdek script bloğunun çizgi çizimi, bir çift vurgulu</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Hareketli yönlendirme diyagramı: gelen bir iş, yanlışsa ne olur diye soran bir yönlendirici ve hatanın maliyetine göre sıralı beş şerit, scriptten yüksek effort ile Opus'a kadar</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Bir şerit üzerinde dört kapı: deneme raporu, uygula, her satırı logla, kalanı yeniden gönder; son kapıdan geçen yeşil bir blok</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Demo modunda Switchyard konuşmalar ekranı: kullanım limitine takılan bir Claude Code oturumunu devralan Codex sohbeti, solda proje listesi</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/tr/yazilar/motion-graphics-written-as-code/</loc>
    <lastmod>2026-10-13</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/motion-graphics-written-as-code/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/motion-graphics-written-as-code/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/motion-graphics-written-as-code/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/motion-graphics-written-as-code/cover.webp</image:loc>
      <image:title>Üç keyframe izi ve bir oynatma çizgisi olan zaman çizelgesi; yanında izlerin yönettiği küçük izometrik bir şerit</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Hareketli yönlendirme diyagramı: gelen bir iş, yanlışsa ne olur diye soran bir yönlendirici ve hatanın maliyetine göre sıralı beş şerit, scriptten yüksek effort ile Opus'a kadar</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Bir şerit üzerinde dört kapı: deneme raporu, uygula, her satırı logla, kalanı yeniden gönder; son kapıdan geçen yeşil bir blok</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Demo modunda Switchyard konuşmalar ekranı: kullanım limitine takılan bir Claude Code oturumunu devralan Codex sohbeti, solda proje listesi</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/tr/yazilar/same-model-different-workflow/</loc>
    <lastmod>2026-10-13</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/same-model-different-workflow/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/same-model-different-workflow/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/same-model-different-workflow/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/same-model-different-workflow/cover.webp</image:loc>
      <image:title>Yeniden üret, context ver, hedefle ve doğrula etiketli dört numaralı kapısı olan bir şeridin çizgi çizimi; bir blok sonuncusunu geçmiş</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Hareketli yönlendirme diyagramı: gelen bir iş, yanlışsa ne olur diye soran bir yönlendirici ve hatanın maliyetine göre sıralı beş şerit, scriptten yüksek effort ile Opus'a kadar</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Bir şerit üzerinde dört kapı: deneme raporu, uygula, her satırı logla, kalanı yeniden gönder; son kapıdan geçen yeşil bir blok</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Demo modunda Switchyard konuşmalar ekranı: kullanım limitine takılan bir Claude Code oturumunu devralan Codex sohbeti, solda proje listesi</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/tr/yazilar/the-widget-that-worked-on-the-second-visit/</loc>
    <lastmod>2026-10-13</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/the-widget-that-worked-on-the-second-visit/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/the-widget-that-worked-on-the-second-visit/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/the-widget-that-worked-on-the-second-visit/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/the-widget-that-worked-on-the-second-visit/cover.webp</image:loc>
      <image:title>Bir kayıt bloğuna giden iki şeridin çizgi çizimi: bir push script jetonu ve değer kaydedilene kadar çizgide bekleyen bir widget jetonu</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Hareketli yönlendirme diyagramı: gelen bir iş, yanlışsa ne olur diye soran bir yönlendirici ve hatanın maliyetine göre sıralı beş şerit, scriptten yüksek effort ile Opus'a kadar</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Bir şerit üzerinde dört kapı: deneme raporu, uygula, her satırı logla, kalanı yeniden gönder; son kapıdan geçen yeşil bir blok</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Demo modunda Switchyard konuşmalar ekranı: kullanım limitine takılan bir Claude Code oturumunu devralan Codex sohbeti, solda proje listesi</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/tr/yazilar/a-guard-against-saving-to-the-wrong-brand/</loc>
    <lastmod>2026-10-11</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/a-guard-against-saving-to-the-wrong-brand/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/a-guard-against-saving-to-the-wrong-brand/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/a-guard-against-saving-to-the-wrong-brand/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/a-guard-against-saving-to-the-wrong-brand/cover.webp</image:loc>
      <image:title>Farklı markalara ait iki panel sekmesi, biri marka uyuşmazlığı penceresiyle kapalı, yanında boş durumları olan dashboard ızgarası</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Hareketli yönlendirme diyagramı: gelen bir iş, yanlışsa ne olur diye soran bir yönlendirici ve hatanın maliyetine göre sıralı beş şerit, scriptten yüksek effort ile Opus'a kadar</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Bir şerit üzerinde dört kapı: deneme raporu, uygula, her satırı logla, kalanı yeniden gönder; son kapıdan geçen yeşil bir blok</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Demo modunda Switchyard konuşmalar ekranı: kullanım limitine takılan bir Claude Code oturumunu devralan Codex sohbeti, solda proje listesi</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/tr/yazilar/a-product-url-becomes-an-email-block/</loc>
    <lastmod>2026-10-11</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/a-product-url-becomes-an-email-block/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/a-product-url-becomes-an-email-block/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/a-product-url-becomes-an-email-block/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/a-product-url-becomes-an-email-block/cover.webp</image:loc>
      <image:title>Blok paleti, yapıştırılan URL'den dolan iki sütunlu ürün bloğu ve inspector paneli olan e-posta editörü</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Hareketli yönlendirme diyagramı: gelen bir iş, yanlışsa ne olur diye soran bir yönlendirici ve hatanın maliyetine göre sıralı beş şerit, scriptten yüksek effort ile Opus'a kadar</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Bir şerit üzerinde dört kapı: deneme raporu, uygula, her satırı logla, kalanı yeniden gönder; son kapıdan geçen yeşil bir blok</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Demo modunda Switchyard konuşmalar ekranı: kullanım limitine takılan bir Claude Code oturumunu devralan Codex sohbeti, solda proje listesi</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/tr/yazilar/rolling-out-search-to-200-brands/</loc>
    <lastmod>2026-10-11</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/rolling-out-search-to-200-brands/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/rolling-out-search-to-200-brands/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/rolling-out-search-to-200-brands/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/rolling-out-search-to-200-brands/cover.webp</image:loc>
      <image:title>Hazır, kapalı veya boş arama olarak işaretlenmiş markaların durum panosunun yanında discover, plan, apply ve verify çalıştıran bir terminal</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Hareketli yönlendirme diyagramı: gelen bir iş, yanlışsa ne olur diye soran bir yönlendirici ve hatanın maliyetine göre sıralı beş şerit, scriptten yüksek effort ile Opus'a kadar</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Bir şerit üzerinde dört kapı: deneme raporu, uygula, her satırı logla, kalanı yeniden gönder; son kapıdan geçen yeşil bir blok</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Demo modunda Switchyard konuşmalar ekranı: kullanım limitine takılan bir Claude Code oturumunu devralan Codex sohbeti, solda proje listesi</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/tr/yazilar/building-an-admin-platform-from-scratch/</loc>
    <lastmod>2026-10-06</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/building-an-admin-platform-from-scratch/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/building-an-admin-platform-from-scratch/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/building-an-admin-platform-from-scratch/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/building-an-admin-platform-from-scratch/cover.webp</image:loc>
      <image:title>Sentetik veriyle yönetim paneli demosu: kenar menü, grafikli KPI kartları, son faturalar ve talepler</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Hareketli yönlendirme diyagramı: gelen bir iş, yanlışsa ne olur diye soran bir yönlendirici ve hatanın maliyetine göre sıralı beş şerit, scriptten yüksek effort ile Opus'a kadar</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Bir şerit üzerinde dört kapı: deneme raporu, uygula, her satırı logla, kalanı yeniden gönder; son kapıdan geçen yeşil bir blok</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Demo modunda Switchyard konuşmalar ekranı: kullanım limitine takılan bir Claude Code oturumunu devralan Codex sohbeti, solda proje listesi</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/tr/yazilar/compile-the-widget-dont-interpret-it/</loc>
    <lastmod>2026-10-06</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/compile-the-widget-dont-interpret-it/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/compile-the-widget-dont-interpret-it/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/compile-the-widget-dont-interpret-it/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/compile-the-widget-dont-interpret-it/cover.webp</image:loc>
      <image:title>Solda tek bir mağaza widget'ına dönüşen ayar paneli, sağda canlı fırsat widget'ı önizlemesi</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Hareketli yönlendirme diyagramı: gelen bir iş, yanlışsa ne olur diye soran bir yönlendirici ve hatanın maliyetine göre sıralı beş şerit, scriptten yüksek effort ile Opus'a kadar</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Bir şerit üzerinde dört kapı: deneme raporu, uygula, her satırı logla, kalanı yeniden gönder; son kapıdan geçen yeşil bir blok</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Demo modunda Switchyard konuşmalar ekranı: kullanım limitine takılan bir Claude Code oturumunu devralan Codex sohbeti, solda proje listesi</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/tr/yazilar/push-that-opens-the-right-screen/</loc>
    <lastmod>2026-10-06</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/push-that-opens-the-right-screen/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/push-that-opens-the-right-screen/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/push-that-opens-the-right-screen/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/push-that-opens-the-right-screen/cover.webp</image:loc>
      <image:title>Ön plan, arka plan ve soğuk başlatma yollarından gelen bildirim tıklamasının Home, Category, Product veya Cart açan tek bir router'a bağlanması</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Hareketli yönlendirme diyagramı: gelen bir iş, yanlışsa ne olur diye soran bir yönlendirici ve hatanın maliyetine göre sıralı beş şerit, scriptten yüksek effort ile Opus'a kadar</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Bir şerit üzerinde dört kapı: deneme raporu, uygula, her satırı logla, kalanı yeniden gönder; son kapıdan geçen yeşil bir blok</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Demo modunda Switchyard konuşmalar ekranı: kullanım limitine takılan bir Claude Code oturumunu devralan Codex sohbeti, solda proje listesi</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/tr/yazilar/recommendations-in-the-stores-own-design/</loc>
    <lastmod>2026-10-06</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/recommendations-in-the-stores-own-design/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/recommendations-in-the-stores-own-design/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/recommendations-in-the-stores-own-design/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/recommendations-in-the-stores-own-design/cover.webp</image:loc>
      <image:title>Mağazanın kendi ürün kartı, orijinal slider'ın yanında bir öneri carousel'ine kopyalanmış halde</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Hareketli yönlendirme diyagramı: gelen bir iş, yanlışsa ne olur diye soran bir yönlendirici ve hatanın maliyetine göre sıralı beş şerit, scriptten yüksek effort ile Opus'a kadar</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Bir şerit üzerinde dört kapı: deneme raporu, uygula, her satırı logla, kalanı yeniden gönder; son kapıdan geçen yeşil bir blok</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Demo modunda Switchyard konuşmalar ekranı: kullanım limitine takılan bir Claude Code oturumunu devralan Codex sohbeti, solda proje listesi</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/tr/yazilar/search-overlay-on-200-storefronts/</loc>
    <lastmod>2026-10-06</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/search-overlay-on-200-storefronts/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/search-overlay-on-200-storefronts/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/search-overlay-on-200-storefronts/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/search-overlay-on-200-storefronts/cover.webp</image:loc>
      <image:title>Bir mağaza sayfası üzerinde ürün grid'i, kategori çipleri ve yazılmış bir sorguyla tam ekran arama overlay'i</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Hareketli yönlendirme diyagramı: gelen bir iş, yanlışsa ne olur diye soran bir yönlendirici ve hatanın maliyetine göre sıralı beş şerit, scriptten yüksek effort ile Opus'a kadar</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Bir şerit üzerinde dört kapı: deneme raporu, uygula, her satırı logla, kalanı yeniden gönder; son kapıdan geçen yeşil bir blok</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Demo modunda Switchyard konuşmalar ekranı: kullanım limitine takılan bir Claude Code oturumunu devralan Codex sohbeti, solda proje listesi</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/tr/yazilar/write-the-math/</loc>
    <lastmod>2026-10-04</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/write-the-math/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/write-the-math/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/write-the-math/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/write-the-math/cover.webp</image:loc>
      <image:title>ldraw-nova'da Claude Opus 5.5'in kurduğu LEGO pagoda ve kiraz ağaçlı bahçe: 2,175 parça, sıfır fizik kontrolü</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Hareketli yönlendirme diyagramı: gelen bir iş, yanlışsa ne olur diye soran bir yönlendirici ve hatanın maliyetine göre sıralı beş şerit, scriptten yüksek effort ile Opus'a kadar</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Bir şerit üzerinde dört kapı: deneme raporu, uygula, her satırı logla, kalanı yeniden gönder; son kapıdan geçen yeşil bir blok</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Demo modunda Switchyard konuşmalar ekranı: kullanım limitine takılan bir Claude Code oturumunu devralan Codex sohbeti, solda proje listesi</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/tr/yazilar/notes-read-as-orders/</loc>
    <lastmod>2026-10-03</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/notes-read-as-orders/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/notes-read-as-orders/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/notes-read-as-orders/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/notes-read-as-orders/cover.webp</image:loc>
      <image:title>Alacakaranlıkta sisli dağların yağlı boya tablosu ve stillwet'teki Claude Opus ressam zincirinden 1. ressamın not kartı.</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Hareketli yönlendirme diyagramı: gelen bir iş, yanlışsa ne olur diye soran bir yönlendirici ve hatanın maliyetine göre sıralı beş şerit, scriptten yüksek effort ile Opus'a kadar</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Bir şerit üzerinde dört kapı: deneme raporu, uygula, her satırı logla, kalanı yeniden gönder; son kapıdan geçen yeşil bir blok</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Demo modunda Switchyard konuşmalar ekranı: kullanım limitine takılan bir Claude Code oturumunu devralan Codex sohbeti, solda proje listesi</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/tr/yazilar/planner-writes-the-bill/</loc>
    <lastmod>2026-10-02</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/planner-writes-the-bill/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/planner-writes-the-bill/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/planner-writes-the-bill/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/planner-writes-the-bill/cover.webp</image:loc>
      <image:title>Pi 1.0 demosunda model başına maliyet, Opus $0.071 ve Luna $0.004, planlayıcı ile uygulayıcıyı ayırma kontrol listesiyle</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Hareketli yönlendirme diyagramı: gelen bir iş, yanlışsa ne olur diye soran bir yönlendirici ve hatanın maliyetine göre sıralı beş şerit, scriptten yüksek effort ile Opus'a kadar</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Bir şerit üzerinde dört kapı: deneme raporu, uygula, her satırı logla, kalanı yeniden gönder; son kapıdan geçen yeşil bir blok</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Demo modunda Switchyard konuşmalar ekranı: kullanım limitine takılan bir Claude Code oturumunu devralan Codex sohbeti, solda proje listesi</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/tr/yazilar/isolates-to-microvms/</loc>
    <lastmod>2026-10-01</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/isolates-to-microvms/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/isolates-to-microvms/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/isolates-to-microvms/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/isolates-to-microvms/cover.webp</image:loc>
      <image:title>Netlify Edge Functions kartı: warm çağrı medyanı 25-40 ms'den yaklaşık 5 ms'ye ve edge yolu kontrolleri.</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Hareketli yönlendirme diyagramı: gelen bir iş, yanlışsa ne olur diye soran bir yönlendirici ve hatanın maliyetine göre sıralı beş şerit, scriptten yüksek effort ile Opus'a kadar</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Bir şerit üzerinde dört kapı: deneme raporu, uygula, her satırı logla, kalanı yeniden gönder; son kapıdan geçen yeşil bir blok</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Demo modunda Switchyard konuşmalar ekranı: kullanım limitine takılan bir Claude Code oturumunu devralan Codex sohbeti, solda proje listesi</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/tr/yazilar/prefill-pays-the-wait/</loc>
    <lastmod>2026-10-01</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/prefill-pays-the-wait/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/prefill-pays-the-wait/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/prefill-pays-the-wait/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/prefill-pays-the-wait/cover.webp</image:loc>
      <image:title>M4 Pro'da 64K context ile Magnitude ve llama.cpp: tek soğuk agent turu 154 s'den 135 s'ye iniyor</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Hareketli yönlendirme diyagramı: gelen bir iş, yanlışsa ne olur diye soran bir yönlendirici ve hatanın maliyetine göre sıralı beş şerit, scriptten yüksek effort ile Opus'a kadar</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Bir şerit üzerinde dört kapı: deneme raporu, uygula, her satırı logla, kalanı yeniden gönder; son kapıdan geçen yeşil bir blok</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Demo modunda Switchyard konuşmalar ekranı: kullanım limitine takılan bir Claude Code oturumunu devralan Codex sohbeti, solda proje listesi</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/tr/yazilar/warn-vs-stop/</loc>
    <lastmod>2026-10-01</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/warn-vs-stop/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/warn-vs-stop/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/warn-vs-stop/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/warn-vs-stop/cover.webp</image:loc>
      <image:title>Claude Code mod rehberi: Blast Radius rm -rf build'i bekletiyor ama $(...), alias ve script'ler onu atlatıyor; kurulum öncesi kontrol listesi</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Hareketli yönlendirme diyagramı: gelen bir iş, yanlışsa ne olur diye soran bir yönlendirici ve hatanın maliyetine göre sıralı beş şerit, scriptten yüksek effort ile Opus'a kadar</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Bir şerit üzerinde dört kapı: deneme raporu, uygula, her satırı logla, kalanı yeniden gönder; son kapıdan geçen yeşil bir blok</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Demo modunda Switchyard konuşmalar ekranı: kullanım limitine takılan bir Claude Code oturumunu devralan Codex sohbeti, solda proje listesi</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/tr/yazilar/access-and-memory/</loc>
    <lastmod>2026-09-30</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/access-and-memory/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/access-and-memory/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/access-and-memory/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/access-and-memory/cover.webp</image:loc>
      <image:title>OpenAI Dots güvenlik yazısı kartı: uygulama bağlantısını kesmek yeni okumaları durdurur, hafızalı agent'lar için dört adım.</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Hareketli yönlendirme diyagramı: gelen bir iş, yanlışsa ne olur diye soran bir yönlendirici ve hatanın maliyetine göre sıralı beş şerit, scriptten yüksek effort ile Opus'a kadar</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Bir şerit üzerinde dört kapı: deneme raporu, uygula, her satırı logla, kalanı yeniden gönder; son kapıdan geçen yeşil bir blok</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Demo modunda Switchyard konuşmalar ekranı: kullanım limitine takılan bir Claude Code oturumunu devralan Codex sohbeti, solda proje listesi</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/tr/yazilar/tokens-move-first/</loc>
    <lastmod>2026-09-30</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/tokens-move-first/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/tokens-move-first/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/tokens-move-first/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/tokens-move-first/cover.webp</image:loc>
      <image:title>Opus 5.5 üzerinde livenerf doğrulaması: medium effort, high'a göre doğrulukta -4 puan ve token'da -%26; aynı çalıştırmalar arası 6 puan fark</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Hareketli yönlendirme diyagramı: gelen bir iş, yanlışsa ne olur diye soran bir yönlendirici ve hatanın maliyetine göre sıralı beş şerit, scriptten yüksek effort ile Opus'a kadar</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Bir şerit üzerinde dört kapı: deneme raporu, uygula, her satırı logla, kalanı yeniden gönder; son kapıdan geçen yeşil bir blok</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Demo modunda Switchyard konuşmalar ekranı: kullanım limitine takılan bir Claude Code oturumunu devralan Codex sohbeti, solda proje listesi</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/tr/yazilar/reasoning-is-a-budget/</loc>
    <lastmod>2026-09-29</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/reasoning-is-a-budget/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/reasoning-is-a-budget/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/reasoning-is-a-budget/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/reasoning-is-a-budget/cover.webp</image:loc>
      <image:title>Jeeves dev seti: doğruluk 0.775 → 0.825, medyan gecikme 0.3 s → 3.3 s, p90 17 s; sınıflandırıcılar için kontrol listesiyle</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Hareketli yönlendirme diyagramı: gelen bir iş, yanlışsa ne olur diye soran bir yönlendirici ve hatanın maliyetine göre sıralı beş şerit, scriptten yüksek effort ile Opus'a kadar</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Bir şerit üzerinde dört kapı: deneme raporu, uygula, her satırı logla, kalanı yeniden gönder; son kapıdan geçen yeşil bir blok</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Demo modunda Switchyard konuşmalar ekranı: kullanım limitine takılan bir Claude Code oturumunu devralan Codex sohbeti, solda proje listesi</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/tr/yazilar/same-price-new-contract/</loc>
    <lastmod>2026-09-29</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/same-price-new-contract/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/same-price-new-contract/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/same-price-new-contract/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/same-price-new-contract/cover.webp</image:loc>
      <image:title>Sonnet 5'ten Sonnet 5.5'e: milyon token başına $2 input, $10 output değişmedi; model ID'sini değiştirmeden önce istek kontrol listesi</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Hareketli yönlendirme diyagramı: gelen bir iş, yanlışsa ne olur diye soran bir yönlendirici ve hatanın maliyetine göre sıralı beş şerit, scriptten yüksek effort ile Opus'a kadar</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Bir şerit üzerinde dört kapı: deneme raporu, uygula, her satırı logla, kalanı yeniden gönder; son kapıdan geçen yeşil bir blok</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Demo modunda Switchyard konuşmalar ekranı: kullanım limitine takılan bir Claude Code oturumunu devralan Codex sohbeti, solda proje listesi</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/tr/yazilar/app-lists-the-moves/</loc>
    <lastmod>2026-09-28</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/app-lists-the-moves/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/app-lists-the-moves/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/app-lists-the-moves/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/app-lists-the-moves/cover.webp</image:loc>
      <image:title>FreeCAD'de taiga-s1 kartı: CPU'da karar başına yaklaşık 1 ms ve daha büyük bir UI agent modelinden önce dört kontrol.</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Hareketli yönlendirme diyagramı: gelen bir iş, yanlışsa ne olur diye soran bir yönlendirici ve hatanın maliyetine göre sıralı beş şerit, scriptten yüksek effort ile Opus'a kadar</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Bir şerit üzerinde dört kapı: deneme raporu, uygula, her satırı logla, kalanı yeniden gönder; son kapıdan geçen yeşil bir blok</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Demo modunda Switchyard konuşmalar ekranı: kullanım limitine takılan bir Claude Code oturumunu devralan Codex sohbeti, solda proje listesi</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/tr/yazilar/sync-is-a-test/</loc>
    <lastmod>2026-09-28</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/sync-is-a-test/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/sync-is-a-test/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/sync-is-a-test/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/sync-is-a-test/cover.webp</image:loc>
      <image:title>Tanıtım filmi repo'su: Remotion AAC mux'ı yaklaşık 2.5 kare ses gecikmesi bıraktı, ffmpeg ile düzeltildi; agent medya render kontrol listesi</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Hareketli yönlendirme diyagramı: gelen bir iş, yanlışsa ne olur diye soran bir yönlendirici ve hatanın maliyetine göre sıralı beş şerit, scriptten yüksek effort ile Opus'a kadar</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Bir şerit üzerinde dört kapı: deneme raporu, uygula, her satırı logla, kalanı yeniden gönder; son kapıdan geçen yeşil bir blok</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Demo modunda Switchyard konuşmalar ekranı: kullanım limitine takılan bir Claude Code oturumunu devralan Codex sohbeti, solda proje listesi</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/tr/yazilar/alert-pages-a-person/</loc>
    <lastmod>2026-09-27</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/alert-pages-a-person/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/alert-pages-a-person/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/alert-pages-a-person/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/alert-pages-a-person/cover.webp</image:loc>
      <image:title>OpenAI misalignment raporu kartı: alarmdan durdurmaya yaklaşık 2.5 saat ve agent sandbox'ları için dört kontrol.</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Hareketli yönlendirme diyagramı: gelen bir iş, yanlışsa ne olur diye soran bir yönlendirici ve hatanın maliyetine göre sıralı beş şerit, scriptten yüksek effort ile Opus'a kadar</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Bir şerit üzerinde dört kapı: deneme raporu, uygula, her satırı logla, kalanı yeniden gönder; son kapıdan geçen yeşil bir blok</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Demo modunda Switchyard konuşmalar ekranı: kullanım limitine takılan bir Claude Code oturumunu devralan Codex sohbeti, solda proje listesi</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/tr/yazilar/missing-ampersand/</loc>
    <lastmod>2026-09-27</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/missing-ampersand/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/missing-ampersand/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/missing-ampersand/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/missing-ampersand/cover.webp</image:loc>
      <image:title>llama.cpp prompt lookup drafting kartı: 16 satırlık diff ile 4.5x-25x hız ve veri yapısını değiştirmeden önce kontroller.</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Hareketli yönlendirme diyagramı: gelen bir iş, yanlışsa ne olur diye soran bir yönlendirici ve hatanın maliyetine göre sıralı beş şerit, scriptten yüksek effort ile Opus'a kadar</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Bir şerit üzerinde dört kapı: deneme raporu, uygula, her satırı logla, kalanı yeniden gönder; son kapıdan geçen yeşil bir blok</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Demo modunda Switchyard konuşmalar ekranı: kullanım limitine takılan bir Claude Code oturumunu devralan Codex sohbeti, solda proje listesi</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/tr/yazilar/agents-need-rails/</loc>
    <lastmod>2026-09-26</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/agents-need-rails/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/agents-need-rails/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/agents-need-rails/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/agents-need-rails/cover.webp</image:loc>
      <image:title>GitHub Primer'ın CSS-in-JS'ten CSS Modules'e geçişi kartı: %55 daha az sunucu render süresi ve geçiş zaman çizelgesi.</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Hareketli yönlendirme diyagramı: gelen bir iş, yanlışsa ne olur diye soran bir yönlendirici ve hatanın maliyetine göre sıralı beş şerit, scriptten yüksek effort ile Opus'a kadar</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Bir şerit üzerinde dört kapı: deneme raporu, uygula, her satırı logla, kalanı yeniden gönder; son kapıdan geçen yeşil bir blok</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Demo modunda Switchyard konuşmalar ekranı: kullanım limitine takılan bir Claude Code oturumunu devralan Codex sohbeti, solda proje listesi</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/tr/yazilar/widget-without-backend/</loc>
    <lastmod>2026-09-26</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/widget-without-backend/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/widget-without-backend/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/widget-without-backend/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/widget-without-backend/cover.webp</image:loc>
      <image:title>Cloudflare Turnstile ve Siteverify: bir formu yayına almadan önce sunucu tarafında dört kontrol</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Hareketli yönlendirme diyagramı: gelen bir iş, yanlışsa ne olur diye soran bir yönlendirici ve hatanın maliyetine göre sıralı beş şerit, scriptten yüksek effort ile Opus'a kadar</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Bir şerit üzerinde dört kapı: deneme raporu, uygula, her satırı logla, kalanı yeniden gönder; son kapıdan geçen yeşil bir blok</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Demo modunda Switchyard konuşmalar ekranı: kullanım limitine takılan bir Claude Code oturumunu devralan Codex sohbeti, solda proje listesi</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/tr/yazilar/comments-break-virtualization/</loc>
    <lastmod>2026-09-25</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/comments-break-virtualization/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/comments-break-virtualization/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/comments-break-virtualization/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/comments-break-virtualization/cover.webp</image:loc>
      <image:title>GitHub Copilot uygulamasının yeni PR görünümü kartı: 2.000+ dosya, 1M satırlık test PR'ı ve yayına çıkanlar.</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Hareketli yönlendirme diyagramı: gelen bir iş, yanlışsa ne olur diye soran bir yönlendirici ve hatanın maliyetine göre sıralı beş şerit, scriptten yüksek effort ile Opus'a kadar</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Bir şerit üzerinde dört kapı: deneme raporu, uygula, her satırı logla, kalanı yeniden gönder; son kapıdan geçen yeşil bir blok</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Demo modunda Switchyard konuşmalar ekranı: kullanım limitine takılan bir Claude Code oturumunu devralan Codex sohbeti, solda proje listesi</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/tr/yazilar/token-diet/</loc>
    <lastmod>2026-09-25</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/token-diet/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/token-diet/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/token-diet/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/token-diet/cover.webp</image:loc>
      <image:title>Cursor agent harness'ı, %7 daha az token: sistem prompt'u yaklaşık üçte iki kırpıldı ve faturayı değiştiren dört değişiklik</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Hareketli yönlendirme diyagramı: gelen bir iş, yanlışsa ne olur diye soran bir yönlendirici ve hatanın maliyetine göre sıralı beş şerit, scriptten yüksek effort ile Opus'a kadar</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Bir şerit üzerinde dört kapı: deneme raporu, uygula, her satırı logla, kalanı yeniden gönder; son kapıdan geçen yeşil bir blok</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Demo modunda Switchyard konuşmalar ekranı: kullanım limitine takılan bir Claude Code oturumunu devralan Codex sohbeti, solda proje listesi</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/tr/yazilar/count-dont-time/</loc>
    <lastmod>2026-09-24</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/count-dont-time/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/count-dont-time/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/count-dont-time/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/count-dont-time/cover.webp</image:loc>
      <image:title>claude.ai performans çalışması kartı: em dash bug'ı ve CI'da kapı olarak kullanılan dört deterministik sayım.</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Hareketli yönlendirme diyagramı: gelen bir iş, yanlışsa ne olur diye soran bir yönlendirici ve hatanın maliyetine göre sıralı beş şerit, scriptten yüksek effort ile Opus'a kadar</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Bir şerit üzerinde dört kapı: deneme raporu, uygula, her satırı logla, kalanı yeniden gönder; son kapıdan geçen yeşil bir blok</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Demo modunda Switchyard konuşmalar ekranı: kullanım limitine takılan bir Claude Code oturumunu devralan Codex sohbeti, solda proje listesi</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/tr/yazilar/latency-cheap-crowds-not/</loc>
    <lastmod>2026-09-24</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/latency-cheap-crowds-not/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/latency-cheap-crowds-not/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/latency-cheap-crowds-not/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/latency-cheap-crowds-not/cover.webp</image:loc>
      <image:title>DIHARD III'te NVIDIA Nemotron 3 Diarization kartı: 1-4 konuşmacıda %9, 5+ konuşmacıda %28 hata ve yayın öncesi kontroller.</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Hareketli yönlendirme diyagramı: gelen bir iş, yanlışsa ne olur diye soran bir yönlendirici ve hatanın maliyetine göre sıralı beş şerit, scriptten yüksek effort ile Opus'a kadar</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Bir şerit üzerinde dört kapı: deneme raporu, uygula, her satırı logla, kalanı yeniden gönder; son kapıdan geçen yeşil bir blok</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Demo modunda Switchyard konuşmalar ekranı: kullanım limitine takılan bir Claude Code oturumunu devralan Codex sohbeti, solda proje listesi</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/tr/yazilar/agents-bill-for-waiting/</loc>
    <lastmod>2026-09-23</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/agents-bill-for-waiting/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/agents-bill-for-waiting/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/agents-bill-for-waiting/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/agents-bill-for-waiting/cover.webp</image:loc>
      <image:title>DigitalOcean Managed Agents kartı: runtime ve tool gateway, bir agent'ı taşımadan önce kontrol edilecek dört şey.</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Hareketli yönlendirme diyagramı: gelen bir iş, yanlışsa ne olur diye soran bir yönlendirici ve hatanın maliyetine göre sıralı beş şerit, scriptten yüksek effort ile Opus'a kadar</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Bir şerit üzerinde dört kapı: deneme raporu, uygula, her satırı logla, kalanı yeniden gönder; son kapıdan geçen yeşil bir blok</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Demo modunda Switchyard konuşmalar ekranı: kullanım limitine takılan bir Claude Code oturumunu devralan Codex sohbeti, solda proje listesi</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/tr/yazilar/price-war-cached-tokens/</loc>
    <lastmod>2026-09-23</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/price-war-cached-tokens/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/price-war-cached-tokens/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/price-war-cached-tokens/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/price-war-cached-tokens/cover.webp</image:loc>
      <image:title>Opus 5.5 ile GPT-6 Sol ve Luna fiyat değişiklikleri ve kontrol listesi: cache hit oranı, önce statik context, eval'ler, thinking hep açık</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Hareketli yönlendirme diyagramı: gelen bir iş, yanlışsa ne olur diye soran bir yönlendirici ve hatanın maliyetine göre sıralı beş şerit, scriptten yüksek effort ile Opus'a kadar</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Bir şerit üzerinde dört kapı: deneme raporu, uygula, her satırı logla, kalanı yeniden gönder; son kapıdan geçen yeşil bir blok</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Demo modunda Switchyard konuşmalar ekranı: kullanım limitine takılan bir Claude Code oturumunu devralan Codex sohbeti, solda proje listesi</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/tr/yazilar/knowledge-is-free-now-focus-is-still-expensive/</loc>
    <lastmod>2026-05-27</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/knowledge-is-free-now-focus-is-still-expensive/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/knowledge-is-free-now-focus-is-still-expensive/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/knowledge-is-free-now-focus-is-still-expensive/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/knowledge-is-free-now-focus-is-still-expensive/image-1.webp</image:loc>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Hareketli yönlendirme diyagramı: gelen bir iş, yanlışsa ne olur diye soran bir yönlendirici ve hatanın maliyetine göre sıralı beş şerit, scriptten yüksek effort ile Opus'a kadar</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Bir şerit üzerinde dört kapı: deneme raporu, uygula, her satırı logla, kalanı yeniden gönder; son kapıdan geçen yeşil bir blok</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Demo modunda Switchyard konuşmalar ekranı: kullanım limitine takılan bir Claude Code oturumunu devralan Codex sohbeti, solda proje listesi</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/tr/yazilar/the-ai-api-key-leak-pattern-nobody-wants-to-talk-about/</loc>
    <lastmod>2026-05-18</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/the-ai-api-key-leak-pattern-nobody-wants-to-talk-about/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/the-ai-api-key-leak-pattern-nobody-wants-to-talk-about/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/the-ai-api-key-leak-pattern-nobody-wants-to-talk-about/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/the-ai-api-key-leak-pattern-nobody-wants-to-talk-about/image-1.webp</image:loc>
      <image:title>Bir AI API key’ini kullanmanın yanlış ve doğru yolunu gösteren siyah-beyaz karşılaştırma diyagramı; solda key client-side kodda açıkta, sağda sunucuda tutuluyor.</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/the-ai-api-key-leak-pattern-nobody-wants-to-talk-about/image-2.webp</image:loc>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/the-ai-api-key-leak-pattern-nobody-wants-to-talk-about/image-3.webp</image:loc>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Hareketli yönlendirme diyagramı: gelen bir iş, yanlışsa ne olur diye soran bir yönlendirici ve hatanın maliyetine göre sıralı beş şerit, scriptten yüksek effort ile Opus'a kadar</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Bir şerit üzerinde dört kapı: deneme raporu, uygula, her satırı logla, kalanı yeniden gönder; son kapıdan geçen yeşil bir blok</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Demo modunda Switchyard konuşmalar ekranı: kullanım limitine takılan bir Claude Code oturumunu devralan Codex sohbeti, solda proje listesi</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/tr/yazilar/software-engineering-isnt-dying-it-s-evolving-from-vibe-coding-to-agentic-engineering/</loc>
    <lastmod>2026-02-16</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/software-engineering-isnt-dying-it-s-evolving-from-vibe-coding-to-agentic-engineering/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/software-engineering-isnt-dying-it-s-evolving-from-vibe-coding-to-agentic-engineering/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/software-engineering-isnt-dying-it-s-evolving-from-vibe-coding-to-agentic-engineering/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/software-engineering-isnt-dying-it-s-evolving-from-vibe-coding-to-agentic-engineering/image-1.webp</image:loc>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/software-engineering-isnt-dying-it-s-evolving-from-vibe-coding-to-agentic-engineering/image-2.webp</image:loc>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/software-engineering-isnt-dying-it-s-evolving-from-vibe-coding-to-agentic-engineering/image-3.webp</image:loc>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/software-engineering-isnt-dying-it-s-evolving-from-vibe-coding-to-agentic-engineering/image-4.webp</image:loc>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Hareketli yönlendirme diyagramı: gelen bir iş, yanlışsa ne olur diye soran bir yönlendirici ve hatanın maliyetine göre sıralı beş şerit, scriptten yüksek effort ile Opus'a kadar</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Bir şerit üzerinde dört kapı: deneme raporu, uygula, her satırı logla, kalanı yeniden gönder; son kapıdan geçen yeşil bir blok</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Demo modunda Switchyard konuşmalar ekranı: kullanım limitine takılan bir Claude Code oturumunu devralan Codex sohbeti, solda proje listesi</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/tr/yazilar/agent-ready-repo-structure-2026/</loc>
    <lastmod>2026-02-01</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/agent-ready-repo-structure-2026/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/agent-ready-repo-structure-2026/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/agent-ready-repo-structure-2026/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/agent-ready-repo-structure-2026/image-1.webp</image:loc>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/agent-ready-repo-structure-2026/image-2.webp</image:loc>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Hareketli yönlendirme diyagramı: gelen bir iş, yanlışsa ne olur diye soran bir yönlendirici ve hatanın maliyetine göre sıralı beş şerit, scriptten yüksek effort ile Opus'a kadar</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Bir şerit üzerinde dört kapı: deneme raporu, uygula, her satırı logla, kalanı yeniden gönder; son kapıdan geçen yeşil bir blok</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Demo modunda Switchyard konuşmalar ekranı: kullanım limitine takılan bir Claude Code oturumunu devralan Codex sohbeti, solda proje listesi</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/tr/yazilar/why-cs50-has-a-1-completion-rate-and-how-i-finished-twice/</loc>
    <lastmod>2026-01-05</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/insights/why-cs50-has-a-1-completion-rate-and-how-i-finished-twice/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/yazilar/why-cs50-has-a-1-completion-rate-and-how-i-finished-twice/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/insights/why-cs50-has-a-1-completion-rate-and-how-i-finished-twice/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/why-cs50-has-a-1-completion-rate-and-how-i-finished-twice/image-1.webp</image:loc>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/why-cs50-has-a-1-completion-rate-and-how-i-finished-twice/image-2.webp</image:loc>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/why-cs50-has-a-1-completion-rate-and-how-i-finished-twice/image-3.webp</image:loc>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/why-cs50-has-a-1-completion-rate-and-how-i-finished-twice/image-4.webp</image:loc>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/why-cs50-has-a-1-completion-rate-and-how-i-finished-twice/image-5.webp</image:loc>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Hareketli yönlendirme diyagramı: gelen bir iş, yanlışsa ne olur diye soran bir yönlendirici ve hatanın maliyetine göre sıralı beş şerit, scriptten yüksek effort ile Opus'a kadar</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Bir şerit üzerinde dört kapı: deneme raporu, uygula, her satırı logla, kalanı yeniden gönder; son kapıdan geçen yeşil bir blok</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Demo modunda Switchyard konuşmalar ekranı: kullanım limitine takılan bir Claude Code oturumunu devralan Codex sohbeti, solda proje listesi</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/tr/kullandiklarim/</loc>
    <lastmod>2026-10-04</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/uses/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/kullandiklarim/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/uses/"/>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/tr/iletisim/</loc>
    <lastmod>2026-10-04</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/contact/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/iletisim/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/contact/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/about/face.webp</image:loc>
      <image:title>Hüseyin Kaplan</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/tr/kaynaklar/</loc>
    <lastmod>2026-10-15</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/attribution/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/kaynaklar/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/attribution/"/>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/tr/ziyaretci-defteri/</loc>
    <lastmod>2026-10-15</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/guestbook/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/ziyaretci-defteri/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/guestbook/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/tr/lab/decision-bench/</loc>
    <lastmod>2026-10-14</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/lab/decision-bench/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/lab/decision-bench/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/lab/decision-bench/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/labs/typesafe-logo.png</image:loc>
      <image:title>TypeSafe AI logosu</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/a-word-or-a-number/card.webp</image:loc>
      <image:title>0'dan 1'e bir skor ekseninin çizgi çizimi: iki gruba ayrılmış altmış nokta, aralarında boş bir bant, bandın içinde 0.35'te vurgulu tek nokta ve 0.5'te kesik eşik çizgisi</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Hareketli yönlendirme diyagramı: gelen bir iş, yanlışsa ne olur diye soran bir yönlendirici ve hatanın maliyetine göre sıralı beş şerit, scriptten yüksek effort ile Opus'a kadar</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Bir şerit üzerinde dört kapı: deneme raporu, uygula, her satırı logla, kalanı yeniden gönder; son kapıdan geçen yeşil bir blok</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/tr/lab/eval-gates/</loc>
    <lastmod>2026-10-19</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/lab/eval-gates/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/lab/eval-gates/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/lab/eval-gates/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/when-an-average-hides-a-failure/card.webp</image:loc>
      <image:title>0.75 eşikte 0.75 ortalamanın geçtiği, zorunlu kontrol kapısının yanıt vermeme ihlalini engellediği oyun alanı.</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Hareketli yönlendirme diyagramı: gelen bir iş, yanlışsa ne olur diye soran bir yönlendirici ve hatanın maliyetine göre sıralı beş şerit, scriptten yüksek effort ile Opus'a kadar</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Bir şerit üzerinde dört kapı: deneme raporu, uygula, her satırı logla, kalanı yeniden gönder; son kapıdan geçen yeşil bir blok</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/tr/lab/switchyard/</loc>
    <lastmod>2026-10-23</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/lab/switchyard/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/lab/switchyard/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/lab/switchyard/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/labs/switchyard-handoff.webp</image:loc>
      <image:title>Demo modunda Switchyard toplu devir ekranı: yeni bir Claude hesabına teslim edilmiş iki konuşmalık paket, ikisi de Reply observed ve Title verified, 2/2 doğrulandı</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/switchyard-handoff-when-the-limit-hits/card.webp</image:loc>
      <image:title>Demo modunda Switchyard konuşmalar ekranı: kullanım limitine takılan bir Claude Code oturumunu devralan Codex sohbeti, solda proje listesi</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Hareketli yönlendirme diyagramı: gelen bir iş, yanlışsa ne olur diye soran bir yönlendirici ve hatanın maliyetine göre sıralı beş şerit, scriptten yüksek effort ile Opus'a kadar</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Bir şerit üzerinde dört kapı: deneme raporu, uygula, her satırı logla, kalanı yeniden gönder; son kapıdan geçen yeşil bir blok</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/tr/gizlilik/</loc>
    <lastmod>2026-10-15</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/privacy/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/gizlilik/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/privacy/"/>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/tr/calismalar/admin-platform/</loc>
    <lastmod>2026-10-06</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/work/admin-platform/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/calismalar/admin-platform/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/work/admin-platform/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/building-an-admin-platform-from-scratch/card.webp</image:loc>
      <image:title>Sentetik veriyle yönetim paneli demosu: kenar menü, grafikli KPI kartları, son faturalar ve talepler</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Hareketli yönlendirme diyagramı: gelen bir iş, yanlışsa ne olur diye soran bir yönlendirici ve hatanın maliyetine göre sıralı beş şerit, scriptten yüksek effort ile Opus'a kadar</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Bir şerit üzerinde dört kapı: deneme raporu, uygula, her satırı logla, kalanı yeniden gönder; son kapıdan geçen yeşil bir blok</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/tr/calismalar/email-product-block/</loc>
    <lastmod>2026-10-06</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/work/email-product-block/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/calismalar/email-product-block/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/work/email-product-block/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/a-product-url-becomes-an-email-block/card.webp</image:loc>
      <image:title>Blok paleti, yapıştırılan URL'den dolan iki sütunlu ürün bloğu ve inspector paneli olan e-posta editörü</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Hareketli yönlendirme diyagramı: gelen bir iş, yanlışsa ne olur diye soran bir yönlendirici ve hatanın maliyetine göre sıralı beş şerit, scriptten yüksek effort ile Opus'a kadar</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Bir şerit üzerinde dört kapı: deneme raporu, uygula, her satırı logla, kalanı yeniden gönder; son kapıdan geçen yeşil bir blok</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/tr/calismalar/panel-engineering/</loc>
    <lastmod>2026-10-06</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/work/panel-engineering/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/calismalar/panel-engineering/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/work/panel-engineering/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/a-guard-against-saving-to-the-wrong-brand/card.webp</image:loc>
      <image:title>Farklı markalara ait iki panel sekmesi, biri marka uyuşmazlığı penceresiyle kapalı, yanında boş durumları olan dashboard ızgarası</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Hareketli yönlendirme diyagramı: gelen bir iş, yanlışsa ne olur diye soran bir yönlendirici ve hatanın maliyetine göre sıralı beş şerit, scriptten yüksek effort ile Opus'a kadar</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Bir şerit üzerinde dört kapı: deneme raporu, uygula, her satırı logla, kalanı yeniden gönder; son kapıdan geçen yeşil bir blok</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/tr/calismalar/mobile-push/</loc>
    <lastmod>2026-10-06</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/work/mobile-push/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/calismalar/mobile-push/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/work/mobile-push/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/push-that-opens-the-right-screen/card.webp</image:loc>
      <image:title>Ön plan, arka plan ve soğuk başlatma yollarından gelen bildirim tıklamasının Home, Category, Product veya Cart açan tek bir router'a bağlanması</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Hareketli yönlendirme diyagramı: gelen bir iş, yanlışsa ne olur diye soran bir yönlendirici ve hatanın maliyetine göre sıralı beş şerit, scriptten yüksek effort ile Opus'a kadar</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Bir şerit üzerinde dört kapı: deneme raporu, uygula, her satırı logla, kalanı yeniden gönder; son kapıdan geçen yeşil bir blok</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/tr/calismalar/product-slider/</loc>
    <lastmod>2026-10-06</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/work/product-slider/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/calismalar/product-slider/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/work/product-slider/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/recommendations-in-the-stores-own-design/card.webp</image:loc>
      <image:title>Mağazanın kendi ürün kartı, orijinal slider'ın yanında bir öneri carousel'ine kopyalanmış halde</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Hareketli yönlendirme diyagramı: gelen bir iş, yanlışsa ne olur diye soran bir yönlendirici ve hatanın maliyetine göre sıralı beş şerit, scriptten yüksek effort ile Opus'a kadar</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Bir şerit üzerinde dört kapı: deneme raporu, uygula, her satırı logla, kalanı yeniden gönder; son kapıdan geçen yeşil bir blok</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/tr/calismalar/</loc>
    <lastmod>2026-10-06</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/work/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/calismalar/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/work/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/work/case-admin.webp</image:loc>
      <image:title>Genel bakış metrikleri, faturalar ve destek kayıtlarıyla yönetim paneli demosu</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/work/case-search.webp</image:loc>
      <image:title>Sentetik bir mağazada sorgu sonuçlarını gösteren arama ekranı demosu</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/work/case-rollout.webp</image:loc>
      <image:title>Terminal ve marka durum panosuyla yayın CLI demosu</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/work/case-reco.webp</image:loc>
      <image:title>Mağazanın ürün karuselini klonlayan önerilen ürün slider’ı demosu</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/work/case-widgets.webp</image:loc>
      <image:title>Ayarlar ve mağaza önizlemesiyle günlük fırsat widget’ı builder demosu</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/work/case-email.webp</image:loc>
      <image:title>URL’den doldurulan ürün bloğuyla e-posta editörü demosu</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/work/case-panel.webp</image:loc>
      <image:title>Gönderim saati ısı haritalı app push dashboard demosu</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/work/case-push.webp</image:loc>
      <image:title>Kampanya oluşturucu, teslimat hattı ve cihazla mobil push demosu</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Bir şerit üzerinde dört kapı: deneme raporu, uygula, her satırı logla, kalanı yeniden gönder; son kapıdan geçen yeşil bir blok</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/a-guard-against-saving-to-the-wrong-brand/card.webp</image:loc>
      <image:title>Farklı markalara ait iki panel sekmesi, biri marka uyuşmazlığı penceresiyle kapalı, yanında boş durumları olan dashboard ızgarası</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/a-product-url-becomes-an-email-block/card.webp</image:loc>
      <image:title>Blok paleti, yapıştırılan URL'den dolan iki sütunlu ürün bloğu ve inspector paneli olan e-posta editörü</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/tr/calismalar/search-rollout/</loc>
    <lastmod>2026-10-06</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/work/search-rollout/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/calismalar/search-rollout/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/work/search-rollout/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/rolling-out-search-to-200-brands/card.webp</image:loc>
      <image:title>Hazır, kapalı veya boş arama olarak işaretlenmiş markaların durum panosunun yanında discover, plan, apply ve verify çalıştıran bir terminal</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Hareketli yönlendirme diyagramı: gelen bir iş, yanlışsa ne olur diye soran bir yönlendirici ve hatanın maliyetine göre sıralı beş şerit, scriptten yüksek effort ile Opus'a kadar</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Bir şerit üzerinde dört kapı: deneme raporu, uygula, her satırı logla, kalanı yeniden gönder; son kapıdan geçen yeşil bir blok</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/tr/calismalar/onsite-search/</loc>
    <lastmod>2026-10-06</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/work/onsite-search/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/calismalar/onsite-search/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/work/onsite-search/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/search-overlay-on-200-storefronts/card.webp</image:loc>
      <image:title>Bir mağaza sayfası üzerinde ürün grid'i, kategori çipleri ve yazılmış bir sorguyla tam ekran arama overlay'i</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Hareketli yönlendirme diyagramı: gelen bir iş, yanlışsa ne olur diye soran bir yönlendirici ve hatanın maliyetine göre sıralı beş şerit, scriptten yüksek effort ile Opus'a kadar</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Bir şerit üzerinde dört kapı: deneme raporu, uygula, her satırı logla, kalanı yeniden gönder; son kapıdan geçen yeşil bir blok</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://huseyinkaplan.dev/tr/calismalar/onsite-widgets/</loc>
    <lastmod>2026-10-06</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://huseyinkaplan.dev/work/onsite-widgets/"/>
    <xhtml:link rel="alternate" hreflang="tr" href="https://huseyinkaplan.dev/tr/calismalar/onsite-widgets/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://huseyinkaplan.dev/work/onsite-widgets/"/>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/profile.webp</image:loc>
      <image:title>Huseyin Kaplan</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/compile-the-widget-dont-interpret-it/card.webp</image:loc>
      <image:title>Solda tek bir mağaza widget'ına dönüşen ayar paneli, sağda canlı fırsat widget'ı önizlemesi</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/route-by-what-a-wrong-answer-costs/card.webp</image:loc>
      <image:title>Hareketli yönlendirme diyagramı: gelen bir iş, yanlışsa ne olur diye soran bir yönlendirici ve hatanın maliyetine göre sıralı beş şerit, scriptten yüksek effort ile Opus'a kadar</image:title>
    </image:image>
    <image:image>
      <image:loc>https://huseyinkaplan.dev/images/posts/moving-crm-history-with-scripts/card.webp</image:loc>
      <image:title>Bir şerit üzerinde dört kapı: deneme raporu, uygula, her satırı logla, kalanı yeniden gönder; son kapıdan geçen yeşil bir blok</image:title>
    </image:image>
  </url>
</urlset>
