Enaho Murphy

Co-founder & CTO · Pradini · Lagos

Drawn 2013–2026

DWG EM-2026 · Sheets 01–04 · Tolerances

Tolerances

What moves me, and what I won’t bend on.

Four layers, drawn from the inside out: how I treat people and teams, what drives me, how I learn, and how I build now. The 11 tolerances I hold at ±0 sit inside them as receipts.

Sheet 01 · People and teams · the Golden Rule and Conway’s Law

Never ship what I wouldn’t want shipped to me.

Treat people the way you want to be treated. It’s why I write handoffs for the next person, why I mentored 30+ bootcamp candidates, and why I label unfinished things honestly.

Mirror · hover or tap a lineEach side is the other, reflected

Shipped to you

Shipped by me

Show me how a team talks, and I’ll show you its code.

Whatever software a team ships ends up mirroring how that team is organised. I’ve seen it in every role. Structured companies split into clean services; unstructured ones, where everybody does whatever they like, show it in the code. You can read a company’s structure from its code. I cited this in 2017, in Microservices vs monolithic applications ↗.

“Any organization that designs a system will produce a design whose structure is a copy of the organization’s communication structure.”

Melvin Conway, 1968

Org chart → code · hover or tap a teamTwo teams, drawn as org charts

  1. T-06 ±0· People

    A crew is only as good as its handoffs

    Write it down so the next one can pick it up.

    PingPong was async video for teams who were rarely online together. The Crew works the same way, through written handoff docs.

    Receipt · PingPong · HANDOFF docs

  2. T-09 ±0· People

    Every claim has one home

    Say it once. Point to it everywhere else.

    “Held holds your money” was wrong on a dozen pages. Now each claim lives in one place and the pages point to it.

    Receipt · Held

  3. T-10 ±0· People

    The code copies the team

    Design the team on purpose. The code will follow its shape.

    Conway’s Law, in every role I’ve had: clear teams gave clean services, no structure gave tangled code.

    Receipt · Codementor, 2017 · Microservices vs monolithic applications ↗

Sheet 02 · What drives me · Shuhari and Kaizen

Follow the rule until you can write it. Then write the tool that keeps it.

Shuhari is the path I keep walking: shu, follow the form; ha, break it; ri, leave it behind because it now lives in you. I wrote it up in 2017 as SHUHARI: the path to learning anything ↗.

One ticket, three stagesShu · 2016

守 Shu · Follow2016

Andela bootcamp

Following tutorials. A new language most weeks.

The rule · Someone else’s. I follow it exactly.

Small improvements, every day. Every lesson becomes a check.

Kaizen is the other half. Each time something goes wrong, the lesson doesn’t stay a lesson. It becomes a rule, and the rule becomes a check. Half-written in the Logbook, Draft · Kaizen: small improvements, every day. It is also the outer ring of the Jig.

