Mo Sharif
~/blog03

Written from the work.

Field notes on AI engineering, building products, and leading teams. The decisions, the mistakes, and what I learned.

Engineering

AI System Design Numbers: Estimate Before You Build

A practical worksheet for estimating AI features: chat history, agent loops, vector storage, caching, and cost per useful result, with checkable arithmetic.

Engineering

AI Engineering Books: What to Read Before You Ship

A focused AI engineering reading list for building real products: evaluation, model behavior, production reliability, and the book to save for a deeper study.

Engineering

Best Books for Engineering Managers: Nine That Help

Nine engineering management books, chosen by the decision they help you make: first-time management, team growth, reliable delivery, and a stronger hiring bar.

All field notes

32 articles

Agent Orchestrator Design: Durable Runs and Safe ToolsA practical agent orchestrator design: durable state, approval gates, retry-safe tools, cost reservations, and the failure cases a working demo leaves out.AI System Design Numbers: Estimate Before You BuildA practical worksheet for estimating AI features: chat history, agent loops, vector storage, caching, and cost per useful result, with checkable arithmetic.AI Engineering Books: What to Read Before You ShipA focused AI engineering reading list for building real products: evaluation, model behavior, production reliability, and the book to save for a deeper study.Best Books for Engineering Managers: Nine That HelpNine engineering management books, chosen by the decision they help you make: first-time management, team growth, reliable delivery, and a stronger hiring bar.System Design Books: Choose One for the Real ProblemA practical system design reading guide: interview structure, data-system depth, architecture trade-offs, and failure handling, with a way to practice each.Claude Code Extensions: Skills, Hooks or Subagents?A practical guide to choosing Claude Code skills, subagents, hooks and MCP: what each should own, how to test it, and where its guarantees stop in practice.CLAUDE.md Best Practices: Write Rules That HelpA practical CLAUDE.md example for this portfolio: commands, source-of-truth rules, regression traps, and the boundary between useful context and enforcement.Fractional CTO, Full-Time CTO, or a Senior Engineer?A practical way to choose technical leadership: identify the real bottleneck, define the decision rights, and know when part-time help is the wrong fit.Mermaid vs PlantUML vs D2: Choose the Workflow FirstChoose a diagram-as-code tool by rendering workflow, layout needs, and ownership. A practical comparison of Mermaid, PlantUML, and D2 without benchmark hype.Code Review Rules for AI-Generated Pull RequestsA practical review policy for AI-assisted pull requests: smaller changes, explicit verification, stronger checks on sensitive paths, and clear ownership.Streaming Structured Output Without a Flickering UIHow to render partial AI output without misleading users: separate preview and final schemas, preserve stable identity, and reconcile incomplete streams.System Design Interview Rubric: Score the ReasoningA five-part system design scorecard with concrete examples: framing, trade-offs, depth, failure handling, and adapting a design when the constraints change.AI Agent Capability Resolution: Why I Shipped It EmptyResolveMesh ranks MCP, A2A, and REST capabilities for AI agents with a deterministic score. It launched with an empty catalog because no tool cleared the bar.Cognitive Accessibility First: How I Built AbleMakersAbleMakers teaches AI through small, supported steps. How local progress, clear language, and safe practice make accessibility part of the product architecture.Duress PIN Design: Why a Spinner Is a Security BugDateSafe is a dating-safety app with no public database of people. Here is the duress PIN, the Postgres escalation timer, and why latency is a security bug.Automating a Twice-Daily AI News Briefing Without SlopViralVault turns source material into a developer briefing with a versioned publishing pipeline. The hard part is editorial judgment, attribution, and review.Deterministic Trip Planning: Put the Catalog FirstEmber Coast builds itineraries from a curated catalog and explicit scheduling rules. Why I separated planning from prose, and what the engine cannot promise.AI Architecture Diagrams: How I Built Codelit SoloI built Codelit to turn product intent into something you can inspect and improve. The story behind its canvas, Thread-first workspace, and hardest tradeoffs.Multi-Provider AI Fallback: Reliability Beyond RetriesHow I approach AI provider fallback in Codelit: capability-aware routing, bounded retries, output validation, and honest limits on reliability and cost.React Flow Architecture Canvas: Nodes, Layout, and UndoHow I built Codelit's architecture canvas around a shared graph model, predictable layout, and recoverable edits, with practical React Flow examples.Solo SaaS Growth: What Actually Worked for CodelitCodelit's early growth came from useful content and visible product value. A dated look at the channel experiments, pricing mistakes, and lessons I would keep.Chaos Mode: Finding Failure Paths Before DeploymentHow I built Codelit's diagram-level failure simulation, why dependency semantics matter, and where visual chaos testing stops short of production evidence.GitHub Architecture Diagrams: Read Evidence, Then InferHow Codelit turns repository files into an architecture draft, where configuration clues mislead, and why a useful diagram must stay honest about its limits.Learning System Design: Practice the DecisionsWhat building Codelit taught me about learning system design: start with constraints, rebuild a reference, challenge failures, and explain every trade-off.How AI Turns a Text Prompt Into an Architecture DiagramTurning a prompt into an editable diagram takes more than valid JSON. The pipeline boundaries that matter: explicit assumptions, graph validation, and layout.Architecture Diagram to Terraform, K8s, and ComposeHow Codelit's infrastructure export turns a typed graph into Compose, Terraform, and Kubernetes scaffolding, with clear boundaries on what a diagram proves.AWS Cost Estimation: What a Diagram Can Tell YouHow Codelit's architecture cost estimate works, where its assumptions stop, and how to turn a rough diagram into a defensible cloud budget before deployment.System Design Lessons From 55 Architecture StudiesWhat studying 55 reference architectures changed for me: explicit failure boundaries, careful caching, safe retries, and knowing when complexity earns its cost.Mermaid to React Flow: Building an Honest ImporterA Mermaid importer is a compiler, not an image converter. How I bring flowcharts into Codelit, preserve graph identity, and make unsupported syntax explicit.React Command Palettes: Fast Actions Without GuessworkWhat building Codelit's command palette taught me about action naming, contextual search, shortcut conflicts, accessibility, and useful keyboard workflows.Stripe SaaS Integration: What Breaks in ProductionWhat building Codelit's billing taught me about Stripe: durable webhooks, subscription reconciliation, clear access policies, trials, and payment recovery.PWA vs Electron: Making a Web App Feel at HomeWhy I chose a PWA for Codelit, what installation does not solve, and the caching, offline, update, and keyboard details that make the app feel dependable.

Two books. One ongoing practice.

How we build software. How we help people build it.

Browse the bookshelf
From Prompt to Proof, by Mo Sharif
Explore the book
The Plant Was Never the Problem, by Mo Sharif
Explore the book

Notes worth keeping.

A short email when new field notes land. AI engineering, product decisions, and the work of leading teams.