OMAR
Field NotesCV
← Home

Field Notes

Everything I have learned building software in public — Claude Code workflows, security habits, Arabic-first design, and the unglamorous parts of client work.

95 notes
DevSecOpsSecurityAI EngineeringAI SecurityDesignFrontendPerformanceEngineeringToolingSEOProductCareer

95 notes

Blocking Bad Traffic by Behaviour, Not by IP ListDevSecOpsBlocking Bad Traffic by Behaviour, Not by IP ListRead your own logs, detect the patterns that matter, and act. Plus the shared-signal model, and why you should not trust it blindly.15 Aug 2026 · 3 min readAuthorisation Rules Belong in One PlaceSecurityAuthorisation Rules Belong in One PlaceWhen 'who can do what' is scattered across handlers, no one can answer the question. Policy as code makes the rules readable, testable and reviewable.15 Aug 2026 · 3 min readThe OWASP Cheat Sheets Are the Answer to Most Security QuestionsSecurityThe OWASP Cheat Sheets Are the Answer to Most Security QuestionsNot the Top 10 — the cheat sheets. Concrete, implementation-level guidance on the things you are actually about to get wrong.14 Aug 2026 · 3 min readSanitising HTML: Do Not Write Your OwnSecuritySanitising HTML: Do Not Write Your OwnIf your app renders HTML it did not write, you need a sanitiser. Regex is not a sanitiser, and the bypasses that prove it are more creative than you expect.14 Aug 2026 · 3 min readYour RAG Pipeline Is Only as Good as the Text You Fed ItAI EngineeringYour RAG Pipeline Is Only as Good as the Text You Fed ItMost retrieval failures happen at ingestion. Converting documents to clean structured markdown before chunking fixes more than any embedding model change.13 Aug 2026 · 3 min readAutonomous Coding Agents: Where the Line IsAI EngineeringAutonomous Coding Agents: Where the Line IsAn agent that plans, edits, runs and iterates on its own is impressive. The engineering question is what it is allowed to touch while it does that.13 Aug 2026 · 3 min readYou Cannot Debug an LLM Feature You Cannot SeeAI EngineeringYou Cannot Debug an LLM Feature You Cannot SeeTraces, prompt versions and evaluation scores for AI features. Without them, 'it gave a bad answer' is a bug report with no reproduction steps.12 Aug 2026 · 3 min readAgents That Drive a Browser: Useful and DangerousAI SecurityAgents That Drive a Browser: Useful and DangerousLetting a model click through a real website solves problems no API covers. It also hands a language model your session cookies — here is how to scope that.12 Aug 2026 · 3 min readThe Patterns Worth Stealing From the Claude CookbooksAI EngineeringThe Patterns Worth Stealing From the Claude CookbooksRunnable notebooks beat prose about prompting. The four patterns in there that changed how I build features on top of a model.11 Aug 2026 · 3 min readOne Gateway in Front of Every ModelAI EngineeringOne Gateway in Front of Every ModelA proxy that speaks one API to your app and many APIs to providers. The value is not switching models — it is the key handling, budgets and logs you get for free.11 Aug 2026 · 3 min readIcons Are a System, Not a Folder of SVGsDesignIcons Are a System, Not a Folder of SVGsConsistent stroke weight, one grid, tree-shakeable imports, and the accessibility rule that decides whether an icon should be announced at all.10 Aug 2026 · 3 min readClaude Code: What Changes When the Agent Has a TerminalAI EngineeringClaude Code: What Changes When the Agent Has a TerminalAn assistant that can read the repo, run the tests and see the failure is a different tool from one that autocompletes. Here is how I actually use it, and where I do not.10 Aug 2026 · 3 min readReact Three Fiber: 3D Without Leaving ReactFrontendReact Three Fiber: 3D Without Leaving ReactThree.js as components, with the reconciler doing the scene-graph bookkeeping. The hard part was never the code — it is deciding whether the page needs 3D at all.09 Aug 2026 · 3 min readBefore You Reach for a Faster ReactPerformanceBefore You Reach for a Faster ReactCompilers that speed up React rendering are real and clever. They also solve the second-biggest problem on most pages — here is how to find out if you have the first one.09 Aug 2026 · 3 min readJotai: State That Only Wakes Who Needs ItFrontendJotai: State That Only Wakes Who Needs ItBottom-up atoms instead of a single store. Derived state is a computed atom, and only the components reading a changed atom re-render.08 Aug 2026 · 3 min readType-Safe Routing: No More Guessing ParamsFrontendType-Safe Routing: No More Guessing ParamsIf a route's params and search schema are typed, a broken link becomes a compile error instead of a blank page someone finds in production.08 Aug 2026 · 3 min readStorybook Is a Contract, Not a GalleryFrontendStorybook Is a Contract, Not a GalleryThe value is not the pretty component browser. It is that every state a component can be in has to be written down, and the ugly ones stop being discovered in production.07 Aug 2026 · 3 min readHono: An API That Runs AnywhereEngineeringHono: An API That Runs AnywhereBuilt on Web Standards rather than Node APIs, so the same handler runs on Node, Bun, Deno, Cloudflare Workers and Lambda. Small, typed and genuinely fast.07 Aug 2026 · 3 min read