<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Notes by Ayyoub Amjahed</title><description>Engineering notes on Java backends, identity and access management, and self-hosted infrastructure. Projects documented with their decisions and their mistakes.</description><link>https://ayyoub.dev/</link><language>en</language><item><title>The state lives outside the model: how a desk pet knows you haven&apos;t talked to it in three days</title><link>https://ayyoub.dev/blog/el-estado-vive-fuera-del-modelo/</link><guid isPermaLink="true">https://ayyoub.dev/blog/el-estado-vive-fuera-del-modelo/</guid><description>An LLM with memory gives you a friendly chatbot. A state machine with an injected clock gives you a creature. The line &quot;I know&quot; is only funny if it&apos;s true.</description><pubDate>Mon, 07 Sep 2026 00:00:00 GMT</pubDate></item><item><title>I spent days tuning the prompt, and what actually moved accuracy was changing the model</title><link>https://ayyoub.dev/blog/el-modelo-pesa-mas-que-el-prompt/</link><guid isPermaLink="true">https://ayyoub.dev/blog/el-modelo-pesa-mas-que-el-prompt/</guid><description>I went from 30.7 % to 100 % of days correct reading shift rosters. Almost none of that gain came from the prompt, and the metric that mattered wasn&apos;t accuracy.</description><pubDate>Wed, 02 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Three layers, two problems: a GPU passthrough that stopped halfway</title><link>https://ayyoub.dev/blog/tres-capas-dos-problemas/</link><guid isPermaLink="true">https://ayyoub.dev/blog/tres-capas-dos-problemas/</guid><description>The device was in the container, the check confirmed it, and the app still couldn&apos;t see it. Because the app was running one layer further in. And once it could see it, it had no permission to open it.</description><pubDate>Tue, 01 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Three times it &quot;looked configured&quot;: verify by reading the result, not by assuming</title><link>https://ayyoub.dev/blog/parecia-configurado/</link><guid isPermaLink="true">https://ayyoub.dev/blog/parecia-configurado/</guid><description>A sysctl that didn&apos;t persist, a udev rule that would never have fired and a sed that edited a comment. No command returned an error. The habit that catches all three is the same one.</description><pubDate>Mon, 31 Aug 2026 00:00:00 GMT</pubDate></item><item><title>A backup you never restore is a big folder with a reassuring name</title><link>https://ayyoub.dev/blog/un-backup-que-no-se-restaura/</link><guid isPermaLink="true">https://ayyoub.dev/blog/un-backup-que-no-se-restaura/</guid><description>I set up automatic backups for nine machines and everything showed green. The photo library, the only irreplaceable data, was left out. What gave it away was a backup that finished too fast.</description><pubDate>Sun, 30 Aug 2026 00:00:00 GMT</pubDate></item></channel></rss>