<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Mohamed Ashraf Elsaed: blog</title><description>Practical posts on AI coding agents, MCP, Laravel, Node.js and engineering.</description><link>https://mohamedashrafelsaed.com/</link><language>en</language><item><title>A benchmark gate that catches small regressions</title><link>https://mohamedashrafelsaed.com/blog/a-benchmark-gate-that-catches-small-regressions/</link><guid isPermaLink="true">https://mohamedashrafelsaed.com/blog/a-benchmark-gate-that-catches-small-regressions/</guid><description>How a seeded 50,000-row corpus, a recall baseline and a p95 latency baseline turned a search benchmark into a pass or fail check that runs on every pull request.</description><pubDate>Sat, 31 Oct 2026 00:00:00 GMT</pubDate><category>benchmarks</category><category>testing</category><category>sqlite</category><author>Mohamed Ashraf Elsaed</author></item><item><title>What aletheia-mem gives you, and what it does not</title><link>https://mohamedashrafelsaed.com/blog/aletheia-mem-benefits-and-limits/</link><guid isPermaLink="true">https://mohamedashrafelsaed.com/blog/aletheia-mem-benefits-and-limits/</guid><description>The benefits of Aletheia with their numbers and sources: one local store for many tools, rules written once, private by default, measured retrieval, and the limits.</description><pubDate>Sat, 31 Oct 2026 00:00:00 GMT</pubDate><category>aletheia</category><category>ai-agents</category><category>mcp</category><category>benchmarks</category><author>Mohamed Ashraf Elsaed</author></item><item><title>Aletheia vs claude-mem: reproducible numbers</title><link>https://mohamedashrafelsaed.com/blog/aletheia-vs-claude-mem-numbers/</link><guid isPermaLink="true">https://mohamedashrafelsaed.com/blog/aletheia-vs-claude-mem-numbers/</guid><description>A retrieval benchmark of Aletheia against claude-mem 15.2.0 on LoCoMo, with the commands to repeat it, the limits of the comparison and where claude-mem is far ahead.</description><pubDate>Sat, 31 Oct 2026 00:00:00 GMT</pubDate><category>benchmarks</category><category>ai-agents</category><category>claude-code</category><author>Mohamed Ashraf Elsaed</author></item><item><title>CI on Linux, macOS and Windows for a Bun project</title><link>https://mohamedashrafelsaed.com/blog/cross-platform-ci-for-a-bun-project/</link><guid isPermaLink="true">https://mohamedashrafelsaed.com/blog/cross-platform-ci-for-a-bun-project/</guid><description>What broke when I added a Windows runner to a Bun and SQLite project: temp-folder cleanup, path separators, shell assumptions and test timeouts, and how each was fixed.</description><pubDate>Sat, 31 Oct 2026 00:00:00 GMT</pubDate><category>ci</category><category>bun</category><category>testing</category><author>Mohamed Ashraf Elsaed</author></item><item><title>Hooks designed to fail open for AI coding agents</title><link>https://mohamedashrafelsaed.com/blog/hooks-that-never-block-your-agent/</link><guid isPermaLink="true">https://mohamedashrafelsaed.com/blog/hooks-that-never-block-your-agent/</guid><description>A failing hook must not stop your AI coding tool. How Aletheia hooks print nothing and exit 0 on error, spool to disk when the database is busy, and what the tests showed.</description><pubDate>Sat, 31 Oct 2026 00:00:00 GMT</pubDate><category>hooks</category><category>reliability</category><category>ai-agents</category><author>Mohamed Ashraf Elsaed</author></item><item><title>Quality gate for AI-written Laravel: system design</title><link>https://mohamedashrafelsaed.com/blog/system-design-claude-code-quality-gate/</link><guid isPermaLink="true">https://mohamedashrafelsaed.com/blog/system-design-claude-code-quality-gate/</guid><description>How Claude Kit is built: one script behind the pre-commit and Stop hooks, the same tools in CI, a referenced runtime, and files you own that are not replaced unasked.</description><pubDate>Sat, 31 Oct 2026 00:00:00 GMT</pubDate><category>system-design</category><category>claude-code</category><category>laravel</category><category>quality-gate</category><author>Mohamed Ashraf Elsaed</author></item><item><title>Local-first memory for AI agents: system design</title><link>https://mohamedashrafelsaed.com/blog/system-design-local-first-agent-memory/</link><guid isPermaLink="true">https://mohamedashrafelsaed.com/blog/system-design-local-first-agent-memory/</guid><description>How Aletheia is built: hooks designed to fail open, redaction before storage, one SQLite file, a leased job queue and a bounded session-start block. Choices and trade-offs.</description><pubDate>Sat, 31 Oct 2026 00:00:00 GMT</pubDate><category>system-design</category><category>ai-agents</category><category>mcp</category><category>sqlite</category><author>Mohamed Ashraf Elsaed</author></item><item><title>Loupe system design: pins that survive redeploys</title><link>https://mohamedashrafelsaed.com/blog/system-design-loupe-re-anchoring/</link><guid isPermaLink="true">https://mohamedashrafelsaed.com/blog/system-design-loupe-re-anchoring/</guid><description>How Loupe is built: a comment&apos;s journey from a click to an agent, the anchor fingerprint and its scoring, and the lifecycle rule that only a person resolves.</description><pubDate>Sat, 31 Oct 2026 00:00:00 GMT</pubDate><category>system-design</category><category>loupe</category><category>mcp</category><category>frontend</category><author>Mohamed Ashraf Elsaed</author></item><item><title>How to use aletheia-mem: memory for AI agents</title><link>https://mohamedashrafelsaed.com/blog/use-aletheia-mem-memory-and-rules/</link><guid isPermaLink="true">https://mohamedashrafelsaed.com/blog/use-aletheia-mem-memory-and-rules/</guid><description>Install aletheia-mem, save and search memories, add a rule, see what a new session receives and preview the Claude Code installer. Run in a throwaway folder.</description><pubDate>Sat, 31 Oct 2026 00:00:00 GMT</pubDate><category>aletheia</category><category>ai-agents</category><category>mcp</category><category>tutorial</category><author>Mohamed Ashraf Elsaed</author></item><item><title>How to use Loupe: pin feedback for Claude Code</title><link>https://mohamedashrafelsaed.com/blog/use-loupe-with-claude-code/</link><guid isPermaLink="true">https://mohamedashrafelsaed.com/blog/use-loupe-with-claude-code/</guid><description>Run Loupe locally, pin a comment on a live page, triage it on a board and let Claude Code read and answer it over MCP. Steps, screenshots and what I checked.</description><pubDate>Sat, 31 Oct 2026 00:00:00 GMT</pubDate><category>loupe</category><category>mcp</category><category>claude-code</category><category>tutorial</category><author>Mohamed Ashraf Elsaed</author></item><item><title>Why AI coding agents forget between sessions</title><link>https://mohamedashrafelsaed.com/blog/why-ai-coding-agents-forget/</link><guid isPermaLink="true">https://mohamedashrafelsaed.com/blog/why-ai-coding-agents-forget/</guid><description>AI coding agents start every session blank. Here is how Aletheia captures sessions with hooks, stores them in SQLite and feeds context back, all on your machine.</description><pubDate>Sat, 31 Oct 2026 00:00:00 GMT</pubDate><category>ai-agents</category><category>mcp</category><category>claude-code</category><author>Mohamed Ashraf Elsaed</author></item></channel></rss>