ENGINEERING NOTES

Notes on building real systems

Plain, practical writing on websites, platforms, and automation for businesses in Saudi Arabia.

Notes

Approvals inside Teams with item-level permissions

An employee request system succeeds or fails on one detail: can an employee see other people's requests? Here is how it is set, and why you should not break permissions across thousands of items.

19 September 2026
Notes

Send-on-behalf from a shared mailbox: the setup that works

Having staff send from the company's official address rather than their own is a recurring requirement. This is the correct setup, and the permission distinction that trips people up.

16 September 2026
Projects

When to choose edge computing and when not to

The edge is not a faster server, it is a different execution model with different constraints. These are the constraints I actually hit, and when they work in your favour.

13 September 2026
Projects

Do not marry your architecture to one model provider

I ran the same agent system on two different model families. The goal was not saving cost, it was proving the design does not collapse if the provider changes.

10 September 2026
Projects

Human approval before anything reaches the customer

The decision that most affected client trust in an automated system was not technical: everything going out passes a person first. This is how I built it so it does not become a bottleneck.

7 September 2026
Projects

A circuit breaker for the AI gateway

When the model gateway stops responding, a naive system keeps retrying, slowing everything and burning quota. A breaker stops early and recovers gradually.

4 September 2026
Projects

A validator that rejects any output without a source

The only approach that worked for me against hallucination in a production system was not prompt engineering. It was a layer that rejects any item without a traceable source.

1 September 2026
Projects

Multi-agent systems in production: split by responsibility, not by task

Most agent systems are split by task, which produces a layer of complexity with no benefit. The split that worked for me was by responsibility: who owns the decision, and who owns the channel.

29 August 2026
Projects

A private offer page instead of an attachment: what you gain

A private link tells you what an attachment cannot: whether it was opened, when, and how often. That turns your follow-up from a guess into a decision.

26 August 2026
Projects

Turning a vague client request into an executable scope

"I want a website" is not a plan. This is how I turn an open request into a written scope the client approves and the system records, so the argument ends before it starts.

23 August 2026
Notes

Why is hreflang missing from a Next.js site when it is actually there?

I nearly reported a fault that did not exist. Searching a built page for hreflang finds nothing, because React writes the attribute with a capital letter in the source.

20 August 2026
Notes

Why does GA4 return 403, and what separates disabled from denied?

Two completely different situations return the same status code and need two different fixes in two different places. The difference is in the message body, not the code.

17 August 2026
Projects

Visual testing that measures the DOM instead of comparing screenshots

Every guide suggests comparing screenshots. I tried it and left it, and built a check that measures the elements instead. The result: no baseline images to maintain, no flaky tests, and it catches failures screenshots cannot.

14 August 2026
Projects

A signed contract locks, and editing it returns it to draft

The most dangerous state in any contract system is not forgery. It is the text changing after the client agreed to it, without the client knowing. This is the rule that prevents it.

11 August 2026
Projects

An audit trail the application cannot rewrite

An audit log protected by application code falls with the first bug. Moving the protection into the database took three lines, and the guarantee now survives the application being entirely wrong.

8 August 2026
Projects

A complete business system on Cloudflare D1: five services, one database

From a visitor opening a page to a signed contract and a scheduled instalment, across five services sharing one SQLite database at the edge. The architecture, what I chose, what I rejected, and what it cost.

5 August 2026
Notes

The Systems Engineer Mindset: Understand the Real Problem Before You Build

Before you build any solution, ask yourself: did you understand the real problem, or did you build on assumptions? A real story that changed how I approach understanding and solving problems.

19 July 2026