<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet href="/rss-styles.xsl" type="text/xsl"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Samet Samyeli · Blog</title><description>Senior full-stack engineer and founder of gazla.co and lodos.md. Writing about software architecture, security and AI.</description><link>https://samye.li/</link><language>en</language><atom:link href="https://samye.li/rss.xml" rel="self" type="application/rss+xml"/><lastBuildDate>Sat, 07 Nov 2026 15:54:16 GMT</lastBuildDate><image><title>Samet Samyeli</title><url>https://samye.li/icon-512.png</url><link>https://samye.li/</link></image><item><title>NFS World in the Browser: From 11 fps to 80</title><link>https://samye.li/blog/nfs-world-in-the-browser-performance/</link><guid isPermaLink="true">https://samye.li/blog/nfs-world-in-the-browser-performance/</guid><description>Need for Speed World is a 2010 Windows game. We run it in Chrome by lifting its x86 code to WebAssembly and its Direct3D 9 calls to WebGPU. It started at 10–11 fps. This is how we profiled it, what was actually slow, and what fixed it.</description><pubDate>Mon, 02 Nov 2026 00:00:00 GMT</pubDate><category>webassembly</category><category>performance</category><category>webgpu</category><category>reverse-engineering</category><category>nfsworld</category><author>sam@samye.li (Samet Samyeli)</author></item><item><title>Stop Defending Your Moat with Policy (3/5)</title><link>https://lodos.md/en/blog/make-your-moat-a-ratchet</link><guid isPermaLink="true">https://lodos.md/en/blog/make-your-moat-a-ratchet</guid><description>Policy moats rot the moment a junior engineer or a late-night refactor arrives. Two assertions run on every commit, one that fails the build on a refusal regression and one that fails the wiki on a forgotten lesson, both sealed in the same HMAC chain.</description><pubDate>Tue, 11 Aug 2026 00:00:00 GMT</pubDate><category>moat</category><category>wiki</category><category>security</category><category>architecture</category><author>sam@samye.li (Samet Samyeli)</author></item><item><title>We Built a Workflow Engine That Can&apos;t Have n8n&apos;s CVE (1/5)</title><link>https://lodos.md/en/blog/workflow-engine-cant-have-n8n-cve</link><guid isPermaLink="true">https://lodos.md/en/blog/workflow-engine-cant-have-n8n-cve</guid><description>n8n shipped a CVSS 9.9 RCE through expression eval. The lodos workflow engine can&apos;t have that bug, there&apos;s no evaluator anywhere to inject into, and a build-time grep keeps it that way.</description><pubDate>Thu, 02 Jul 2026 00:00:00 GMT</pubDate><category>workflow-engine</category><category>security</category><category>architecture</category><category>zero-knowledge</category><author>sam@samye.li (Samet Samyeli)</author></item><item><title>Zero-Knowledge as Architectural Blindness (2/5)</title><link>https://lodos.md/en/blog/zero-knowledge-architectural-blindness</link><guid isPermaLink="true">https://lodos.md/en/blog/zero-knowledge-architectural-blindness</guid><description>Most secret managers expose getSecret(name), and the plaintext lands in the AI&apos;s transcript. The lodos schema makes that exchange structurally unanswerable, the AI cannot see a secret&apos;s value, and the build enforces it.</description><pubDate>Thu, 02 Jul 2026 00:00:00 GMT</pubDate><category>zero-knowledge</category><category>security</category><category>architecture</category><category>encryption</category><author>sam@samye.li (Samet Samyeli)</author></item><item><title>A wiki that maintains itself: the Karpathy LLM-wiki pattern</title><link>https://lodos.md/en/blog/self-maintaining-wiki-karpathy-pattern</link><guid isPermaLink="true">https://lodos.md/en/blog/self-maintaining-wiki-karpathy-pattern</guid><description>Most company wikis rot the moment you stop tending them. The Karpathy LLM-wiki pattern turns a knowledge base into something your AI keeps alive. Here&apos;s how.</description><pubDate>Mon, 22 Jun 2026 00:00:00 GMT</pubDate><category>wiki</category><category>knowledge-graph</category><category>llm</category><category>karpathy</category><category>ai-native</category><author>sam@samye.li (Samet Samyeli)</author></item><item><title>Local-first software: why your company&apos;s data belongs on your machine</title><link>https://lodos.md/en/blog/local-first-software-own-your-data</link><guid isPermaLink="true">https://lodos.md/en/blog/local-first-software-own-your-data</guid><description>The cloud became the default home for everything you own. Local-first flips that back: your data lives on your device, works offline, and answers only to you.</description><pubDate>Mon, 15 Jun 2026 00:00:00 GMT</pubDate><category>local-first</category><category>offline</category><category>data-ownership</category><category>privacy</category><author>sam@samye.li (Samet Samyeli)</author></item><item><title>How your AI uses your Stripe key without ever seeing it</title><link>https://lodos.md/en/blog/ai-that-cant-read-your-secrets</link><guid isPermaLink="true">https://lodos.md/en/blog/ai-that-cant-read-your-secrets</guid><description>The runtime secret-injection pattern that lets lodos charge a customer with your Stripe key, while the key never enters the AI model&apos;s context.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate><category>ai-security</category><category>secrets</category><category>prompt-injection</category><category>architecture</category><author>sam@samye.li (Samet Samyeli)</author></item><item><title>Why we built a zero-knowledge company OS</title><link>https://lodos.md/en/blog/the-zero-knowledge-company-os</link><guid isPermaLink="true">https://lodos.md/en/blog/the-zero-knowledge-company-os</guid><description>Your company lives scattered across tools that all want your data on their servers. Here&apos;s why lodos keeps everything on your machine, and can&apos;t read a byte.</description><pubDate>Sat, 30 May 2026 00:00:00 GMT</pubDate><category>zero-knowledge</category><category>local-first</category><category>company-os</category><category>privacy</category><author>sam@samye.li (Samet Samyeli)</author></item></channel></rss>