<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Engineering Notebook</title><description>Engineering notes on data systems, AI agents, and the tools I build to understand them.</description><link>https://emanisha.in/</link><item><title>Agent skills field guide: what to use, where to find them, what to build</title><link>https://emanisha.in/notebook/blog/agent-skills-field-guide/</link><guid isPermaLink="true">https://emanisha.in/notebook/blog/agent-skills-field-guide/</guid><description>Anatomy of an agent skill, a checklist mapping tasks to skills from a real inventory, how local skills compare to Claude conventions, and which custom skills are worth building.</description><pubDate>Sat, 05 Sep 2026 00:00:00 GMT</pubDate></item><item><title>I Let the Browser Award XP. That Was a Mistake.</title><link>https://emanisha.in/notebook/blog/de-browser-xp/</link><guid isPermaLink="true">https://emanisha.in/notebook/blog/de-browser-xp/</guid><description>The data-eng-mastery app once trusted Priya&apos;s browser to award experience points. Browsers can lie. The story of BUG-017: what I assumed, what broke, and why the server owns rewards now.</description><pubDate>Sat, 05 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Two Codebases, One Argument: The Dashboard 500 and the Drift Behind It</title><link>https://emanisha.in/notebook/blog/de-contract-drift/</link><guid isPermaLink="true">https://emanisha.in/notebook/blog/de-contract-drift/</guid><description>A dashboard that 500&apos;d on every load, practice feedback showing blanks, a leaderboard that couldn&apos;t count — eight contract-drift sites in data-eng-mastery, one missing guardrail.</description><pubDate>Sat, 05 Sep 2026 00:00:00 GMT</pubDate></item><item><title>The First Customer Crashed Checkout: Five Paths Nobody Ever Ran</title><link>https://emanisha.in/notebook/blog/de-dead-code-paths/</link><guid isPermaLink="true">https://emanisha.in/notebook/blog/de-dead-code-paths/</guid><description>A NameError on first subscription, a GDPR delete that selected instead of deleting, a fake export URL, a missing exam column — data-eng-mastery&apos;s unexecuted paths, fixed and one still open.</description><pubDate>Sat, 05 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Green Tests, Red Services: The Suite Passed and the Backend Still Disagreed</title><link>https://emanisha.in/notebook/blog/de-green-tests-red-services/</link><guid isPermaLink="true">https://emanisha.in/notebook/blog/de-green-tests-red-services/</guid><description>Eighteen failing tests fixed to 86/86 in data-eng-mastery — and the service-layer drift the suite didn&apos;t catch: stale columns, duplicate SM-2 math, a canonical module nobody calls.</description><pubDate>Sat, 05 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Nobody Could Log In: Four Bugs Wearing a Trenchcoat</title><link>https://emanisha.in/notebook/blog/de-nobody-could-log-in/</link><guid isPermaLink="true">https://emanisha.in/notebook/blog/de-nobody-could-log-in/</guid><description>Tokens that were always null, a guard that bounced everyone, a login body that serialized to &apos;{}&apos;, and a refresh flow that never fired — the data-eng-mastery auth saga.</description><pubDate>Sat, 05 Sep 2026 00:00:00 GMT</pubDate></item><item><title>The Plan Said Done: A Hardening That Exists Mostly as Checkmarks</title><link>https://emanisha.in/notebook/blog/de-plan-said-done/</link><guid isPermaLink="true">https://emanisha.in/notebook/blog/de-plan-said-done/</guid><description>A leaked API key still in config, token hardening absent from every branch, pipeline stubs reporting zeros — and the untracked plan file that marks them all done.</description><pubDate>Sat, 05 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Two Writes That Silently Discarded You</title><link>https://emanisha.in/notebook/blog/de-silent-writes/</link><guid isPermaLink="true">https://emanisha.in/notebook/blog/de-silent-writes/</guid><description>A password change that toasted success and changed nothing, and study sessions that saved zeros — data-eng-mastery&apos;s silent-write failures (BUG-006, BUG-008).</description><pubDate>Sat, 05 Sep 2026 00:00:00 GMT</pubDate></item><item><title>I inventoried 80 projects on my own hard drive</title><link>https://emanisha.in/notebook/blog/inventory-80-projects/</link><guid isPermaLink="true">https://emanisha.in/notebook/blog/inventory-80-projects/</guid><description>How an exclusion-first PowerShell scanner, deterministic scoring, and honest caveats turned 300 GB of accumulated side projects into a triage-able inventory.</description><pubDate>Fri, 04 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Postgres for everything: rows, vectors, and text in one store</title><link>https://emanisha.in/notebook/blog/postgres-for-everything/</link><guid isPermaLink="true">https://emanisha.in/notebook/blog/postgres-for-everything/</guid><description>Implement hybrid content search without new infrastructure: one similarity query, the dimension contract, and an honest split criterion.</description><pubDate>Sat, 05 Sep 2026 00:00:00 GMT</pubDate></item><item><title>FastAPI in production: three afternoons to boring reliability</title><link>https://emanisha.in/notebook/blog/production-fastapi/</link><guid isPermaLink="true">https://emanisha.in/notebook/blog/production-fastapi/</guid><description>Move one write server-side, enforce layers with tests, install CI gates — each step grounded in real code from a learning-platform backend.</description><pubDate>Sat, 05 Sep 2026 00:00:00 GMT</pubDate></item></channel></rss>