The loop · quality only ratchets upTurn 0 · 12 violations

    1. T-03 ±0· Drivers

      Follow a problem all the way down

      Go one layer lower each time.

      I followed one problem all the way down: from a startup’s async video tool to a recorder where nothing ever leaves your computer. PingPong, Electron, Grain Recorder (2026, my own project), Swift, Captur in Rust, then Nzuko.

      Receipt · PingPong → Nzuko

      Logbook · Draft · Following one problem all the way down

    2. T-02 ±0· Drivers

      Repair beats replace

      Migrate piece by piece, and keep it running.

      At Grain a rewrite had stalled for months. Shipped as a progressive migration, it landed in about a month.

      Receipt · Grain

      Logbook · Draft · Why Grain’s stalled rewrite shipped in a month

    Sheet 03 · How I learn · Craft

    Build it to know it.

    I’m self-taught, so reading was never enough. To understand a thing, I make a small one with my own hands.

    Flip through · swipe or use the arrows1 / 4

    go-jwt · a token is two readable parts and a signature over both. I wrote the library to see it.
    Nand2Tetris · one NAND gate, then everything else built on top of it.
    d-engine · a 2D physics engine, to learn what one step of a simulation hides.
    One problem, followed down · v1 to v6, a layer lower each time, until nothing leaves your computer.
    1. T-01 ±0· Craft

      If you want to understand it, build it

      Reading about a thing is not the same as making it.

      Self-taught means learning by building: a JWT library, logic gates from NAND up, a 2D physics engine.

      Receipt · go-jwt · Nand2Tetris · d-engine

    Sheet 04 · How I build now · the Jig

    The Jig.

    A jig holds the work in place and guides the cutter, so every piece comes out right, whoever holds the tool. AI is the fast pair of hands. I build the jig.

    “My secret to coding with LLMs is not prompting. It is constraint.”

    “You never want your LLM running wild. You want to box it in.”

    Enaho Murphy · LinkedIn, 2026

    Constrain. Contract. Guard. Prove. Sign.

    Every step loops until it can show its exit.

    Constraint is the frame that frees the hand.
    The contract is the promise, written before the work.
    The guard is the promise, kept when no one is looking.
    Proof is the question the work must answer.
    Every failed answer turns the loop again, until the exit is met.
    And when the proof holds, I sign.

    Pick a box to open its demo, or play a ticket through.

    Exit a person confirms the list

    Decides · person

    Decide what the work may never do.

    Loop · AI suggests requirements and must-nots, a person edits, round after round. Exit · a person confirms the list. Decides · a person.

    Scope Size SInside the frame

    1. T-04 ±0· Jig · Constrain

      Design for the need

      Design for the load you have, not every load you can imagine.

      I weigh complexity, time and cost. On a smaller system, Postgres already has the tooling that covers what Redis gives a big one. Ollic was never going to have that many users, so Postgres for everything was right at that scale.

      Receipt · Ollic Growth District: Postgres for jobs, queues and locks · Getro → Findem: Postgres over a graph DB, 489ms → 9ms

      Logbook · Draft · Postgres over a graph DB for 3.5M+ contacts

    2. T-11 ±0· Jig · Constrain

      Consistency is a constraint

      Agents copy what they see. Make what they see consistent.

      AI doesn’t just follow instructions. It copies the patterns already in the codebase, so consistent structure is what makes agent work repeatable. Every new pattern is a new way for an agent to go wrong.

      Receipt · Pradini · code rules written into the agent instructions (one component per file) · Held · folder boundaries enforced by a lint tool, a 400-line cap per file · quality checks that only ratchet up

      Pairs with T-10: the code copies the team; agents copy the code.

    Exit nothing conflicts, or a person accepts the conflict with a reason

    Decides · machine, then person

    If it isn’t in the table, it isn’t in the ticket.

    Loop · a promise is drafted, checked against existing promises for conflicts, redrafted. Exit · nothing conflicts, or a person accepts the conflict with a reason. Decides · the machine, then a person.

    From a marketplace I built with escrow3 tests · not run

    GivenWhenThenTest
    an open dealit’s fundedstate becomes funded, one event writtenFundedTransition
    the same dealopen → released is attempted“illegal transition”, nothing writtenIllegalTransitionWritesNothing
    any transitionthe reason is emptyrejected, reason requiredReasonRequired

    Tests are written first, fail for the right reason, then freeze.

    Exit the check catches the planted break

    Decides · machine

    Prove the check before trusting the work.

    Loop · write the check, plant a break, confirm it fails; restore, confirm it passes; if the break isn’t caught, improve the check. Exit · the check catches the planted break. Decides · the machine.

    Rule · money is integer minor unitsA guard I haven’t seen fail is a suggestion.

    DISARMED
    —

    Never seen failing. Not trusted yet.

    1. T-07 ±0· Jig · Guard

      A guard that cannot fail is worse than no guard

      A check only counts once it’s seen failing.

      Dozens of money bugs passed review while looking correct. The Guard has no model inside, and each rule is made to fail on purpose first.

      Receipt · the Guard · logbook entry 002

      Logbook · Draft · A guard that cannot fail is worse than no guard

    Exit every guard passes on the real code

    Decides · machine

    Five attempts, five dollars, two hours. Then a human.

    Loop · the work changes, the proven checks run, failures get fixed. Exit · every guard passes on the real code. Decides · the machine.

    Ticket

    1. Fresh agent
    2. Change
    3. Run checks
    4. Fix
    5. All pass
    Attempts 0 / 5Budget $0 / $5Time 0m / 2h

    Idle · one fresh agent waits for a ticket

    1. T-05 ±0· Jig · Prove

      One fresh agent per ticket

      Short-lived workers, clean context.

      Every ticket gets a new agent in its own worktree. No agent carries yesterday’s context into today’s ticket. Boxed in by written rules.

      Receipt · The Crew · Pradini · LinkedIn, 2026

    Exit a named person signs off

    Decides · person

    No loop merges its own work.

    Loop · a person looks, asks for changes, looks again. Exit · a named person signs off. Decides · a person.

    ReviewRound 1 · waiting for a person

    UNSIGNED

    Every later change re-checks the proof. Gaps found after sign-off become constraints on the next ticket.

    The ring · Kaizen plus keep-alive. It is the Kaizen loop from Sheet 02, wrapped around the whole jig.

    Ledger · balance = sum(entries), never storedentries #0000

      Balance ₦0

      No entries yet.

      1. T-08 ±0· Jig · The ring

        Balances derived, never stored

        Store the entries. Compute the balance.

        A stored balance can drift from the entries under it. A derived one can only be recomputed.

        Receipt · Held · Pradini ledger

        Logbook · Draft · Balances derived, never stored

      The building is the one step I hand to the machine. Everything else is the jig.

      Datum is the jig for a whole codebase →