<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Ikbal Turgut — Writing</title><description>Independent notes on engineering, systems, and product craft.</description><link>https://ikbalturgut.fyi/</link><language>en-us</language><item><title>How to Build Conversion Data Everyone Can Reproduce</title><link>https://ikbalturgut.fyi/writing/reproducible-conversion-data/</link><guid isPermaLink="true">https://ikbalturgut.fyi/writing/reproducible-conversion-data/</guid><description>Build reliable conversion data with clear event contracts, stable IDs, observable deduplication, and end-to-end validation.</description><pubDate>Fri, 11 Sep 2026 00:00:00 GMT</pubDate><category>data systems</category></item><item><title>When AI can approve a pull request</title><link>https://ikbalturgut.fyi/writing/ai-pull-request-approval/</link><guid isPermaLink="true">https://ikbalturgut.fyi/writing/ai-pull-request-approval/</guid><description>What AI pull request approval changes about governance, ownership, permissions, evidence, and safe software delivery.</description><pubDate>Wed, 09 Sep 2026 00:00:00 GMT</pubDate><category>AI governance</category></item><item><title>What scaling an ASP.NET Core backend actually requires</title><link>https://ikbalturgut.fyi/writing/aspnet-core-scalable-backends/</link><guid isPermaLink="true">https://ikbalturgut.fyi/writing/aspnet-core-scalable-backends/</guid><description>Learn how to scale ASP.NET Core backends with explicit boundaries, caching, database discipline, timeouts, retries, and observable failure handling.</description><pubDate>Sat, 05 Sep 2026 00:00:00 GMT</pubDate><category>backend systems</category></item><item><title>Latency budgets are design tools</title><link>https://ikbalturgut.fyi/notes/latency-is-a-design-tool/</link><guid isPermaLink="true">https://ikbalturgut.fyi/notes/latency-is-a-design-tool/</guid><description>The 200ms budget is not only an SRE metric; it shapes what the interface can promise and when it should ask the user to wait.</description><pubDate>Sat, 05 Sep 2026 00:00:00 GMT</pubDate><category>principle</category></item><item><title>AI-assisted code analysis you can actually trust</title><link>https://ikbalturgut.fyi/writing/ai-assisted-code-analysis/</link><guid isPermaLink="true">https://ikbalturgut.fyi/writing/ai-assisted-code-analysis/</guid><description>Design AI-assisted code analysis with repository scope, evidence links, calibrated confidence, reproducible results, and human review.</description><pubDate>Fri, 04 Sep 2026 00:00:00 GMT</pubDate><category>AI systems</category></item><item><title>Naming is part of system design</title><link>https://ikbalturgut.fyi/notes/names-are-part-of-system-design/</link><guid isPermaLink="true">https://ikbalturgut.fyi/notes/names-are-part-of-system-design/</guid><description>A system is only as clear as its worst name. Renaming is refactoring, and the cost of postponing it compounds across every boundary.</description><pubDate>Fri, 04 Sep 2026 00:00:00 GMT</pubDate><category>principle</category></item><item><title>Designing real-time analytics with ClickHouse</title><link>https://ikbalturgut.fyi/writing/clickhouse-real-time-analytics/</link><guid isPermaLink="true">https://ikbalturgut.fyi/writing/clickhouse-real-time-analytics/</guid><description>Design ClickHouse real-time analytics with event schemas, tenant scope, query performance, aggregation, freshness, and late-event handling.</description><pubDate>Thu, 03 Sep 2026 00:00:00 GMT</pubDate><category>data systems</category></item><item><title>Designing reliable AI agents</title><link>https://ikbalturgut.fyi/writing/reliable-ai-agents/</link><guid isPermaLink="true">https://ikbalturgut.fyi/writing/reliable-ai-agents/</guid><description>Design reliable AI agents with tool contracts, durable state, idempotency, approvals, loop prevention, recovery, and observability.</description><pubDate>Wed, 02 Sep 2026 00:00:00 GMT</pubDate><category>AI systems</category></item><item><title>Streaming rows changed the way the table was read</title><link>https://ikbalturgut.fyi/notes/stream-the-rows/</link><guid isPermaLink="true">https://ikbalturgut.fyi/notes/stream-the-rows/</guid><description>Replacing pagination with streamed rows was not only a speed experiment; it changed how people scanned, paused, and trusted the data table.</description><pubDate>Wed, 02 Sep 2026 00:00:00 GMT</pubDate><category>experiment</category></item><item><title>Database migrations should have a road back</title><link>https://ikbalturgut.fyi/writing/reversible-migrations/</link><guid isPermaLink="true">https://ikbalturgut.fyi/writing/reversible-migrations/</guid><description>Design reversible database migrations with expand-migrate-contract, safe backfills, compatibility windows, rollback plans, and observability.</description><pubDate>Tue, 01 Sep 2026 00:00:00 GMT</pubDate><category>backend systems</category></item><item><title>Why long context does not equal understanding</title><link>https://ikbalturgut.fyi/writing/long-context-understanding/</link><guid isPermaLink="true">https://ikbalturgut.fyi/writing/long-context-understanding/</guid><description>Understand why long context fails: context dilution, irrelevant retrieval, ordering, chunking, provenance, and context budgeting.</description><pubDate>Mon, 31 Aug 2026 00:00:00 GMT</pubDate><category>AI systems</category></item><item><title>Most cache bugs are invalidation bugs</title><link>https://ikbalturgut.fyi/notes/cache-bugs-are-invalidation-bugs/</link><guid isPermaLink="true">https://ikbalturgut.fyi/notes/cache-bugs-are-invalidation-bugs/</guid><description>A cache can make a correct answer fast, but it cannot decide by itself when that answer stopped being true.</description><pubDate>Mon, 31 Aug 2026 00:00:00 GMT</pubDate><category>bookmark</category></item><item><title>Model routing is a product decision, not only a cost optimization</title><link>https://ikbalturgut.fyi/writing/model-routing-cost-optimization/</link><guid isPermaLink="true">https://ikbalturgut.fyi/writing/model-routing-cost-optimization/</guid><description>Optimize LLM model routing with workload classes, quality gates, fallback, caching, latency budgets, and cost observability.</description><pubDate>Sun, 30 Aug 2026 00:00:00 GMT</pubDate><category>AI systems</category></item><item><title>Dashboard performance is a product problem</title><link>https://ikbalturgut.fyi/writing/dashboard-performance/</link><guid isPermaLink="true">https://ikbalturgut.fyi/writing/dashboard-performance/</guid><description>Improve dashboard performance through useful paint, data readiness, stable loading states, efficient queries, caching, and honest freshness.</description><pubDate>Sat, 29 Aug 2026 00:00:00 GMT</pubDate><category>performance</category></item><item><title>Prefer boring infrastructure and interesting product</title><link>https://ikbalturgut.fyi/notes/boring-infrastructure/</link><guid isPermaLink="true">https://ikbalturgut.fyi/notes/boring-infrastructure/</guid><description>The exciting parts of a stack are rarely where the product creates value; dependable infrastructure gives the team room to make the product distinctive.</description><pubDate>Sat, 29 Aug 2026 00:00:00 GMT</pubDate><category>principle</category></item><item><title>AI-assisted developer tools need a smaller promise</title><link>https://ikbalturgut.fyi/writing/ai-assisted-developer-tools/</link><guid isPermaLink="true">https://ikbalturgut.fyi/writing/ai-assisted-developer-tools/</guid><description>Build trustworthy AI developer tools with bounded tasks, evidence, structured output, privacy controls, evaluation, and human review.</description><pubDate>Thu, 27 Aug 2026 00:00:00 GMT</pubDate><category>developer experience</category></item><item><title>Every migration needs a road back</title><link>https://ikbalturgut.fyi/notes/migrations-need-a-road-back/</link><guid isPermaLink="true">https://ikbalturgut.fyi/notes/migrations-need-a-road-back/</guid><description>Writing the reverse path forces a team to understand compatibility, information loss, and the data that must survive a failed release.</description><pubDate>Thu, 27 Aug 2026 00:00:00 GMT</pubDate><category>experiment</category></item><item><title>Testing is a boundary design problem</title><link>https://ikbalturgut.fyi/writing/testing-backend-systems/</link><guid isPermaLink="true">https://ikbalturgut.fyi/writing/testing-backend-systems/</guid><description>Design backend tests around contracts, scope boundaries, failure paths, and observable behavior instead of only testing individual methods.</description><pubDate>Wed, 26 Aug 2026 00:00:00 GMT</pubDate><category>testing</category></item><item><title>Observability is a product contract</title><link>https://ikbalturgut.fyi/writing/observability-product-contract/</link><guid isPermaLink="true">https://ikbalturgut.fyi/writing/observability-product-contract/</guid><description>Design observability around the decisions people need to make, connecting logs, metrics, traces, freshness, and user-visible failure states.</description><pubDate>Mon, 24 Aug 2026 00:00:00 GMT</pubDate><category>observability</category></item><item><title>API design that survives change</title><link>https://ikbalturgut.fyi/writing/api-design-survives-change/</link><guid isPermaLink="true">https://ikbalturgut.fyi/writing/api-design-survives-change/</guid><description>Design APIs that can evolve safely through explicit contracts, stable errors, scoped inputs, compatibility windows, and honest response states.</description><pubDate>Sat, 22 Aug 2026 00:00:00 GMT</pubDate><category>API design</category></item><item><title>System boundaries are design decisions</title><link>https://ikbalturgut.fyi/writing/system-boundaries-as-design/</link><guid isPermaLink="true">https://ikbalturgut.fyi/writing/system-boundaries-as-design/</guid><description>Make software systems easier to change by designing explicit boundaries for ownership, data, failure, authorization, and deployment.</description><pubDate>Thu, 20 Aug 2026 00:00:00 GMT</pubDate><category>architecture</category></item></channel></rss>