Abraham Prince Software developer

The string never changes; the syntax around it does. With AI writing the code, the language is a detail — the intent, the data model and the judgment are what I bring, in JavaScript, C, Rust, Go or Erlang.

One loop. Five stages.
My judgment at every step.

From the data model to the production dashboard: design, build, test, performance and AI, with AI writing the code and me owning the calls.

Read the story →

Design

I decide the data model, the boundaries and the failure modes, written down before any code exists.

Engraving of a wild boar leaping over undergrowth

Build

Most of the code is drafted with AI and reviewed by me. I read every line before it merges.

-- 001_order_events.sql
CREATE TABLE order_events (
  id        uuid PRIMARY KEY,
  order_id  uuid NOT NULL,
  idem_key  text UNIQUE NOT NULL
);
-- drafted by AI · reviewed by me

Test

Cheap code needs expensive proof: contracts at the seams, replay after crash, backfill totals.

on every change
3/4 · 1 caught
Schema contract holdsservice ↔ storepass
Idempotent under retryclient ↔ servicepass
Replay after crashcaught, then fixedcaught
Backfill totals matchledger ↔ sourcepass

Performance

Passing tests is the start. Latency, throughput and real user outcomes tell you whether the system actually does its job.

Within target, after one rollback. I set the targets that matter. The agent watches every signal and rolls back a regression on its own. p99 vs target
on target
pink mark = target · 1 alert · rolled back 14:02 · illustrative, not real traffic

AI

Agents draft, test and watch. I set the direction and the guardrails. Nothing merges until I approve it.

Medium

I design data-intensive applications.

I decide the model.

AI writes the code.

Every change is proven.

Production is watched.

Regressions roll back.

Nothing merges without me.

Judgment first. Code second.

© 2026 Abraham Prince · Toronto